1、rpm命令:
Linux rpm 命令用於管理套件。
rpm(redhat package manager) 原本是 Red Hat Linux 發行版專門用來管理 Linux 各項套件的程序,由於它遵循 GPL 規則且功能強大方便,因而廣受歡迎。逐漸受到其他發行版的採用。
RPM 套件管理方式的出現,讓 Linux 易於安裝,升級,間接提升了 Linux 的適用度。
rpm命令:rpm [OPTIONS] [PACKAGE_FILE] 安裝:-i --install; 升級:-U,--update,-F,--freshen; 卸載:-e,--erase; 查詢:-q,--query; 校驗:-V,--verify 數據庫維護:--builddb,--initdb
(1)安裝:rpm {-i|--install} [install-options] PACKAGE_FILE ... rpm -ivh PACKAGE_FILE... GENERAL OPTIONS: -v:verbose,詳細信息 -vv:更詳細的輸出 [install-options]: -h:hash marks輸出進度條;每個#表示2%的進度; --test:測試安裝,檢查並報告依賴關係及衝突消息等; --nodeps:忽略依賴關係,不建議; --replacepkgs:重新安裝; (2)升級: rpm {-U|--upgrade} [install-options] PACKAGE_FILE ... rpm {-F|--freshen} [install-options] PACKAGE_FILE ... -U:升級或安裝(如果軟件包沒有安裝則直接安裝) -F:升級 --oldpackge:降級; --force:強制升級; (3)卸載: rpm {-e|--erase} [--allmatches] [--justdb] [--nodeps] [--noscripts] [--test] PACKAGE_NAME ... --allmatches:卸載所有匹配指定名稱的程序包的各版本; --nodeps:忽略依賴關係; --test:測試卸載,dry run模式 (4)查詢: 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,程序包相關的信息,版本號、大小、所屬的包組,等 -qf FILE,查詢指定的文件由哪個程序包安裝生成; -qc PACKAGE,查詢指定的程序包提供的配置文件; -ql PACKAGE,程序安裝生成的所有文件列表; -qd PACKAGE查詢指定的程序包提供的文檔; -qpi PACKAGE_FILE,查詢未安裝的程序包的相關信息; -qpl PACKAGE_FILE....查詢未安裝的程序包的文件列表 (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 (6)數據庫重建: rpm管理器數據庫路徑:/var/lib/rpm/ rpm {--initdb|--rebuilddb} --initdb:初始化數據庫,當前無任何數據庫可初始化創建一個新的;當前有時不執行任何操作; --rebuilddb:重新構建,通過讀取當前系統上所有已經安裝過的程序包進行重新創建;
常見選項使用方法:
(a)、安裝軟件包:rpm -ivh PACKAGE
(b)、測試安裝軟件包安裝,查看是否需要依賴包:
(c)、忽略依賴關係,安裝軟件包:
(d)、升級軟件包:
a、如果軟件爲安裝
b、使用-Fvh,升級必須已安裝了軟件;
(e)、卸載rpm包:
(f)、查詢某個文件夾由哪個軟件包生成:
(g)、查詢某能力由哪個程序包提供
(h)、查詢某能力被那些軟件包所依賴
(i)、查詢軟件包提供的配置文件:
(j)、校驗軟件包是否修改過:
2、yum命令:
yum( Yellow dog Updater, Modified)是一個在Fedora和RedHat以及SUSE中的Shell前端軟件包管理器。
基於RPM包管理,能夠從指定的服務器自動下載RPM包並且安裝,可以自動處理依賴性關係,並且一次安裝所有依賴的軟體包,無須繁瑣地一次次下載、安裝。
yum提供了查找、安裝、刪除某一個、一組甚至全部軟件包的命令,而且命令簡潔而又好記
yum的命令行選項: --nogpgcheck:禁止進行gpg check; -y:自動回答爲“yes”; -q:靜默模式; --disablerepo=repoidgolb:臨時禁用此處指定的repo; --enablerepo=repoidglob:臨時啓用此處指定的repo; --noplugins:禁用所有插件; (1)顯示倉庫列表: repolist [all|enabled|disabled] (2)顯示程序包: list [...] yum list [all | glob_exp1] [glob_exp2] [...] yum list {available|installed|updates} [glob_exp1] [...] (3)安裝程序包: install package1 [package2] [...] (4)升級程序包: update [package1] [package2] [...] reinstall package1 [package2] [...](重裝) downgrade package1 [package2] [...](降級) (5)檢查可用升級: check-update (6)卸載程序包: remove | erase package1 [package2] [...] (7)查看程序包information: info [...] (8)查看指定的特性(可以是某個文件)是由哪個程序包所提供: provides | whatprovides feature1 [feature2] [...] (9)清理本地緩存: clean [ packages | metadata | expire-cache | rpmdb | plugins | all ] (10)構建緩存: makecache (11)搜索: search string1 [string2] [...] 以指定的關鍵字搜索程序包名及summary信息 (12)查看指定包所依賴的capabilities: deplist package1 [package2] [...] (13)查看yum事務歷史: history [info|list|packages-list|packages-info|summary|addon-info|redo|undo|rollback|new|sync|stats] (14)安裝及升級本地程序包: localinstall rpmfile1 [rpmfile2] [...] (maintained for legacy reasons only - use install) localupdate rpmfile1 [rpmfile2] [...] (maintained for legacy reasons only - use update) (15)包組管理的相關命令: groupinstall group1 [group2] [......] groupupdate group1 [group2] [......] grouplist [hidden] [groupwildcard] [......] groupremove group1 [group2] [......] groupinfo group1 [......]
常見選項使用方法:
a、查看啓用的yum源:
b、常看某個命令由哪個程序包提供的(未安裝的也可以)
c、靜默模式,自動回答“yes”下安裝程序包
d、查看程序包組
f、安裝程序包組
yum groupinstall "開發及生成工作站"(如果顯示中文,則需要輸入中文,反之英文)
3、自建yum倉庫
(1)倉庫指向的定義:
[repositoryID] #定義基礎倉庫名稱,具有唯一性;
name=Some name for this repository
baseurl=url://path/to/repository/ #定義rpm包路徑,可以是目錄、鏈接、ftp等;
enabled={1|0} #是否啓用倉庫;
gpgcheck={1|0} #是否檢查完整性;
gpgkey=URL #gpg公鑰地址;
enablegroups={1|0} #是否啓用包組安裝,默認支持;
failovermethod={roundrobin|priority} #一個repo內所有倉庫選擇方式,默認隨機;
默認爲:roundrobin,意爲隨機挑選;
cost=
默認爲1000
(2)創建本地yum源
a、掛載系統光盤當做本地源
先掛載本地光盤,也可以複製光盤文件至系統下
創建並編輯repo文件,在/etc/yum.repo.d/ 下
b、自己建立軟件集,建立源
使用的命令:createrepo [OPTION] <directoty>,使其所在文件夾生產repodata數據庫
接着同上創建repo文件即可;
(3)創建網絡yum源
直接利用著名的網絡yum源,直接下載repo文件,前提確保能聯網!我們以阿里雲的yum源爲例:
登錄阿里雲yum源,查看對應系統版本的yum源名稱;
在yum源配置文件夾下,下載yum源,我這裏順便進行了重命名,方便管理;
(4)備份以及使系統自帶yum源失效:
這裏我們把系統自帶的yum源直接重命名爲非".repo"結尾的文件即可使其失效;
(5)重建yum源
清除yum緩存
yum clean all
重新加載yum源
yum repolist 或者 yum list
4、Linux任務計劃-at命令:
在一個指定的時間執行一個指定任務,只能執行一次,且需要開啓atd進程
格式:
at [參數] [時間] 參數: -m 當指定的任務被完成之後,將給用戶發送郵件,即使沒有標準輸出 -l atq的別名 -d atrm的別名 -v 顯示任務將被執行的時間 -c 打印任務的內容到標準輸出 -q <列隊> 使用指定的列隊 -f <文件> 從指定文件讀入任務而不是從標準輸入讀入 -t <時間參數> 以時間參數的形式提交要運行的任務 時間: HH:MM[YYYY-mm-dd] noon,midnight,teatime tomorrow now+# UNIT:minutes,hours,days,OR weeks
注意:作業執行結果是以郵件發送給提交作業的用戶;
我這裏直接演示一個計劃任務,在1分鐘後輸出系統時間;新建文件,寫入需要操作的命令即可。
5、Linux週期性計劃-crontab(cron)命令:
服務程序:
cronle:主程序包,提供了crond守護進程及相關輔助工具;
確保crond守護進程(daemon)處於運行狀態;
CentOS 7:
systemctl status crond.service
CentOS 6:
service crond status
crond提交作業的方式不同於at,需要使用專用的配置文件,此文件有固定格式,不建議使用文本編輯器直接編輯此文件;要使用crontab命令;
cron任務分爲兩類:
系統cron任務:主要用於實現系統自身的維護;
手動編輯:/etc/crontab文件
用戶cron任務:
命令:crontab命令
系統cron的配置格式:
# * * * * * user-name command to be executed
注意:
(1)每一行定義一個週期性任務;共7個字段;
前5個字段 * * * * *:定義週期性時間
user-name:運行任務的用戶身份
command to be executed:任務
(2)此處的環境變量不同於用戶登錄後獲得的環境,因此,建議命令使用絕對路徑,或者自定義PATH環境變量;
(3)執行結果郵件發送給MAITTO指定的用戶
用戶cron的配置格式:/var/spool/cron/USERNAME
# * * * * * command to be executed
注意:
(1)每行定義一個cron任務,共6個字段;
(2)此處的環境變量不同於用戶登錄後獲得的環境,因此,建議命令使用絕對路徑,或者自定義PATH環境變量;
(3)郵件發送給當前用戶;
時間表示法:
* * * * *
分 時 天 月 星期
所以最小單位爲分鐘,即週期性任務最小執行時間爲分鐘;*代表“每”意思,若在對應的*填上數值,則表示每*;
例:
2 3 4 5 * 意思爲:每年5月份4號3點2分鐘執行某某任務;
(1)特定值:
給定時間點有效取值範圍內的值;
注意:day of week 和 day of month 一般不同時使用;
(2)*
給定時間點上有效取值範圍內的所有制;表“每”
(3)離散取值:,
在時間點上使用逗號分隔的多個值;
(4)連續取值:-
在時間點使用-連接開頭和結束
(5)在指定時間點上,定義步長;/
/#;#即步長;
注意:
(1)指定的時間點不能被步長整除時,其意義將不復存在;
(2)最小時間單位爲“分鐘”,想完成“秒”級任務,得需要額外藉助於其他機制;
定義成每分鐘任務:而再利用腳本實現每分鐘之內,循環很多次;
crontab命令:
crontab [-u user][-l | -e][-i]
-e:編輯任務 -l:列出所有任務; -r:移除所有任務;即刪除/var/spool/cron/USERNAME文件; -i:在使用-r選項移除所有任務時提示用戶確認; -u user:root用戶可爲指定用戶管理cron任務;
注意:運行結果以郵件通知給當前用戶;如果拒絕接收郵件;
(1)COMMAND > /dev/null
(2)COMMAND &> /dev/null
注意:定義COMMAND時,如果命令需要用到%,需要對其轉義;但放置於單引號中的%不用轉義亦可;
例:制定 每週三凌晨三、五點10分執行某個腳本,輸出當前時間,時間格式爲 2017-12-28 10:00:00
6、sed命令:
格式:sed [OPTION]... {script-only-if-no-other-script} [input-file]...
{script-only-if-no-other-script}:地址定界編輯命令,需要連在一起,不需要分開;
地址定界: (1)空地址:對全文進行處理; (2)單地址: #:指定行; /pattern/:被此模式所匹配到的每一行;可使用正則表達式; (3)地址範圍 #,#: #,+#: #,/pat1/ /pat1/,/pat2/ $:最後一行 (4)步進:~ 1~2:所有奇數行 2~2:所有偶數行 編輯命令: d:刪除 p:顯示模式空間中的內容; a \text:在行後面追加文本“text”,支持使用\n實現多行追加; i \text:在行前面插入文本“text”,支持使用\n實現多行插入; c \text:把匹配到的行替換爲此處指定的文本“text”; w /PATH/TO/SOMEFILE:保存模式空間匹配到的行至指定的文件中; r /PATH/FROM/SOMEFILE:讀取指定文件的內容至當前文件被模式匹配到的行後面,文件合併; =:爲模式匹配到的行打印行號; !:條件取反; s///:查找替換,其分隔符可自行指定,常用的有s@@@,s###等; 替換標記: g:全局替換; w /PATH/TO/SOMEFILE:將替換成功的結果保存至指定文件中; p:顯示替換成功的行;
常用選項:
-n:不輸出模式空間中的內容至屏幕; -e script, --expression=script:多點編輯; -f /PATH/TO/SED_SCRIPT_FILE:直接把命令寫成一個文本,每行一個編輯命令; -r, --regexp-extended:支持使用擴展正則表達式; -i[SUFFIX], --in-place[=SUFFIX]:直接編輯原文件;危險操作
實例:
匹配到的UUID,替換成uuid;
-n 不輸出文件的每一行到屏幕;
p:顯示匹配到並完成編輯的所在的行至屏幕;
s###:則跟vim使用方法一致;
顯示被匹配到以外的行
添加註釋信息至匹配到的行