1、簡述rpm與yum命令的常見選項,并舉例
一.rpm包管理
CentOS系統上使用rpm命令管理程序包:安裝、卸載、升級、查詢、校驗、數據庫維護安裝
(1)安裝[install-options]
rpm {-i | –install} [install-options] PACKAGE_FILE …
-h:使用”#”顯示完成進度;
-v:顯示安裝進度的詳細信息;
–test: 測試安裝,但不真正執行安裝,即dry run模式
–nodeps:忽略依賴關系
(2)卸載
rpm -e
–nodeps:忽略軟件包所依賴的其它軟件,強制執行
(3)升級
升級:
rpm {-U | –upgrade} [install-options] PACKAGE_FILE …
安裝有舊版程序包,則“升級”,如果不存在舊版程序包,則“安裝”
rpm {-F|–freshen} [install-options] PACKAGE_FILE..
安裝有舊版程序包,則“升級”如果不存在舊版程序包,則不執行升級操作
#注意不要對內核做升級操作,Linux支持多內核版本并存
#如果原程序包的配置文件安裝后曾被修改,升級時,新版本的提供的同一個配置文件并不會直接覆蓋老版本的配置文件,而把新版本的文件重命名(FILENAME.rpmnew)后保留
(4)查詢
rpm {-q|–query} [select-options] [query-options]
-i:顯示軟件包的信息,比如名稱、版本和描述信息;
-l:列出某個軟件包內所包含的文件;
-R:查詢安裝該軟件包所需要的其它軟件包;
-f: 查看指定的文件由哪個程序包安裝生成
-p rpmfile:針對尚未安裝的程序包文件做查詢操作
-c: 查詢程序的配置文件
-d: 查詢程序的文檔
(5)效驗
rpm {-V|–verify} [select-options] [verify-options]
S file Size differs
M Mode differs (includes permissions and file type)
5 digest (formerly MD5 sum) differs
D Device major/minor number mismatch
L readLink(2) path mismatch
U User ownership differs
G Group ownership differs
T mTime differs
P capabilities differ
二.yum命令
用法:yum [options] [command] [package …]
顯示倉庫列表:yum repolist [all|enabled|disabled]
顯示程序包:yum list
yum list [all | glob_exp1] [glob_exp2] […]
yum list {available|installed|updates} [glob_exp1]
安裝程序包:yum install package1 [package2] […]
yum reinstall package1 [package2] […] (重新安裝)#有的部分文件損壞,不能安裝就需要重裝
升級程序包:yum update [package1] [package2] […]
yum downgrade package1 [package2] […] (降級)
檢查可用升級:yum check-update
卸載程序包:yum remove | erase package1 [package2] […]
查看程序包information:yum info […]
查看指定的特性(可以是某文件)是由哪個程序包所提供:yum provides | whatprovides feature1 [feature2]
清理本地緩存:清除/var/cache/yum/$basearch/$releasever緩存
yum clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]
構建緩存:yum makecache
查看指定包所依賴的capabilities:yum deplist package1 [package2] […]
查看yum事務歷史:
yum history [info|list|packages-list|packages-info|
summary|addon-info|redo|undo|
rollback|new|sync|stats]
yum history #查詢執行過的yum事務
yum history info 6
yum history undo 6 #取消第8步,可以把依賴的包也卸載
日志 :/var/log/yum.log
包組管理的相關命令:
yum groupinstall group1 [group2] […]
yum groupupdate group1 [group2] […]
yum grouplist [hidden] [groupwildcard] […]
yum groupremove group1 [group2] […]
yum groupinfo group1 […]
yum的命令行選項:
–nogpgcheck:禁止進行gpg check
-y: 自動回答為“yes”
-q:靜默模式
–disablerepo=repoidglob:臨時禁用此處指定的repo
–enablerepo=repoidglob:臨時啟用此處指定的repo
–noplugins:禁用所有插件
2、自建yum倉庫,分別為網絡源和本地源
一.配置本地源
(1)建立本地源目錄
mkdir /mnt/cdrom #創建的空的文件夾用于掛載iso鏡像文件
mkdir /yum #為了讓iso鏡像文件能夠被像文件一樣被便利地讀取利用,將iso文件掛載在一個空的文件里面
(2)掛載Centos光盤
mount /dev/cdrom /mnt/cdrom #將讀入的光盤掛載在設定好的文件夾
cp -r /mnt/cdrom/* /yum #將光盤內容復制至本地源目錄
(3)備份repo
mkdir /etc/yum.repo.d/backup #創建/etc 下的一個空文件夾用于備份原來的yum源讀取文件
mv /etc/yum.repos.d/* /etc/yum.repo.d/backup/ # 備份yum倉庫指定文件
(4)編輯wcyum.repo
cd /etc/yum.repo.d/
vim wcyum.repo
[base] #repositoryid,用于指定一個倉庫,唯一值
name=wc #指定倉庫的名稱
baseurl=file:///yum #用于指定本倉庫的URL,可以是http: ftp: file: 三種格式
enable=1 #用于指定是否啟用本倉庫,默認值為1,即可用
gpgckeck=0 # 用于指定是否檢查軟件包的gpg簽名
gpgkey=file:///mnt/cdrom/RPM-GPG-KEY-CentOS-7 #用于指定gpg簽名文件的URL
(5)刷新測試
yum clean all #清空本地/var/cache/yum容器清單列表舊數據(既yum緩存)
yum repolist #列出所有的可用的yum倉庫,執行這個命令,會重讀yum源設置志向文件,刷新本地容器清單列表
二.配置網絡源
(1)備份源鏡像文件
mv centos* ./backup
(2)下載阿里云的鏡像到/etc/yum.repos.d/
wget -O /etc/yum.repos.d/CentOS-Base.repo
http://mirrors.aliyun.com/repo/Centos-7.repo
(3)編輯base.repo
vim/etc/yum.repos.d/base.repo
[base]
name=ftp centos7.4
baseurl=ftp://http://mirrors.aliyun.com/repo/Centos-7.repo/pub/centos/$releasever/os/$basearch/
gpgcheck=0
enable=1
(4)清除緩存
yum clean all 清空緩存
yum makecache 建立緩存
3、簡述 at和crontab命令,制定 每周三凌晨三、五點10分執行某個腳本,輸出當前時間,時間格式為 2017-12-28 10:00:00
at命令:at [option] TIME
常用選項:
-V 顯示版本信息:
-l: 列出指定隊列中等待運行的作業;相當于atq
-d: 刪除指定的作業;相當于atrm
-c: 查看具體作業任務
-f /path/from/somefile:從指定的文件中讀取任務
-m:當任務被完成之后,將給用戶發送郵件,即使沒有標準輸出
at時間格式
HH:MM 02:00
在今日的 HH:MM 進行,若該時刻已過,則明天此時執行任務
HH:MM YYYY-MM-DD 02:00 2016-09-20
規定在某年某月的某一天的特殊時刻進行該項任務
HH:MM[am|pm] [Month] [Date]
04pm March 17
17:20 tomorrow
HH:MM[am|pm] + number [minutes|hours|days|weeks]
在某個時間點再加幾個時間后才進行該項任務
now + 5 minutes
02pm + 3 days
執行方式:
1)交互式 2)輸入重定向 3)at –f 文件
依賴與atd服務,需要啟動才能實現at任務
?at隊列存放在/var/spool/at目錄中
/etc/at.{allow,deny}控制用戶是否能執行at任務
白名單:/etc/at.allow 默認不存在,只有該文件中的用戶
才能執行at命令
黑名單:/etc/at.deny 默認存在,拒絕該文件中用戶執行
at命令,而沒有在at.deny 文件中的使用者則可執行
如果兩個文件都不存在,只有 root 可以執行 at 命令
crontab命令:
crontab [-u user] [-l | -r | -e] [-i]
-l: 列出所有任務;
-e: 編輯任務;
-r: 移除所有任務;
-i:同-r一同使用,以交互式模式移除指定任務
-u user: 僅root可運行,指定用戶管理cron任務
制定 每周三凌晨三、五點10分執行某個腳本,輸出當前時間,時間格式為 2017-12-28 10:00:00
echo “date +”%Y-%m-%d %H:%M:%S”” >> /tmp/date.sh
crontab -e
10 3,5 * * 3 /bin/bash /tmp/date.sh
4、簡述sed常用操作命令,并舉例
sed是一種流編輯器,它一次處理一行內容
功能:主要用來自動編輯一個或多個文件,簡化對文件的反復
操作,編寫轉換程序等
用法:sed [option]… 'script' inputfile…”
常用選項
-n:不輸出模式空間內容到屏幕,即不自動打印
-e: 多點編輯
-f:/PATH/SCRIPT_FILE: 從指定文件中讀取編輯腳本
-r: 支持使用擴展正則表達式
-i.bak: 備份文件并原處編輯
編輯命令:
d: 刪除模式空間匹配的行,并立即啟用下一輪循環
p:打印當前模式空間內容,追加到默認輸出之后
a [\]text:在指定行后面追加文本
支持使用\n實現多行追加
i [\]text:在行前面插入文本
c [\]text:替換行為單行或多行文本
w /path/somefile: 保存模式匹配的行至指定文件
r /path/somefile:讀取指定文件的文本至模式空間中
匹配到的行后
=: 為模式空間中的行打印行號
!:模式空間中匹配行取反處理
s///:查找替換
一.常用操作
1.處理/etc/fstab路徑,使用sed命令取出其目錄名和基名
echo "/etc/fstab" |sed -rn 's_(.*/)(.+)/?_\1_p' 取目錄
echo "/etc/fstab" |sed -rn 's_(.*/)(.+)/?_\2_p' 取基名
2.利用sed 取出ifconfig命令中本機的IPv4地址
ifconfig ens33 | sed -n '2p' |sed 's@inet@ $g' | sed 's@netmask.*@@g'
ifconfig ens33 | sed -n '2p' |sed -r 's@.*inet(.*)netmask.*@\1@'
ifconfig ens33 | sed -r -n '2s@.*inet(,*) netmask.*@\1@p'
ifconfig ens33 | sed -r ‘2!d;s/.*inet //;s/ netmask.*//'
3.統計centos安裝光盤中Package目錄下的所有rpm文件的以.分隔倒數第二個字段的重復次數
ls /misc/cd/Packages/*.rpm |sed -r 's/.*\.(.+)\.rpm$/\1/' |sort |uniq -c
4.統計/etc/init.d/functions文件中每個單詞的出現次數,并排序(用grep和sed兩種方法分別實現)
sed 's/[^[:alpha:]]/\n/g' /etc/init.d/functions |sed '/^$/d' |sort |uniq -c
grep -Eo "[[:alpha:]]+" /etc/init.d/functions |sort |uniq -c
5.將文本文件的n和n+1行合并為一行,n為奇數行
seq 1 10 |sed 'N;s/\n/ /'
seq 1 10 |xargs -n2
6.刪除/tmp/grub.conf文件中所有行的行首的空白字符
7.刪除/tmp/grub.conf文件中所有以#開頭,后面至少跟一個空白字符的行的行首的#和空白字符
本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/104185