1、簡述rpm與yum命令的常見選項,并舉例
(1)什么是rpm?
RPM?是RPM Package Manager(RPM軟件包管理器)的縮寫,現在包括OpenLinux、S.u.S.E.以及Turbo Linux等Linux的分發版本都有采用,可以實現安裝、升級、卸載、查詢和校驗、數據庫維護。
CentOS系統上的rpm命令管理程序:
rpm命令:rpm? [OPTIONS]? [PACKAGE_FILE]
安裝:-i, --install
升級:-U, --update, -F, --freshen
卸載:-e, --erase
查詢:-q, --query
校驗:-V, --verify
數據庫維護:--builddb, --initdb
?(2)rmp的安裝:
rpm {-i|--install} [install-options] PACKAGE_FILE ...
常用格式 : rpm -ivh PACKAGE_FILE ...
[一般選項]:
-v:verbose,詳細信息
-vv:更詳細的輸出
[install-options]:
-h:hash marks輸出進度條;每個#表示2%的進度;
--test:測試安裝,檢查并報告依賴關系及沖突消息等;
--nodeps:忽略依賴關系;不建議;
--replacepkgs:重新安裝
????安裝rpm示例:
[root@localhost ~]# mount -t vfat /dev/sdb1 /media/usb #掛載U盤
[root@localhost ~]# cd /media/usb/123 #切換到RPM包所在目錄
[root@localhost 123]# rpm -ivh python-libs-2.6.6-66.el6_8.x86_64.rpm #安裝rpm包
warning: python-libs-2.6.6-66.el6_8.x86_64.rpm: Header V3 RSA/SHA1 Signature, key ID c105b9de: NOKEY
Preparing... ########################################### [100%]
(3)rpm的升級:
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)后提供;
(4)rpm的 卸載:
rpm {-e|--erase} [--allmatches] [--nodeps] [--noscripts] [--test] PACKAGE_NAME ...
--allmatches:卸載所有匹配指定名稱的程序包的各版本;
--nodeps:忽略依賴關系
--test:測試卸載,dry run模式
(5)rpm的 查詢:
rpm {-q|--query} [select-options] [query-options]
[select-options]
PACKAGE_NAME:查詢指定的程序包是否已經安裝,及其版本;
-a, --all:查詢所有已經安裝過的包;
-f FILE:查詢指定的文件由哪個程序包安裝生成;
-p, --package PACKAGE_FILE:用于實現對未安裝的程序包執行查詢操作;
--whatprovides CAPABILITY:查詢指定的CAPABILITY由哪個程序包提供;
--whatrequires CAPABILITY:查詢指定的CAPABILITY被哪個包所依賴;
[query-options]
--changelog:查詢rpm包的changlog;
-l, --list:程序安裝生成的所有文件列表;
-i, --info:程序包相關的信息,版本號、大小、所屬的包組,等;
-c, --configfiles:查詢指定的程序包提供的配置文件;
-d, --docfiles:查詢指定的程序包提供的文檔;
--provides:列出指定的程序包提供的所有的CAPABILITY;
-R, --requires:查詢指定的程序包的依賴關系;
--scripts:查看程序包自帶的腳本片斷;
用法:? ? -qi? PACKAGE:查詢指定安裝包相關信息
? [root@localhost ~]# rpm -qi python
Name : python Relocations: (not relocatable)
Version : 2.6.6 Vendor: CentOS
-qf FILE:查詢安裝文件有那個文件生成
-qc PACKAGE:查詢指定程序包提供的配置文件
-ql PACKAGE:查詢指定的程序包生成的所有列表
-qd PACKAGE:查詢指定程序包提供的文檔
-qpi? PACKAGE_FILE, :查詢指定未安裝安裝包相關信息
-qpl PACKAGE_FILE:查詢指定的未安裝程序包生成的所有列表
-qpc PACKAGE_FILE:查詢指定未安裝程序包提供的配置文件
(6)rpm的 校驗:
rpm {-V|--verify} [select-options] [verify-options]
S 文件大小差異
M 類型差異
5 MD5 這一種指紋碼的內容已經不同
D 設備的主/次代碼已經改變
L Link 路徑已被改變
U 屬主差異
G 屬組差異
T 修改時間差異
P 容量差異
包來源合法性驗正和完整性驗正:
來源合法性驗正:
完整性驗正:
獲取并導入信任的包制作者的密鑰:
對于CentOS發行版來說:rpm –import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
驗正:(1) 安裝此組織簽名的程序時,會自動執行驗正;
(2) 手動驗正:rpm -K PACKAGE_FILE
(7)數據庫重建:
rpm管理器數據庫路徑:/var/lib/rpm/
查詢操作:通過此處的數據庫進行;
獲取幫助信息:CentOS 6:man rpm
CentOS 7:man rpmdb
rpm {--initdb|--rebuilddb} [--dbpath DIRECTORY] [--root DIRECTORY]
--initdb:初始化數據庫,當前無任何數據庫可實始化創建一個新的;當前有時不執行任何操作;
--rebuilddb:重新構建,通過讀取當前系統上所有已經安裝過的程序包進行重新創建;
(8)什么是yum?
Yum(全稱為 Yellow dog Updater, Modified)是一個在Fedora和RedHat以及CentOS中的shell前端軟件包管理器。基于rpm包管理,能夠從指定的服務器自動下載RPM包并且安裝,可以自動處理依賴性關系,并且一次安裝所有依賴的軟件包,無須繁瑣地一次次下載、安裝。
CentOS系統上的yum命令: 命令格式:?yum [option] command
(9)yum常用的命令
yum repolist {all|enabled|disabled} 列出所有/已啟用/已禁用的yum源
yum list {all|installed|avaliable} 列出所有/已安裝/可安裝的軟件包
yum info package 顯示某一個軟件包的信息
yum install package 安裝軟件包
yum reinstall package 重新安裝軟件包
yum remove|earse package 卸載軟件包
yum whatprovides|provides files 查詢某個文件是哪個軟件包生成的
yum grouplist {all|installed|avaliable} 列出所有/已安裝/可安裝的軟件包組
yum groupinfo 顯示某個軟件包組的信息
yum groupinstall 安裝某個軟件包組
yum groupremove 刪除某個軟件包組
yum history 查看yum使用的歷史
yum clean {all|packages|metadata} 清除所有/軟件包/元數據
yum makecache 生成yum元數據
yum –nogpgcheck 不校驗公鑰文件
yum -y 自動進行操作
安裝示例:
[root@localhost ~]# yum install tree
已加載插件:fastestmirror, refresh-packagekit, security
設置安裝進程
Loading mirror speeds from cached hostfile
* base: mirrors.aliyun.com
* extras: mirrors.aliyun.com
* updates: mirrors.aliyun.com
base | 3.7 kB 00:00
extras | 3.4 kB 00:00
updates | 3.4 kB 00:00
解決依賴關系
--> 執行事務檢查
---> Package tree.x86_64 0:1.5.3-3.el6 will be 安裝
--> 完成依賴關系計算
依賴關系解決
=========================================================================================================================================
軟件包 架構 版本 倉庫 大小
=========================================================================================================================================
正在安裝:
tree x86_64 1.5.3-3.el6 base 36 k
事務概要
=========================================================================================================================================
Install 1 Package(s)
總下載量:36 k
Installed size: 65 k
確定嗎?[y/N]:y
卸載示例:
[root@localhost ~]# yum remove tree.x86_64 0:1.5.3-3.el6
已加載插件:fastestmirror, refresh-packagekit, security
設置移除進程
參數 0:1.5.3-3.el6 沒有匹配
Loading mirror speeds from cached hostfile
* base: mirrors.aliyun.com
* extras: mirrors.aliyun.com
* updates: mirrors.aliyun.com
解決依賴關系
--> 執行事務檢查
---> Package tree.x86_64 0:1.5.3-3.el6 will be 刪除
--> 完成依賴關系計算
依賴關系解決
=========================================================================================================================================
軟件包 架構 版本 倉庫 大小
=========================================================================================================================================
正在刪除:
tree x86_64 1.5.3-3.el6 @base 65 k
事務概要
=========================================================================================================================================
Remove 1 Package(s)
Installed size: 65 k
確定嗎?[y/N]:
查詢包組示例:
[root@localhost ~]# yum grouplist
已加載插件:fastestmirror, refresh-packagekit, security
設置組進程
Loading mirror speeds from cached hostfile
* base: mirrors.aliyun.com
* extras: mirrors.aliyun.com
* updates: mirrors.aliyun.com
已安裝的組:
Eclipse
Emacs
Java 平臺
安裝包組示例:
[root@localhost ~]# yum groupinstall PHP
已加載插件:fastestmirror, refresh-packagekit, security
設置組進程
Loading mirror speeds from cached hostfile
* base: mirrors.njupt.edu.cn
* extras: mirrors.njupt.edu.cn
* updates: mirrors.aliyun.com
解決依賴關系
--> 執行事務檢查
---> Package php.x86_64 0:5.3.3-49.el6 will be 安裝
--> 處理依賴關系 php-common(x86-64) = 5.3.3-49.el6,它被軟件包 php-5.3.3-49.el6.x86_64 需要
--> 處 理依賴關系 php-cli(x86-64) = 5.3.3-49.el6,它被軟件包 php-5.3.3-49.el6.x86_64 需要
---> Package php-gd.x86_64 0:5.3.3-49.el6 will be 安裝
---> Package php-pdo.x86_64 0:5.3.3-49.el6 will be 安裝
---> Package php-pear.noarch 1:1.9.4-5.el6 will be 安裝
---> Package php-xml.x86_64 0:5.3.3-49.el6 will be 安裝
--> 執行事務檢查
---> Package php-cli.x86_64 0:5.3.3-49.el6 will be 安裝
---> Package php-common.x86_64 0:5.3.3-49.el6 will be 安裝
--> 完成依賴關系計算
依賴關系解決
=========================================================================================================================================
軟件包 架構 版本 倉庫 大小
=========================================================================================================================================
正在安裝:
php x86_64 5.3.3-49.el6 base 1.1 M
php-gd x86_64 5.3.3-49.el6 base 111 k
php-pdo x86_64 5.3.3-49.el6 base 80 k
php-pear noarch 1:1.9.4-5.el6 base 393 k
php-xml x86_64 5.3.3-49.el6 base 108 k
為依賴而安裝:
php-cli x86_64 5.3.3-49.el6 base 2.2 M
php-common x86_64 5.3.3-49.el6 base 530 k
事務概要
=========================================================================================================================================
Install 7 Package(s)
總下載量:4.5 M
Installed size: 16 M
確定嗎?[y/N]:
卸載包組示例:
[root@localhost ~]# yum groupremove PHP
已加載插件:fastestmirror, refresh-packagekit, security
設置組進程
Loading mirror speeds from cached hostfile
* base: mirrors.shu.edu.cn
* extras: mirrors.shu.edu.cn
* updates: mirrors.shu.edu.cn
解決依賴關系
--> 執行事務檢查
---> Package php.x86_64 0:5.3.3-49.el6 will be 刪除
---> Package php-gd.x86_64 0:5.3.3-49.el6 will be 刪除
---> Package php-pdo.x86_64 0:5.3.3-49.el6 will be 刪除
---> Package php-pear.noarch 1:1.9.4-5.el6 will be 刪除
---> Package php-xml.x86_64 0:5.3.3-49.el6 will be 刪除
--> 完成依賴關系計算
依賴關系解決
=========================================================================================================================================
軟件包 架構 版本 倉庫 大小
=========================================================================================================================================
正在刪除:
php x86_64 5.3.3-49.el6 @base 3.5 M
php-gd x86_64 5.3.3-49.el6 @base 324 k
php-pdo x86_64 5.3.3-49.el6 @base 168 k
php-pear noarch 1:1.9.4-5.el6 @base 2.2 M
php-xml x86_64 5.3.3-49.el6 @base 307 k
事務概要
=========================================================================================================================================
Remove 5 Package(s)
Installed size: 6.5 M
確定嗎?[y/N]:
2、自建yum倉庫,分別為網絡源和本地源
配置本地源
1.建立本地源文件
?[root@localhost ~]# cd /etc/yum.repos.d/
[root@localhost yum.repos.d]# vim local.repo
2.掛載Centos光盤
[root@localhost yum.repos.d]# mount -r /der/cdrom /media/cdrom
3.編輯local.repo(這里直接引用光盤里面的yum,也可以拷貝到本地目錄并引用)
[base]
name=Centos6.9
baseurl=file:///media/cdrom
enabled=1
gpgckeck=0
4.清除yum緩存
[root@localhost]# yum?clean?all
配置網絡源
1.建立網絡源文件[root@localhost ~]# cd /etc/yum.repos.d/
[root@localhost yum.repos.d]# vim netlocal.repo
2.編輯netlocal.repo
[http]
name=mirrors 163
baseurl=http:///http://mirrors.163.com/centos/6.9/os/x86_64/
gpgcheck=0
enabled=1
3.清除yum緩存
[root@localhost]# yum?clean?all
3、簡述at和crontab命令,制定 每周三凌晨三、五點10分執行某個腳本,輸出當前時間,時間格式為 2017-12-28 10:00:00
at命令和crontab命令的區別在于
at:這個工作僅執行一次;
crontab:這個工作將周期的持續的進行下去
(1)at命令格式:? ? at? [OPTION]… TIME
TIME:? HH:MM [YYYY-mm-dd]
noon,midnight, teatime
tomorrow
now+#
UNIT:minutes, hours, days, OR weeks
at的作業有隊列,用單個字母表示,默認都使用a隊列;
常用選項:? -l:查看作業隊列,相當于atq
-f /PATH/FROM/SOMEFILE:從指定文件中讀取作業任務,而不用再交互式輸入;
-d:刪除指定的作業,相當于atrm;
-c:查看指定作業的具體內容;
-q QUEUE:指明隊列;
注意:作業執行結果是以郵件發送給提交作業的用戶;
(2) crontab ?周期性任務計劃命令:
語法:
crontab [-e [UserName]|-l [UserName]|-r [UserName]|-v [UserName]|File ]
說明:
crontab 是用來讓使用者在固定時間或固定間隔執行程序之用,換句話說,也就是類似使用者的時程表。
-u user 是指設定指定 user 的時程表,這個前提是你必須要有其權限(比如說是 root)才能夠指定他人的時程表。如果不使用 -u user 的話,就是表示設定自己的時程表。
參數:
-e [UserName]: 執行文字編輯器來設定時程表,內定的文字編輯器是 VI,如果你想用別的文字編輯器,則請先設定 VISUAL 環境變數來指定使用那個文字編輯器(比如說 setenv VISUAL joe)
-r [UserName]: 刪除目前的時程表
-l [UserName]: 列出目前的時程表
-v [UserName]:列出用戶cron作業的狀態
時程表的格式如下:
f1 f2 f3 f4 f5 program
其中 f1 是表示分鐘,f2 表示小時,f3 表示一個月份中的第幾日,f4 表示月份,f5 表示一個星期中的第幾天。program 表示要執行的程式。
當 f1 為 * 時表示每分鐘都要執行 program,f2 為 * 時表示每小時都要執行程式,其余類推
當 f1 為 a-b 時表示從第 a 分鐘到第 b 分鐘這段時間內要執行,f2為 a-b 時表示從第 a 到第 b 小時都要執行,其余類推
當 f1 為 */n 時表示每 n 分鐘個時間間隔執行一次,f2 為 */n 表示每 n 小時個時間間隔執行一次,其余類推
當 f1 為 a, b, c,… 時表示第 a, b, c,… 分鐘要執行,f2 為 a, b, c,… 時表示第 a, b, c…個小時要執行,其余類推
使用者也可以將所有的設定先存放在檔案 file 中,用 crontab file 的方式來設定時程表。
由于版本不一樣,所以部分語法有差別,例如在hp unix aix 中設定間隔執行如果采用*/n 方式將出現語法錯誤,在這類unix中 ,間隔執行只能以列舉方式。
使用方法
用VI編輯一個文件 cronfile,然后在這個文件中輸入格式良好的時程表。編輯完成后,保存并退出。 [2]
在命令行輸入
$: crontab cronfile
這樣就將cronfile文件提交給c r o n進程,同時,新創建cronfile的一個副本已經被放在/ v a r / s p o o l / c r o n目錄中,文件名就是用戶名。
示例:
[root@localhost ~]# touch /tmp/date.txt #創建保存date的文件
[root@localhost ~]# crontab -e
==>
10 03,05 * * 3 /bin/date '+%F +%T' >> /tmp/data.txt #編輯命令
[root@localhost ~]# crontab -l #查詢任務
10 03,05 * * 3 /bin/date '+%F +%T' >> /tmp/data.txt
4、簡述sed常用操作命令,并舉例
(1)什么是sed
sed:Stream Editor文本流編輯,sed是一個“非交互式的”面向字符流的編輯器。能同時處理多個文件多行的內容,可以不對原文件改動,把整個文件輸入到屏幕,可以把只匹配到模式的內容輸入到屏幕上。還可以對原文件改動,但是不會再屏幕上返回結果。
?(2) ?sed命令格式 ?
sed [OPTION]…? ‘script’? [input-file] …
其中 script? 是地址定界編輯命令
sed命令的選項(option):
-n :只打印模式匹配的行
-e :直接在命令行模式上進行sed動作編輯,此為默認選項
-f :將sed的動作寫在一個文件內,用–f filename 執行filename內的sed動作
-r :支持擴展表達式
-i :直接修改文件內容
編輯命令:?d:刪除;
p:顯示模式空間中的內容;
a? \text:在行后面追加文本“text”,支持使用\n實現多行追加;
i? \text:在行前面插入文本“text”,支持使用\n實現多行插入;
c? \text:把匹配到的行替換為此處指定的文本“text”;
w /PATH/TO/SOMEFILE:保存模式空間匹配到的行至指定的文件中;
r? /PATH/FROM/SOMEFILE:讀取指定文件的內容至當前文件被模式匹配到的行后面;
示例:(1)刪除文檔中的第一和第五行
[root@localhost ~]# sed '1,5 d' /etc/fstab
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/VolGroup-lv_root / ext4 defaults 1 1
UUID=7eee4732-a8d7-43ba-9f7d-8125ab037003 /boot ext4 defaults 1 2
/dev/mapper/VolGroup-lv_swap swap swap defaults 0 0
tmpfs /dev/shm tmpfs defaults 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
sysfs /sys sysfs defaults 0 0
proc /proc proc defaults 0 0
You have mail in /var/spool/mail/root
(2)刪除以UUID開頭的行
[root@localhost ~]# sed '/^UUID/ d' /etc/fstab
#
# /etc/fstab
# Created by anaconda on Thu Mar 22 22:29:16 2018
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/VolGroup-lv_root / ext4 defaults 1 1
/dev/mapper/VolGroup-lv_swap swap swap defaults 0 0
tmpfs /dev/shm tmpfs defaults 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
sysfs /sys sysfs defaults 0 0
proc /proc proc defaults 0 0
(3)刪除以#號開頭的行
[root@localhost ~]# sed '/^#/ d' /etc/fstab
/dev/mapper/VolGroup-lv_root / ext4 defaults 1 1
UUID=7eee4732-a8d7-43ba-9f7d-8125ab037003 /boot ext4 defaults 1 2
/dev/mapper/VolGroup-lv_swap swap swap defaults 0 0
tmpfs /dev/shm tmpfs defaults 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
sysfs /sys sysfs defaults 0 0
proc /proc proc defaults 0 0
(4)顯示偶數行
[root@localhost ~]# sed '1~2d' /etc/fstab
#
# Created by anaconda on Thu Mar 22 22:29:16 2018
# Accessible filesystems, by reference, are maintained under '/dev/disk'
#
UUID=7eee4732-a8d7-43ba-9f7d-8125ab037003 /boot ext4 defaults 1 2
tmpfs /dev/shm tmpfs defaults 0 0
sysfs /sys sysfs defaults 0 0
(5)在文檔的第三行加上新字段
[root@localhost ~]# sed '3i \@@@@@@@@@@@@@' /etc/fstab
#
@@@@@@@@@@@@@
# /etc/fstab
# Created by anaconda on Thu Mar 22 22:29:16 2018
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/VolGroup-lv_root / ext4 defaults 1 1
UUID=7eee4732-a8d7-43ba-9f7d-8125ab037003 /boot ext4 defaults 1 2
/dev/mapper/VolGroup-lv_swap swap swap defaults 0 0
tmpfs /dev/shm tmpfs defaults 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
sysfs /sys sysfs defaults 0 0
proc /proc proc defaults 0 0
(6)替換以UUID開頭的行
[root@localhost ~]# sed '/^UUID/c \@@@@@@' /etc/fstab
#
# /etc/fstab
# Created by anaconda on Thu Mar 22 22:29:16 2018
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/VolGroup-lv_root / ext4 defaults 1 1
@@@@@@
/dev/mapper/VolGroup-lv_swap swap swap defaults 0 0
tmpfs /dev/shm tmpfs defaults 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
sysfs /sys sysfs defaults 0 0
proc /proc proc defaults 0 0
(7)在fstab的第三行文檔合并
[root@localhost ~]# sed '3r /etc/issue' /etc/fstab
#
# /etc/fstab
CentOS release 6.6 (Final)
Kernel \r on an \m
# Created by anaconda on Thu Mar 22 22:29:16 2018
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/VolGroup-lv_root / ext4 defaults 1 1
UUID=7eee4732-a8d7-43ba-9f7d-8125ab037003 /boot ext4 defaults 1 2
/dev/mapper/VolGroup-lv_swap swap swap defaults 0 0
tmpfs /dev/shm tmpfs defaults 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
sysfs /sys sysfs defaults 0 0
proc /proc proc defaults 0 0
本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/95681