簡述rpm,yum,at,batch,crontab,sed命令-N28

第五周

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

(0)
逆神陽逆神陽
上一篇 2017-12-31
下一篇 2018-01-01

相關推薦

  • Linux系統上命令的使用格式與十二個常用命令詳解

    Linux系統上命令的使用格式 命令的語法通用格式: ~]# COMMAND OPTIONS ARGUMENTS 例如: ls -ld /var COMMAND(命令): ls ls命令用來顯示目標列表 OPTIONS(選項): -ld -ld 是 -l -d 的簡寫 -l 以詳細格式列表 -d 僅列目錄 ARGUMENTS(參數): /var 命令對這個/…

    2018-02-26
  • 磁盤分區,raid,lvm,腳本編程_第七周練習

    Q1:創建一個10G分區,并格式為ext4文件系統; (1) 要求其block大小為2048, 預留空間百分比為2, 卷標為MYDATA, 默認掛載屬性包含acl; [root@promote ~]# fdisk /dev/sdb        &n…

    Linux干貨 2016-12-24
  • Linux目錄配置整理

    FHS:   為了規范各種Linux發行版的目錄配置方法和目錄定義而制定了FHS規范。   在FHS規范的Linux中,所有的文件和目錄都由根目錄開始,即“/”,它是所有文件和目錄的起點。然后按層次化的樹狀劃分下來。這種目錄結構被稱為“目錄樹”。 目錄樹的特性:   ·起始點為根目錄(/或root)   ·每一個目錄不…

    Linux干貨 2016-07-07
  • Linux文件目錄的權限

     Linux是多用戶多任務的分時操作系統,如果每個人都對文件和目錄都是隨便訪問的話,難么你的文件很有可能會被他人刪除或修改,從而丟失數據。為此系統對文件增加了權限的機制來防止這種事情的發生。對文件而言,用戶被分為三類:屬主(onwer)、屬組(group)、和其他(other)。常規的權限分為:讀(r readable)、寫(w writable)…

    Linux干貨 2016-08-07
  • LVS-nat-dr

    主程序:ipvsadm 配置文件: 規則保存工具:/usr/sbin/ipvsadm-save 規則重載工具:/usr/sbin/ipvsadm-restore 配置文件:/etc/sysconfig/ipvsadm-config ipvsadm使用: 增:      示例:ipvsadm -A -t 172.16.42.1:8…

    2017-08-08
  • vsftpd基于mysql實現用戶認證

    一、前言   ftp介紹:     ftp全程是File Transfer Protocol(文件傳輸協議),方便于實文件交換;但是在文件傳輸以及賬號密碼發送時都是以明文傳輸,因此是一個明文協議 ftp是C/S方式:   常見的客戶端有:     GUI方式:browers、FileZilla-cl…

    Linux干貨 2015-06-15

評論列表(2條)

  • 馬哥教育
    馬哥教育 2018-01-07 17:45

    贊,常見的問題也描述出來了,比較認真,繼續加油~

  • 馬哥教育
    馬哥教育 2018-01-07 18:03

    贊~內容上基本沒什么問題~排版上能注意一下,效果會更好點~

欧美性久久久久