監視資源與管理進程

inux系統中時刻運行着許許多多的進程,若是可以合理的管理它們,絕對有益於系統的性能優化,系統進程總共有5種不一樣的狀態:php

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 )&

有些命令在執行時會不斷的在終端上輸出信息,影響到咱們繼續輸入命令了,此時即可以在這條命令後面添加個」&「符號,那麼從一開始執行該命令就會是在後臺執行(不是在後臺暫停,而是在運行的)。

相關文章
相關標籤/搜索