R(運行):正在運行或在運行隊列中等待。
S(中斷):休眠中, 在等待某個條件的造成或接受到信號。
D(不可中斷):收到信號不喚醒和不可運行, 進程必須等待直到有中斷髮生。
Z:(僵死):進程已終止, 但進程描述符存在, 直到父進程調用wait4()系統調用後釋放。
T:(中止):進程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信號後中止運行。
ps命令用於查看系統中的進程狀態,格式爲:「ps [參數]」。
查看進程與狀態:「ps -aux」
查找某個特定的進程信息:」ps -aux | grep 進程名」linux
USER | PID | %CPU | %MEM | VSZ | RSS | TTY | STAT | START | TIME | COMMAND |
進程的全部者 | 進程ID號 | 運算器佔用率 | 內容佔用率 | 虛擬內存使用量(單位是KB) | 佔用的固定內存量(單位是KB) | 所在終端 | 進程狀態 | 被啓動的時間 | 實際使用CPU的時間 | 命令名稱與參數 |
參數 做用
-a 顯示全部的進程(包括其餘用戶的)
-u 用戶以及其餘詳細信息
-x 顯示沒有控制終端的進程緩存
top命令用於監視進程的活動與系統負載,格式爲:「top」。性能優化
這個top命令可真的是太厲害了,徹底能夠比喻成是「強化版的Windows任務管理器」,運行界面見右圖:ssh
前面的五行爲系統總體的統計信息,下面咱們來逐行的講解:性能
第1行:系統時間,運行時間,登錄用戶數,系統負載(分別爲1分鐘、5分鐘、15分鐘的平均值)。
第2行:進程總數,運行中的,睡眠中的,中止的,殭屍的。
第3行:用戶佔用資源,系統內核佔用資源,改變過優先級的進程,空閒的資源,等待輸入輸出的時間。
此行數據均爲CPU數據並以百分比格式顯示,例如」99.2 id」意味着有99.2%的CPU資源正在空閒中。
第4行:物理內存總量,使用量,空閒量,做爲內核緩存的內存量。
第5行:虛擬內存總量,使用量,空閒量,已被提早加載的內存數據。學習
進程的信息區中包含了各個進程的詳細信息,含義以下:優化
PID:進程ID號 USER:進程的全部者 PR:優先級 NI:優先級(負值表示優先級更高) VIRT:虛擬內存使用量 RES:物理內存使用量 SHR:共享內存大小 S:進程狀態(上文中有提到) %CPU:運算器的使用百分比 %MEM:內存的使用百分比 TIME+:使用CPU的時間(單位是1/100秒) COMMAND:命令名稱
pidof命令用於查詢某個特定程序的進程PID值,格式爲:「pidof [參數] [程序名稱]」。spa
查詢」sshd」進程的PID值:」pidof sshd」.net
kill命令用於終止某個特定PID號碼的進程,格式爲:「kill [參數] [進程PID號]」。
強制終止PID爲4674的進程:」kill -9 4674″
✪其中的」-9″表明強制終止(SIGKILL),也是最經常使用的一種信號參數,查看所有請執行」kill -l」
killall命令用於終止某個特定名稱的全部進程,格式爲:「killall [參數] [進程名稱]」。
終止名稱爲」sshd」的進程:」killall sshd」
在終端中運行一個命令後若是想當即的中止它,可使用組合鍵」Ctrl+c「,這樣命令的進程將會完全的被終止。
但還有一種玩法是」Ctrl+z「,它是將命令的進程暫停(也叫掛載到後臺或扔到後臺),先來看兩條命令吧:
這條命令會每秒向家目錄中的jobs.txt中追加一個字符串:
[root@linuxprobe ~]# (while true ;do echo -n " working " >> ~/jobs.txt;sleep 1 ;done;)
|
自動刷新查看文件內容的變化:
1
|
[root@linuxprobe ~]# tail -f ~/jobs.txt
|
模擬訓練:試試」Ctrl+z」,學習jobs、bg和fg命令。
開始執行寫入命令:
1
|
[root@linuxprobe ~]# (while true ;do echo -n " working " >> ~/jobs.txt;sleep 1 ;done;)
|
確認一直在被寫入字符:
1
|
[root@linuxprobe ~]# tail -f ~/jobs.txt
|
敲擊」ctrl+z「後,這條命令的進程被暫停了(另外的終端中再也不被追加內容):
1
2 3 4 5 6 7 8 9 |
[root@linuxprobe ~]# (while true ;do echo -n " working " >> ~/jobs.txt;sleep 1 ;done;) ^Z [1]+ Stopped ( while true; do echo -n " working " >> ~/jobs.txt; sleep 1; done ) |
使用jobs命令能夠查看到全部在後臺運行着的進程:
1
2 3 4 5 6 7 |
[root@linuxprobe ~]# jobs [1]+ Stopped ( while true; do echo -n " working " >> ~/jobs.txt; sleep 1; done ) |
運行bg命令讓後臺的程序繼續執行,如今後臺中只有一個進程,因此省略了編號,完整格式應爲」bg 1「:
1
2 3 4 5 6 7 |
[root@linuxprobe ~]# bg [1]+ ( while true; do echo -n " working " >> ~/jobs.txt; sleep 1; done ) |
運行fg命令將後臺的進程再調回前臺,程序依然在運行,此時你能夠敲擊組合鍵」ctrl+c「啦:
1
2 3 4 5 6 7 |
[root@linuxprobe ~]# fg ( while true; do echo -n " working " >> ~/jobs.txt; sleep 1; done )& |
有些命令在執行時會不斷的在終端上輸出信息,影響到咱們繼續輸入命令了,此時即可以在這條命令後面添加個」&「符號,那麼從一開始執行該命令就會是在後臺執行(不是在後臺暫停,而是在運行的)。