N31第五周

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文件中所有行的行首的空白字符

sed ‘s/^[[:space:]]\+//’ /tmp/grub.conf

7.刪除/tmp/grub.conf文件中所有以#開頭,后面至少跟一個空白字符的行的行首的#和空白字符

sed ‘s/^#[[:space:]]\+//’ /tmp/grub.conf

 

 

 

 

 

本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/104185

(0)
王
上一篇 2018-07-30
下一篇 2018-07-30

相關推薦

  • 如何制作Linux服務腳本

    Linux服務腳本示例

    2018-05-10
  • Linux用戶與組管理命令的易混淆點和重合點

    Linux用戶與組的管理命令,對于初學者來說很容易造成混淆,此外,這些命令之間有很多相重合的用法,即:擁有多種命令可實現相同的需求的情況。

    2018-04-03
  • DNS主服務器

    httpd測試頁 echo xxx > /var/www/html/index.html systemctl restart httpd nano /etc/named.conf /etc/named.rfc1912.zones 復制模板文件 cd /var/named/ cp -a named.localhost nixiao.com.zone 重新…

    2018-06-03
  • Linux用戶和組管理

    1、列出當前系統上所有已經登錄的用戶的用戶名,注意:同一個用戶登錄多次,則只顯示一次即可。 2、取出最后登錄到當前系統的用戶的相關信息。 3、取出當前系統上被用戶當作其默認shell的最多的那個shell。 4、將/etc/passwd中的第三個字段數值最大的后10個用戶的信息全部改為大寫后保存至/tmp/maxusers.txt文件中。 5、取出當前主機的…

    Linux筆記 2018-07-13
欧美性久久久久