Linux真小白入門教程第七集——Bash Shell命令學習(4)
之前講了Linux對檔案和目錄的管理和相關操作,下面主要講一些Linux系統管理的一些命令,來探查Linux系統的內部資訊。
Linux系統管理員面臨的最複雜的任務之一就是跟蹤執行在系統中的程式。圖形化介面總是顯示不出所有正在執行的程式,好在還有一些命令可以進行管理。
ps命令可以檢測程序的執行,它能輸出執行在系統上的所有程式的許多資訊。然而該命令還有很多的選項引數,所以ps命令可以被稱為複雜的命令之一。(學習一些必要的引數組合是非常必要的)
預設情況下,ps命令只會顯示執行在當前控制檯下屬於當前使用者的程序(只有ps命令本身)
輸出中包含程序的ID(PID),以及它們執行在哪個終端(TTY),以及程序已用的CPU時間。
Linux系統中實用的GNU ps命令支援三種不同型別的命令列引數
Unix風格引數 加單破折線-
BSD風格引數 不加破折線
GNU風格引數 加雙破折線
在實際使用中,並不是需要記住所有的引數選項,而是要記住一些非常有用、經常使用到的引數組合
-ef 檢視系統上執行的所有程序
-e 顯示所有程序 -f擴充套件輸出(格式上完整)
想要更多的資訊,則可以加 -l 引數
其實記住一個Unix風格即可,其他的風格最為了解,以後見到不是特別驚訝就好了
GNU是長引數型別
雖然ps命令可以手機到執行在系統上的程序資訊,但是ps命令只能顯示在某個特定時間點的資訊。使用top命令
第一行顯示了當前時間、系統執行時間、登入使用者、系統的平均負載
(負載值超過2,就說明系統較為繁忙了)
第二行顯示程序的概要資訊,在top中程序被稱為task
第三行顯示CPU的概要資訊
最後兩行說明了系統記憶體的狀態
預設情況下,top命令在啟動時會按照%CPU值對程序進行排序,可以在top執行的時候,在進行重新排序。
按q鍵退出top命令(可以用來找出佔用系統資源的罪魁禍首!)
在Linux中,程序間可以通過訊號來通訊,程序的訊號就是預定義好的一個訊息,程序可以識別它決定忽略或者做出反應,程序如何處理訊號由開發人員通過程式設計來實現。
標準的Unix程序訊號:
Linux上有兩個命令可以向執行中的程序發出訊號:
kill命令可以通過程序ID(PID)給程序發訊號。預設情況下,kill命令會向命令列中列出的全部PID傳送一個TERM訊號。
kill 3940
給程序3940發出TERM訊號(此時你必須是程序的屬主或者登陸為root使用者,否則會被拒絕)
TERM告訴程序可能的話就停止執行,不過,也有不服管教的程序,就會忽略這個訊號,如果要強行中止,-s 引數可以讓你如願以償。(支援訊號名或者訊號值)
kill -s 15 3940
kill -s HUP 3940
killall 命令非常強大,它支援通過程序名而不是PID來結束程序,而且killall命令還支援萬用字元
killall http*
結束所有以http開頭的程序
(在root使用者下 ,要謹慎使用,防止殺掉必要的系統程序,可能會破壞檔案系統)