linux作業

Q1、每12小時備份並壓縮/etc/目錄至/backup目錄中,保存文件名稱格式爲,"etc-年-月-日-時-分.tar.gz"

 

在crontab -e中:* */12 * * * tar czf /back/etc-`date +"%F-%H-%M"`.tar.gz /etc

 

sed-1.png


 

Q2、rpm包管理功能總結以及實例應用演示

RPM,原名Red-hat Package Manager,成爲行業標準後改名爲RPM Package Manager

RPM包的命名格式爲:{package}-{version}-{release}.{arch}.rpm

比較大的包可以分成主包和多個子包,主包包含主要功能,子包包含擴展功能。主包命名格式:{masterpackage}-{version}-{release}.{arch}.rpm,子包命名格式:{masterpackage}-{subpackage}-{version}-{release}.{arch}.rpm

 

CentOS系統上rpm命令管理程序包:

安裝、升級、卸載、查詢和校驗、數據庫維護

 

rpm命令:rpmOPTIONS】【Package FIle

安裝:-i--install

升級:-U--update-F--freshen

卸載:-e--erase

查詢:-q--query

校驗:-V--verify

數據庫維護:--builddb--initdb

 

 

1rmp安裝:

rpm{-i|--install}[install-options]PACKAGE_FILE….

 

安裝rpm命令:rpm -ivh Package_FILE

 

General Options

-vverbose 詳細信息

-vv:更詳細的信息

 

[install-options]

-hhash marks輸出進度條,每個#表示2%的進度

--test:測試安裝,檢查並報告依賴關係和衝突消息等

--nodeps:忽略依賴關係,不建議

--replacepkgs:重新安裝

 

備註:rpm可以自帶腳本,

四類:

preinstall:安裝過程開始之前運行的腳本,%pre

Postinstall:安裝過程完成之後運行的腳本,%post

preuninstall:卸載過程真正開始執行之前運行的腳本,%prun

postuninstall:卸載過程完成之後運行的腳本

 

--nosignature:不檢查包簽名信息,不檢查來源合法性

--nodigest:不檢查包完整性信息

 

2rpm 升級:

 rpm {-U|--upgrade} [install-options] PACKAGE_FILE ...

 rpm {-F|--freshen} [install-options] PACKAGE_FILE ...

 

-U:升級或安裝

-F:升級

 

rpm -Uvh Package_FILE……

rpm -Fvh Package_FILE……

 

--oldpackage:降級

--force:強制升級;

 

注意:

1)不要對內核做升級操作,linux支持多內核版本並存,因此,直接安裝新版本內核

2)如果某原程序包的配置文件安裝後曾被修改過,升級時,新版本的程序提供的同一個配置文件不會覆蓋原有版本的配置文件,而是把新版本的配置文件重命名(filename.rpmnew)後提供;

 

3rpm 卸載:

rpm {-e|--erase} [--allmatches] [--justdb] [--nodeps] [--noscripts]

           [--notriggers] [--test] PACKAGE_NAME ...

 

--allmatches:卸載所有匹配指定名稱的程序包的各版本

--nodeps:忽略依賴關係

--test:測試卸載,dry run 模式

 

4rpm 查詢:

 rpm {-q|--query} [select-options] [query-options]

 

select-options

PACKAGE_NAME:查詢指定的程序包是否已經安裝,及其版本

-a-all;查詢所有已經安裝過的包;

-f  FILE:查詢指定的文件由那個程序包安裝生成;

 

-p--package PACKAGE_FILE:用於實現對未安裝的程序包執行查詢操作

 

--whatprovides CAPABILITY:查詢指定的CAPABILITY由哪個程序包提供

--whatrequires CAPABILITY:查詢指定的CAPABILTY被哪個包所依賴

 

query-options

--changelog:查詢rpm包的changlog

-l--list:程序安裝生成的所有文件列表;

-i--info:程序包相關的信息,版本號,大小,所屬的包組

-c--configuretion:查詢指定的程序提供的配置文件

-d--docfiles:查詢指定的程序包提供的文檔

-provides:列出指定的程序包提供的所有的CAPABILITY

-R--requires:查詢指定的程序包的依賴關係

--scipts:查看程序包自帶的腳本片段

 

用法:

-qi  PACKAGE-qf FILE-qc PACKAGE

-ql PACKAGE-qd PACKAGE

 

5rpm校驗:

 rpm {-V|--verify} [select-options] [verify-options]

 

6、驗證包來源合法性和完整性:

來源合法性:

數字簽名

完整性驗證

 

獲取並導入信任的包製作者的密鑰;

對於centos發行版來說,rpm-import /etc/pki/rpm-gpg/PM-GPG-KEY-CentOS-7

 

驗證:

1)安裝此組織簽名的程序時,會自動執行驗證

2)手動驗證:rpm -K PACKAGE_FILE

 

7、數據庫重建:

Rpm 管理器數據庫路徑:/var/lib/rpm

查詢操作:通過此處的數據庫進行;

 

Rpm {--initdb|--rebuilddb}

Initdb:初始化

如果事先不存在數據庫,則新建之,否則,不執行任何操作

 

rebuilddb:重建

無論當前存在與否,直接重新創建數據庫



Q3、yum的配置和使用總結以及yum私有倉庫的創建。

 

yum用法:yum [options] [command] [package ...]

yum子命令:

install:安裝指定的(多個)包或包組。

update:更新。如果不指定任何包,會升級所有已經安裝的包。

update-to:類似update命令,但是升級到指定的版本。

update-minimal:類似update命令,但只升級到比當前版本高的最低版本。

check-update:檢查是否有更新。命令狀態碼返回100表明有更新,0沒有更新,1表示出錯。

upgrade:同update --obsoletes,會刪除被淘汰的包。

upgrade-to:類似upgrade,但只升級到指定版本。

remove/erase:卸載指定包及依賴此包的其他包。有一些配置可以想必卸載的行爲。

remove_leaf_only:只卸載不被依賴的包。

clean_requirements_on_remove:卸載的同時,卸載只依賴此包的其他包。

autoremove:清除非顯式安裝的,不再被其他包依賴的包。

list OPTIONS:列出指定類型的包。

all:所有,默認。

available:倉庫中有,可以安裝。

updates:可以升級。

installed:已經安裝。

extras:已安裝,但倉庫中沒有。

obsoletes:已經安裝且被淘汰的。

recent:最近添加到倉庫中的。

provides/whatprovides:查詢指定的文件或特性是由哪個包生成的。

search:根據包名和描述查找相關的包。

info:查看指定包的描述信息,可用的opionlist命令。

clean:清除yum緩存目錄下的文件。

expire-cache:過期的元數據和鏡像列表。

packagesrpm包。

headers:頭文件。

metadata:元數據文件。

dbcache:本地元數據庫。

rpmdbrpm緩存。

plugins:擴展插件緩存。

all:以上所有。

makecache:構建元數據的緩存。

localinstall:安裝指定的本地rpm文件包,自動解決依賴問題。

localupdate:用指定的rpm文件包升級,自動解決依賴問題。

reinstall:重新安裝。

downgrade:降級。

swap foo bar:卸載foo,安裝bar

deplist:顯示包的依賴,和提供這些依賴的包。

repolist:列出倉庫信息。

enabled:列出啓用的倉庫,默認。

disabled:列出禁用的倉庫。

all:列出所有倉庫。

history:列出歷史事務。

groupinstall:安裝指定組。

groupupdate:更新指定組。

grouplist:查看所有組。

groupremove:卸載組。

groupninfo:查看組信息。

yum選項:

-y:對所有互動回答爲yes

-c:指定yum配置文件位置。

-q:靜默模式。

-v:顯示調試信息。

--disablerepo:臨時禁用repo

--enablerepo:臨時啓用repo

--nogpgcheck:不檢查來源合法性。

創建yum倉庫:createrepo [options] DIRECTORY

-u URL:指定baseurl,訪問倉庫的url

--basedir:指向rpm文件目錄的路徑,默認是當前目錄

-x:排除的文件,可用glob指定。

倉庫元數據:在倉庫的repodate目錄中

primary.xml.gz:指明瞭倉庫中所有rpm包,依賴關係,每個包安裝後會生成的文件。

filelists.xml.gz:當前倉庫中所有rpm包的所有文件列表。

other.xml.gz:額外信息,比如修改日誌。

repomd.xml:上述三個文件的時間戳和檢驗和。

comps*.xml:分組信息。

yum相關配置

配置文件:/etc/yum.conf,爲所有倉庫提供公共配置。

特性配置文件:/etc/yum.repos.d/*.repo,爲指定的倉庫提供配置。

配置文件中的變量:

$releaseserver:當前發行版的主版本號

$archCPU平臺體系

$basearch:基礎CPU平臺體系。

$YUM0-$YUM9:自定義變量。

配置文件格式:

[repoid] # 倉庫的唯一標識

name=NAME # 倉庫的名稱

baseurl=URL # 訪問倉庫的路徑,可用ftp://http://file:/// 協議指定,可指定多個,一行一個

mirrorlist=URL # 指向一個包含多個baseurl的文件的url

enabled=[1|0] # 啓用/禁用倉庫

gpgcheck=[1|0] # /否驗證文件來源的合法性。

gpgkey=URL # 指向gpg key文件的url

enabledgroups=[1|0] # 是否支持組

failovermethod=[roundrobin|priority] # 訪問baseurl失敗時,查找下一個baseurl的策略,roundrobin:隨機選擇,priority:順序選擇下一個。

keepalive=[1|0] # 使用HTTP/1.1時,是否支持keepalive

cost=num # 倉庫開銷,用來衡量倉庫的性能,默認1000,越小說明性能越好。

 

 

Q4、寫一個腳本實現列出以下菜單給用戶:

1diskshow disk info信息

2mem: show memory info信息

3cpu: show cpu info信息

*quit

 

#!/bin/bash

#

cat << EOF

disk) show disks info

mem)  show memory info

cpu)  show cpu info

*) QUIT

EOF

read -p "your choice:" option

if [ "$option" == 'disk' ];then

    fdisk -l /dev/[sh]d[a-z]

elif [ "$option" == 'mem' ];then

     free -m

elif [ "$option" == 'cpu' ];then

    lscpu

else

    echo "Unkown option"

    exit 3

fi

 

 

Q5、sed用法總結並結合實例演示

 

sed [OPTION]... {script-only-if-no-other-script} [input-file]…

script

地址定界編輯命令;

 

                    常用選項:

-n:不輸出模式空間中的內容至屏幕

-e script, --expression=script:多點編輯

 

-f /path/to/sed_script_file

每行一個編輯命令:

 

-r, --regexp-extended:支持使用擴展正則表達式;

 -iSUFFIX], --in-place[=SUFFIX]: 直接編輯源文件

地址定界:

1)空地址:表示對全文進行處理;

2)單地址:

#:指定行;

/pattern/:被此模式所匹配到的每一行;

 

3)地址範圍:

##

#+#

#/pat1/

/pat1/,/pat2/

$:表示最後一行;

 

4)步進:~

1~2::所有奇數行

2~2:所有偶數行

 

編輯命令:

d:刪除

 

]# sed -n '1,5d' fstab

-n 不輸出

 

顯示偶數行:

]# sed '1~2d' fstab

 

-p:顯示模式空間中的內容

 

]# sed -n '1~2p' fstab

顯示奇數行

 

a \test:在行後面追加文本“text”,支持使用\n實現多行追加

i \text:在行前面插入文本“text”,支持使用\n實現多行插入

 

c \text:把匹配到的行替換爲此處指定的文本“text”

 

w /path/to/somefile:保存模式空間匹配到的行至指定的文件中

 

-r /path/from/somefile:讀取指定文件的內容至當前文件被模式匹配到的行後面

 

 

!:表示條件取反

地址定界! 編輯命令:

s/// :查找替換,其分割符可自行指定,常用的有:s@@@, s###

替換標記:

g:全局替換

w /path/to/somefile:將替換成功的結果保存至指定文件中;

                    p:顯示替換成功的行;

 

 

 

Q6、用bash實現統計訪問日誌文件中狀態碼大於等於400的IP數量並排序

 

sed -n -r '/\<40[0-9]\>/p' /var/log/httpd/access_log|cut -d" " -f1 |sort|uniq -c

 

 

Q7、使用自制的yum源安裝ftp、openssh、curl、wget、tcpdump等軟件包

 

1root目錄下,新建目錄myrepo/Packages

2、 從光盤中複製相應的rpm包到Pacakges目錄。

3、 執行命令createrepo -u /root/myrepo/Packages /root/myrepo

4、 編輯文件/etc/yum.repos.d/myrepo.repo,添加如下內容:

 

[myrepo]

name=my custom repo

baseurl=file:///root/myrepo

enabled=1

gpgcheck=0

 

5yum install XXX

 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章