摘要:【筆記整理】CentOS常用指令整理( Q ~ T )
整理有關CentOS的相關指令,
基本上使用man來看會比較完整,下列只是一些簡單及常用的組合應用。
當然也會增加一些相關註解。
1. quota:顯示並限制帳號的磁碟用量
a. quota:顯示自己的磁碟用量
b. quota [-u] ghoseliang:顯示ghoseliang的磁碟用量
c. quota -g:顯示群組的磁碟用量
d. quota -l:只顯示本地端的檔案系統,不顯示網路連線的檔案系統(NFS)
e. quota -s:顯示使用者的磁碟用量限制、已使用的空間、與inodes
f. quota -v:顯示有設定磁碟容量限制的檔案系統
2. quotacheck:檢查帳號磁碟空間的限制
a. quotacheck -a:檢查所有列在『/etc/fstab』中的檔案系統(不包含NFS)
b. quotacheck -b:在寫入新資料前,強迫備份
c. quotacheck -f:強迫檢查,並將容量記錄檔寫入
d. quotacheck -v:列出顯示結果,預設是安靜模式
3. quotaoff:關閉帳號磁碟空間的限制
a. quotaoff -a:將所有檔案系統的配額限制關閉
4. quotaon:開啟帳號磁碟空間的限制
a. quotaon -a:將所有檔案系統的配額限制開啟
5. quotastats:顯示目前帳號磁碟空間的限制
a. quotastats:顯示目前帳號磁碟空間的狀態
註:以上關於Quota的設定我沒用過,但又覺得Windows也有Quota設定,因此算是實用,所以列出。
6. reboot:重新開機
a. reboot:重新開機
b. reboot -d:不寫入wtmp的記錄中
c. reboot -f:強迫重新開機,不呼叫shutdown
d. reboot -i:在重新開機前,先關閉所有網路介面
e. reboot -n(or sync):在重新開機前,先將記憶體中的資料回存硬碟
f. reboot -w:將記錄寫到wtmp的紀錄中,但不真的執行重新開機的動作
7. repquota:檢查磁碟空間限制的狀態
a. repquota -a:列出所有定義quota在『/etc/motd』之中檔案系統的磁碟用量
註:這是顯示磁碟空間限制的重要指令,會搭配quotacheck、quotaon、quotaoff來使用
8. resize2fs:重新調整檔案系統的大小
9. rm:刪除檔案或目錄
a. rm -d 目錄:直接刪除目錄,而不刪除目錄下的檔案,這會造成其內檔案失去連結,並可能需透過『fsck』方能
修復。
b. rm -f 檔案或目錄:強制刪除
c. rm -i 檔案或目錄:刪除前會先詢問使用者
d. rm -r 檔案或目錄:將檔案或目錄底下的所有檔案與子目錄一起刪除
10. rmmod:移除載入的模組
a. rmmod -w 模組名稱:等待該模組停止使用再移除
11. route:顯示並設定路由
a. route:顯示路由表
b. route -C:將核心的路由表由快取列出
c. route -n:以數字顯示,不做DNS反查
d. route -e:以netstat編排方式顯示路由狀態
e. route add -net 192.168.74.0 netmask 255.255.255.0 dev eth0:透過eth0增加路由到192.168.74.0(Netmask:24)
f. route add default gw 192.168.62.253 & route del default gw 192.168.62.253:增加或刪除Gateway
12. rpm(redhat package manager):管理rpm套件
用法1:rpm [ -ivh ] package_name
用法2:rpm [ -Uvh ] [ -Fvh ] package_name
用法3:rpm -q[ acdfilR ] 已安裝的軟體名稱
用法4:rpm -qp[ cdilR ] 未安裝的某個檔案名稱
說明:
01. rpm -ivh samba*:安裝『samba』所有相關套件(需事先下載相關的rpm)
註:
b. rpm -qi samba:顯示『samba』詳細的安裝資訊
c. rpm -e samba:移除『samba』
註:詳細用法與說明請參考http://linux.vbird.org/linux_basic/0520rpm_and_srpm.php
13. runlevel:顯示目前的執行層級
a. runlevel
註:在『/etc/rc.d/』下可了解該執行等級會啟動哪些服務
14. scp:使用加密連線遠端複製檔案
a. scp [files] [[帳號@]主機:]:基本複製檔案至遠端主機用法
b. scp -i 身分檔(private key):指定身分確認檔private key
註:scp是ssh下常見的複製指令,可以遠端複製檔案,不過因為經過加密解密,因此速度會較一般FTP慢。
15. sed:檔案內容修改
說明:『sed』為一種在線編輯器,一次處理一行內容。處理時,把當前處理的行儲存在臨時緩衝區內,稱為
『模式空間(Pattern Space)』,接著用『sed』命令處理緩衝區內的內容,處理完成後,將緩衝區的內容顯示在
螢幕上,然後處理下一行,直到文件尾端。文件內容並沒有改變,除非使用使用重定向儲存輸出。『sed』主要用
來自動編輯一個或多個文件,簡化對文件的反覆操作,編寫轉換程序等。
『sed』可以通過定址來定位所希望編輯的行,該地址用數字構成,用逗號分隔的兩個行數表示以這兩行作為起止
的行的範圍(含行數表示的那兩行)。如:『1, 3』表示『1, 2, 3』行;符號『$』表示最後一行。範圍可通過數據、
正規表示法或兩者結合的方式確定。
用法1:sed [ options ] 'command' file
用法2:sed -f scriptfile file
01. sed '4,5d' sed.txt | head -n 10:將檔案『sed.txt』的4~5行刪除
02. nl sed.txt | sed '4,$d':將檔案『sed.txt』從第四行到文件尾端的行數全刪除
03. nl sed.txt | sed '2a drink tea':參數『a』為往後新增行,參數後面指定新增的內容。
此處範例為在第二行後(第三行),加上內容『drink tea』。
04. nl sed.txt | sed '2i drink tea, coffee or.......\water ? \haha....':參數『i』為往前插入行,參數後面指定插入
的內容;而『\』為可增加多行,每欲多加一行則在文末加上『\』,當不欲增加行時,則在文末加上
單引號『'』。
05. nl sed.txt | sed '2,5c 2-5 Line':參數『c』為取代行,範例為在第『2-5』行中加入取代的內容『2-5 Line』
06. nl sed.txt | sed -n '2,5p':參數『p』為列印(顯示)行,將選擇的範圍內列印(顯示)出來。一般與參數『-n』搭配
,否則會重複輸出並顯示其他行列。參數『-n』為安靜模式(silent),加入此參數後,則只有經過『sed』特殊處
理的才會被顯示出來。
註:同指令『nl sed.txt | head -n 5 | tail -n 4』
07. ifconfig | grep 'inet addr' | sed 's/:/;/g':參數『s』為取代行,可直接進行取代。參數『g』為每行內全取代
,則每行內符合條件的皆進行取代;若未加參數『g』,則只有每行第一個符合條件進行取代。
用法:『sed 's/要被取代的字串/新的字串/g'』
08. ifconfig | grep 'Bc' | sed 's/^.*addr://g' | sed 's/Bcast.*$//g':『sed』與『正規表示法』的綜合應用,
取得『IP Address』
註:同指令『ifconfig | grep 'Bc' | cut -f2 -d: | cut -f1 -d' '』
09. sed 's#root#ghose#g' sed.txt:不管什麼字符,緊跟著參數『s』都被認為新的分隔符,
所以『#』代替了默認的『/』。
10. nl sed.txt | sed '1,10y/abcdefg/ABCDEFG/' | head -n 10:參數『y』為取代行,通常用於大小寫轉換,
要求長度一致,功能與參數『s』基本一致,但不可與『正規表示法符號』一起使用。
11. nl sed.txt | sed '/1:1/,/5:0/p' | head -n 10:逗號『,』為指定行範圍,在指定範圍行內皆會列出。一般與
參數『-n』搭配,否則會重複輸出並顯示其他行列。
12. sed -e '1,5d' -e 's/^.*//' sed.txt:參數『-e』為多次編輯,其允許同一行內執行多條命令。
13. sed '/root/r test1' sed.txt | head -n 10:對應條件後,在其後讀入文件
14. sed '/root/w test1' sed.txt | head -n 10:對應條件後,將該行列寫入文件中
15. sed -i '$a This is Test' sed.txt:參數『i』為插入,在參數『i』後加入字串,範例為在最後一行加入字串。
註:參數『i』可直接修改檔案內容,所以使用時需要小心注意
16. sed -i 's/\:/\~/g' sed.txt:將所有的『:』取代為『~』
註:部分相關應用說明( 1 - 3 )可參考最下方的『備註』
參考來源
http://www.ipcpu.com/2011/07/linux-sed-basic/
http://linux.vbird.org/linux_basic/0330regularex.php#sed
16. service:開啟或關閉服務
a. service 服務批次檔(ex.iptables) 伺服器指令(ex.stop or start):基本開關服務指令
註:『服務批次檔』位於『/etc/init.d/』之下,為啟動伺服器的Shell Script。常用的指令包括start(啟動)、
stop(關閉)、restart(重新啟動)。
b. service iptables status:顯示目前iptables的狀態
c. service --status-all:顯示目前所有服務執行的狀態
17. sestatus:顯示SELinux的狀態
a. sestatus:顯示目前SELinux的狀態
b. sestatus -b:顯示SELinux中布林值的狀態
18. set:設定變數
a. set:顯示目前變數設定
b. set -o:列出所有功能
c. set -o 項目名稱:開啟對應功能,ex. set -o vi
d. set +o 項目名稱:關閉對應功能
註:詳細用法請參考:http://linux.vbird.org/linux_basic/0320bash.php
19. setenforce:強制啟動或停止SELinux
a. setenforce 0:強制停止SELinux
b. setenforce 1:啟動SELinux
20. showmount:顯示NFS伺服器的掛接訊息
a. showmount -a:列出所有掛接的主機名稱與目錄名稱
b. showmount -d [主機]:只列出目錄名稱
c. showmount -e [主機]:顯示NFS伺服器的分享清單
21. shutdown:關機
01. shutdown -r 0:重新開機
02. shutdown -r now:立刻重新開機
03. shutdown -k 0:僅顯示警告訊息,而不是真的關機
04. shutdown -h now:立刻關機
05. shutdown 0 -h:立刻關機。關機後關閉電源,此功能需硬體與作業系統支援。
06. shutdown -h 15:30:今天15:30關機
07. shutdown -h +5:5分鐘後關機
08. shutdown 1 -h 'ha!ha!':一分鐘後關機,並在每個終端機視窗上顯示『ha!ha!』
22. sort:排序命令,可對檔案內容進行排序並將結果顯示於標準輸出(STDOUT),
但不會改變其內容
用法:sort [ -fbMnrtuk ] file
01. sort test1:排序檔案『test1』內容
02. sort -f file:將小寫字母視為大寫字母,亦為忽略大小寫
03. sort -b file:忽略最前面的空白字元部份
04. sort -M test1:依照月份的縮寫進行排序
05. cat /etc/passwd | sort -t ':' -k 3 -n | head -n 5:排序檔案『/etc/passwd』。參數『-t』,以冒號『:』為
分隔符號(預設為『Tab』);參數『-k』,以第『3』個區間進行排序,因為第三個區間為『數字』,所以需
加上參數『-n』才能進行排序(預設為『文字型態』)。
06. sort -r test1:反向排序
07. sort -u test1 test2:參數『-u』為uniq的意思,即相同資料中僅出現一行,亦為重複的只會出現一個
註:有時會加上指令『uniq -c』來計算重複次數
23. ssh:遠端加密連線
a. ssh root@192.168.28.129:透過ssh連線到192.168.28.129
b. ssh 192.168.28.129 -p 22 -l ghoseliang:使用帳號ghoseliang透過端口22連線到192.168.28.129
註:詳細用法請參考http://linux.vbird.org/linux_server/0310telnetssh.php#ssh
24. stat:顯示檔案或檔案系統狀態訊息
用法:stat [ -ft ] file or file system
01. stat test.z:顯示『test.z』相關訊息。如:『GID』、『UID』、權限的八進位表示形式『0644』及
時間(存取、修改、變更)。
註:除了通常的文件大小外,還有該文件佔用的區塊,通常的Linux區塊大小為512 Byte,因此『test.z』將佔用
( 268186/512= )523.80區塊,由於區塊都是完整佔用,因此此文件使用一些整數的區塊。
02. stat -f test.z:顯示『test.z』文件系統相關訊息
03. stat -t test.z:簡單顯示『test.z』相關訊息。以一行顯示。
25. su:切換帳號
a. su - root
b. su - ghoseliang
26. sudo:使用指定的帳號權限執行程式
a. sudo -u ghoseliang vi /tmp/test1.txt:使用『ghoseliang』的身分編輯『/tmp/test1.txt』
27. sysctl:設定核心的參數
a. sysctl -a:列出目前正在使用的核心參數
b. sysctl -w net.ipv4.ip_forward=1:將net.ipv4.ip_forward設為1
註:另一相同指令『echo "1" > /proc/sys/net/ipv4/ip_forward』
註:或直接編輯『/etc/sysctl.conf』,完成後輸入指令『sysctl -p /etc/sysctl.conf』,套用更改過的設定檔。
28. sync:將記憶體中的資料回存硬碟中
29. tac:從尾到頭顯示檔案內容
a. tac test.c
b. tac -b test.c:將間隔字元放在檔案記錄前面
30. tail:顯示檔案最後面的部份
a. tail -f /var/log/messages:持續讀取檔案最後面的資料,通常用於記錄檔的監控
註:按『Ctrl』+『C』為停止
b. tail -n 10 /var/log/messages:顯示檔案最後10行的資料
註:預設為顯示最後的10行
31. tar:備份與壓縮-包裝檔案
a. tar -cvf a.tar ~/a.out:將『~/』下的檔案『a.out』,包裝為『a.tar』
b. tar -xvf ~/a.tar:將『a.tar』解開到目前的目錄之下
c. tar -xvf ~/a.tar -C /tmp/:將『a.tar』解開到『/tmp』下
註1:搭配參數『-z』為gzip格式,參數『-j』為bzip2格式
註2:詳細用法可參考http://linux.vbird.org/linux_basic/0240tarcompress.php#tar
32. tcpdump:顯示網路上TCP的連線狀態
a. tcpdump -i eth0:顯示介面eth0的封包狀態
註:個人覺得不太好用
33. tee:雙向重導向,多目標轉移
註:請參考『http://www.dotblogs.com.tw/ghoseliang/archive/2013/05/29/105049.aspx』
34. telnet:遠端連線程式
註:相關用法很多,所以請自行於網路上查找
35. tftp:檔案傳輸
註:相關用法很多,所以請自行於網路上查找
36. top:即時顯示目前的程序狀態及各種資源佔用狀態
01. top
說明:
統計訊息區:前五行為當前系統情況整體統計訊息
第一行:任務隊列訊息,同『uptime』執行結果
:系統現在時間
:系統已運行時間,若重啟,時間會重置
:目前多少使用者登入系統
:三個數字分別為1分鐘、5分鐘、15分鐘的負載情況。
『Load Average』為每隔五秒檢查一次活躍的程序數,然後按照特定算法計算出的數值,這個數值再除以
邏輯CPU的數量,若結果大於5,即表示系統為超負荷運作中。
第二行:任務(程序)
目前共96個程序,1個正在運行,95個休眠,0個停止,0個殭屍
第三行:CPU狀態訊息
:沒有經過優先級調整的用戶程序所佔用cpu百分比
:內核程序所佔用CPU百分比
:經過優先級調整的用戶程序所佔用CPU百分比
:CPU空閒百分比
:IO等待佔用CPU百分比
:硬體中斷(Hardware IRQ)佔用CPU百分比
:軟體中斷(Software IRQ)佔用CPU百分比
:虛擬CPU等待實體CPU處理的百分比
第四行:記憶體訊息
『used』為現在系統內核控制的記憶體數,『free』是內核還未納入其管控範圍的數量。納入內核管理的記憶體
不一定都在使用中,還包括過去使用過的,而現在可以被重複利用的記憶體,內核並不把這些可被重新使用的
記憶體交還到『free』中,因此在系統上『free』記憶體會越來越少,是不用擔心的。
若要計算可用記憶體數:『free』+『buffers』+『cached』
第五行:SWAP訊息
對於記憶體監控,我們要時常監控『used』,如果這個數值不斷變化,表示內核正在不斷進行『記憶體』和
『SWAP』的數據交換,這是真正的記憶體不夠用了。
第七行:各程序(任務)的狀態監控
PID:程序ID
USER:程序使用者
PR:優先級
NI:NICE值,負數表示優先級越高,正數表示優先級越低,『0』表示程序調度後,優先級不會被調整
VIRT:程序使用的虛擬記憶體,單位kb。VIRT = SWAP + RES
RES:程序使用的、未被換出的實體記憶體,單位kb。RES = CODE + DATA
SHR:程序佔用的共享記憶體,單位kb
S:程序狀態。D為不可中斷的睡眠狀態、R為運行、S為睡眠、T為停止、Z為殭屍狀態
%CPU:所佔CPU
%MEM:所佔記憶體
TIME+:CPU時間,單位1/100秒
COMMAND:程序名稱(命令名/命令行)
02. top -u ghoseliang:顯示使用者ghoseliang目前所執行的程序狀態
03. top -d 5:設定每5秒更新一次
04. top -n 5:設定更新5次
05. top -c:顯示完整命令(COMMAND)
06. top -p PID:顯示指定PID的狀態訊息
07. 在『top』中按『1』,可顯示每個CPU(core)的狀態
註:使用工具『putty』會有個限制,超過一定數的CPUs,必須放大視窗才能顯示。
37. touch:更改檔案的時間標記
用法:touch [ -acdmt ] filename
01. touch test1:touch主要是更改檔案的時間標記,若檔案不存在,則會新增一個時間標記為現在的檔案
02. touch [filename]:更改已存在檔案的時間標記
03. touch -a anaconda-ks.cfg:改變檔案的讀取時間(access time)紀錄
註1:『ll anaconda-ks.cfg』顯示的時間為『modification time(mtime)』
註2:『ll --time=atime anaconda-ks.cfg』顯示的時間為『access time(atime)』
註3:『ll --time=ctime anaconda-ks.cfg』顯示的時間為『status time(ctime)』
04. touch -c anaconda-ks.cfg:僅修改檔案時間
註:若檔案不存在,則不會建立新檔案
05. touch -d "2 days ago" anaconda-ks.cfg:修改時間和日期,也可以使用『--date="日期或時間"』
註:時間可使用不同格式,如:『5:30pm』、『05/23/2013』、『5:30pm 05/23/2013』
06. touch -m install.log:僅修改檔案的修改時間(mtime)記錄
07. touch -t 1501010000 bashrc:修改檔案時間,格式為『YYMMDDhhmm』
08. touch { 1,2 } { a,b,c } ; ls -l:一次產出多個檔案
註:除了上述的修改時間,一般使用最多的就是拿來產出新檔案
38. tr:字串處理,字元轉換與刪除
用法:tr [ -ds ] SET1 ...
01. tr 'a-z' 'A-Z' < .bash_profile:將檔案『.bash_profile』轉換大小寫後輸出至螢幕上
02. ifconfig | tr -d ':':將『ifconfig』輸出後訊息中的冒號『:』刪除
03. tr -s 'cat' 'you' < .bash_history:將檔案『.bash_history』訊息中的『cat』三個字元各別取代成
『you』三個字元
註:『tr』數據由『STDIN』輸入後,經由指令參數的指定轉換後,再導向『STDOUT』
39. tracepath:追蹤網路連線的路徑
40. traceroute:追蹤網路連線所經過的路由器
備註
1. 萬用字元
01. . :任何單一字元
02. [abc]:此指定英文字元名單中即符合條件(即 a,b,c 只要其一符合即可)
03. [0-9]:此指定數字區段中即符合條件(即 0,1,2,3,4,5,6,7,8,9 只要其一符合即可)
04. [^abc]:排除此指定英文字元名單中即符合條件(即不要 a,b,c 其一即可)
05. [^a-c]:排除此指定的範圍內及符合條件
2. Modifies
01. * :零個或多個字元即符合條件
02. ?:任何單一字元即符合條件
03. \? :任何一個字元以上即符合條件
04. \+ :至少一個字元
05. \{i\} :『i』個前面的字元。範例為重複字元『a』,3個
06. \{i,\} :至少『i』個前面的字元。範例為重複字元『a』,至少3個
07. \{i,j\}:至少『i』個,最多『j』個前面的字元。範例為重複字元『a』,至少『3』個,最多『5』個
3.定錨點
01. ^ :行的起始。範例為搜尋每行『al』開頭的字串
02. $ :行的結束(尾端)。範例為搜尋每行『y』結尾的字串
03. \< :字的起始。範例為搜尋含有『a』開頭的字串
04. \> :字的結束(尾端)。範例為搜尋含有『 bad』結尾的字串
<......不定時更新、修改、增加中......>
參考