1、簡述rpm與yum命令的常見選項,并舉例
前端工具:解決后端管理工具的眾多不便之處;自動解決依賴關系;自動找到被依賴關系的程序包安裝
yum: rehl系列系統上:rpm包管理器的前端工具;
apt-get/apt-cache: deb包管理器的前端工具;
apt-get: 安裝卸載;
apt-cache: 查詢/管理元數據;
zypper: suse的rpm管理器的前端工具;
dnf: Fedora 22+系統上rpm包管理器的前端工具;
包管理器:將編譯好的應用程序各組成文件打包成一個或幾個程序包文件,從而更方便快捷的實現安裝、升級、卸載、查詢等操作;
源碼命名格式:
name-VERSION.tar.gz
VERSION:
major: 重大的版本分支
minor: 單個分支改變;
release: BUG或小段代碼的改變;rpm包命名格式:
app-VERSION-relase.os.arch.rpm
VERSION:major.minor.release
relase: 表示第幾次打包
os: OS
arch: archetecture, 例如:i386, x64(amd64), ppc(power pcc), noarch(適用于所有平臺:python或java研發,只需要虛擬機,與平臺無關:)例如:redis-3.0.2-1.centos7.x64.rpm
安裝:
# rpm -ivh package1 [package2] […]
# yum instlal package1 [package2] […]
注意:默認安裝最新的版本,使用老版本,需要自帶版本號,例如: gcc: gnu c complier 編譯器 gcc-4.5.4# dpkg -i package.deb
# apt-get install packagename# yum groupinstall GROUP_PACK
# dnf groupinstall GROUP_PACK重裝:
# rpm -ivh –replacepkgs package1 [package2] […]
# yum reinstall package1 [package2] […]升級程序:
# rpm -[UF]vh package1 [package2] […]
/* 1. -Uvh 升級或安裝
2. -Fvh 僅升級
注意:
1. 不建議對內核升級,安裝即可
2. 如果配置文件曾被修改,升級后將新版本配置重命名:.rpmnew,卸載時將已經修改的配置重命名保存為:.rpmsave
*/# yum update|grade package1 [package2] […]
/*
1. update,升級所有程序包及其配置及內核版本
2. grade,僅升級程序包及配置;
*/
# apt-get update
/*
在修改/etc/apt/sources.list或者/etc/apt/preferences之后運行該命令,以確保您的軟件包列表是最新的
*/
# apt-get upgrade檢查升級:
# yum check-update
# dnf check-update降級:
# yum downgrade package1 [package2] […]
# rpm -ivh –downpackage package1 [package2] […]
# dnf downgrade package1 [package2] […]卸載程序:
# rpm -e package1 [package2] […]
# yum remove package1 [package2] […]
# dnf remove package1 [package2] […]
# dpkg -r package
# apt-get remove packagename查詢
倉庫:
# yum repolist
# dnf repolist查詢結果為程序包:
是哪個包所提供特性
# rpm -q –whatprovides CAPABILITY
# rpm -q -f FILEPATH
# yum whatprovides CAPABILITY
# dnf whatprovides CAPABILITY
# dpkg-query -S file1
是哪個包所依賴特性
# rpm -q –whatrequires CAPABILITY
列表:
# rpm -qa
# yum list [all|available|updates|installed|extra|obsoletes] [glob_exp1] […]
# yum search glob_expr|string …
# dns search glob_expr|string …# dpkg-query -W –showformat=’${Package} ${Version}\n’ > filename
# dpkg-query -l# yum grouplist
# dnf grouplist查詢結果為包內相關:
特性:
程序包依賴的特性;
# rpm -q –requires package1 [package2] […]
# yum deplist package1 [package2] […] 并提示此依賴由誰提供(setup-2.8.71-5.el7.noarch)
程序包提供的特性;
# rpm -q –provides package1 [package2] […]
詳細信息:
# rpm -q -i package1 [package2] […]
# yum info package1 [package2] […]
# dnf info package1 [package2] […]
# yum groupinfo
# dpkg-query -s capistrano
# dpkg-query -W -f=’${Status} ${Version}\n’ apache-perl
列表:
# rpm -ql
# dpkg -L package
# dpkg -l
# dpkg –unpack package.deb
# dpkg-query -L capistrano
配置環境:
# rpm -qc
# dpkg –configure package
文檔:
# rpm -qd
修改日志:
# rpm –changelog
腳本查看:
# rpm -q –scripts
版本:
# yum version
# dnf –version數據庫:
# rpm –initdb|–rebuilddb [–dbpath DIR]
/*
1. -initdb:初始化數據庫,數據庫存在時不執行任何操作,不存在時創建新的數據庫;
2. –rebuilddb:重構數據庫;通過讀取當前系統上所有已經安裝過程序包進行重新創建;
*/
# yum clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]
# yum makecache (yum倉庫安裝程序時會先比較緩存;再下載元數據緩存)
# apt-get clean
# apt-get autoclean檢驗:
程序包名:rpm -V package_NAME
S file Size differs
M 權限
5 MD5值改變;
D 主次設備號
L readLink(2) 路徑不匹配
U 屬主
G 屬組
T mTime 最近一次修改時間戳改變;
P CAPABILITY 改變;
導入密鑰:rpm –import /etc/pki/rpm-gpg/
單個程序包: # rpm -K PACKAGE_FILE事務歷史:
# dnf history
# yum history常用選項:
yum:
-y
–enablerepo
–disablerepo
–downloadonly
–downloaddir
rpm:
-p
–nodeps
–noscripts
–scripts
–test
–nosignature
2、自建yum倉庫,分別為網絡源和本地源
本地源:
1)掛載OS-Vendor光盤至某目錄:例如/media/cdrom
# mkdir -v /media/cdrom
# mount -t iso9660 -r /dev/cdrom /media/cdrom
# mount
# ls /media/cdrom
2)創建配置文件(其中定義多個倉庫:每個倉庫[repoid]指向一個或多個yum源:)
# vim /etc/yum.repos.d/CentOS-local.repo
[base]
name=CentOS Linux release 7.1.1503 (Core)
baseurl=file:///media/cdrom
gpgcheck=0
enabled=1
網絡源:
# mv /etc/yum.repos.d/CentOS-Base.repo{,.bak}
# vim /etc/yum.repos.d/CentOS-Base.repo
[base]
name=CentOS-$releasever – Base
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/os/$basearch/
http://mirrors.163.com/centos/$releasever/os/$basearch/
gpgkey=
gpgcheck=0
enabled=1
3、簡述at和crontab命令,制定 每周三凌晨三、五點10分執行某個腳本,輸出當前時間,時間格式為 2017-12-28 10:00:00
at, batch: 未來的某時間點執行一次任務
crontab: 周期性運行某任務,crond
執行的結果將以郵件的形式發給某個用戶的郵筒:/var/spool/mail/USERNAME
確保郵件服務正常
# netstat -tunlp
//postfix的主控進程:用于傳遞郵件。周期性任務計劃:用crontab命令;
程序環境:
/etc/crontab
/var/spool/cron/USERNAME系統cron: # * * * * * user-name command to be executed
用戶cron: # * * * * * command to be executed注意:
1. at運行命令執行環境可能不能通過PATH環境變量讀取,一般使用“絕對路徑”
2. > /dev/null 正確不管; &> /dev/null 有風險,錯誤結果也會被忽略。# crontab -e
10 3,5 * * 3 /bin/bash /root/f1.sh
# vim /root/f1.sh
#!/bin/bash
#
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin
date +’%F %T’4、簡述sed常用操作命令,并舉例
sed: GNU Stream EDitor,屬于FSF組織,流編輯器;一次處理一行文本;
sed [OPTIONS] ‘[star_pos[,end_pos]]script’ file ..
[OPTIONS]
-r: 擴展正則表達式
-n: 不顯示模式空間
-i: 原處編輯
-f /PATH/TO/SED_SCRIPT_FILE;每行一個script,不能對script加 ”
[star_pos[,end_pos]]
空地址;對全文進行處理;vim: %
# 單地址;
#,# 地址范圍:
#,+# 相對地址表示法
#,/pat/
/pat/ 模式匹配行,例如:匹配空行:/^[[:space:]]*$/
/pat1/,/pat2/
1~2 所有奇數行
2~2 所有偶數行script
命令
! 對地址范圍取反
= 對匹配到的每一行編號
p 再一次顯示匹配至的行
a \text: append
i \text: insert
c \text: change,范圍時,替換所有行為一行??瞻讜r,替換每一行。
d: 刪除匹配到的行
w /PATH/TO/SOMEFILE:保存模式空間的內容至指定文件中; 覆蓋寫入;
r /PATH/FROM/SOMEFILE: 讀取指定文件至當前文件被模式匹配到的行后;文件合并;
查找替換
s/PATTERN/替換為的內容/修飾符;
/:分隔符:如果在查找或替換的內容中出現”/”,需要轉義: “\/”,可以使用非常用字符: # @ ,
PATTERN:使用BRE [也支持引用;],
替換為的內容:不能使用正則表達式,但可使用后向引用及&引用;
&:引用PATTERN匹配到的所有字符修飾符: 修飾查找替換的某些功能;
g: 全局替換
w /PATH/TO/SOMEFILE:將替換成功的結果所在行保存至指定文件中;
p: 顯示替換成功的行;練習1:刪除/boot/grub/grub2.cfg文件中所有以空白字符開頭的行的行首的所有空白字符;
~]# sed ‘s,^[[:space:]]\+,,’ /boot/grub/grub.conf
練習2:刪除/etc/fstab文件中所有以#開頭的行的行首的#號及#后面的所有空白字符;
~]# sed ‘s,^#[[:space:]]\+,,’ /etc/fstab
練習3:輸出一個絕對路徑給sed命令,取出其目錄名,其行為類似于dirname
~]# echo “/etc/sysconfig/network-scripts/ifcfg-ens33” | sed ‘s,/$,,’ | sed -r ‘s#(.*/)([^/]+$)#\1#’
~]# echo “/usr/share/man/zh_TW/man8/useradd.8.gz/” | sed ‘s,/$,,’ | sed -r ‘s#(.*/)([^/]+$)#\2#’
練習4:刪除以#開頭,后面沒有跟空白字符的行的行首的#
~]# sed -i -r ‘s,^#([^[:space:]].*),\1,’ /etc/fstab
練習5:刪除所有空白行;
~]# sed ‘/^$/d’
練習6:刪除/etc/fstab文件中所有以UUID開頭的行;
# sed ‘/^UUID/d’ /etc/fstabg
練習7:替換/etc/passwd,root用戶所在行的第一個root字符為大寫字符
# sed ‘/^root:/s,root,ROOT,’ /etc/passwd
練習8:/etc/fstab文件中所有以UUID開頭的行后追加abc:
# sed ‘/^UUID/a \abc’ /etc/fstabg
本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/90682
贊,常見的問題也描述出來了,比較認真,繼續加油~
贊~內容上基本沒什么問題~排版上能注意一下,效果會更好點~