程序【TLCL】
阿新 • • 發佈:2018-11-12
ps命令
ps x
加上 "x" 選項(注意沒有開頭的 "-" 字元),告訴 ps 命令,展示所有程序,不管它們由什麼 終端(如果有的話)控制。
在 TTY 一欄中出現的 "?" ,表示沒有控制終端。使用這個 "x" 選項,可以 看到我們所擁有的每個程序的資訊。
程序狀態
狀態 | 含義 |
---|---|
R | 執行中。這意味著,程序正在執行或準備執行。 |
S | 正在睡眠。程序沒有執行,而是,正在等待一個事件, 比如說,一個按鍵或者網路分組。 |
D | 不可中斷睡眠。程序正在等待 I/O,比方說,一個磁碟驅動器的 I/O。 |
T | 已停止. 已經指示程序停止執行。稍後介紹更多。 |
Z | 一個死程序或“殭屍”程序。這是一個已經終止的子程序,但是它的父程序還沒有清空它。 (父程序沒有把子程序從程序表中刪除) |
< | 一個高優先順序程序。這可能會授予一個程序更多重要的資源,給它更多的 CPU 時間。 程序的這種屬性叫做 niceness。具有高優先順序的程序據說是不好的(less nice), 因為它佔用了比較多的 CPU 時間,這樣就給其它程序留下很少時間。 |
N | 低優先順序程序。 一個低優先順序程序(一個“nice”程序)只有當其它高優先順序程序被服務了之後,才會得到處理器時間。 |
ps aux
這個選項組合,能夠顯示屬於每個使用者的程序資訊。通過這些選項,我們得到 這些額外的列。
標題 | 含義 |
---|---|
USER | 使用者 ID. 程序的所有者。 |
%CPU | 以百分比表示的 CPU 使用率 |
%MEM | 以百分比表示的記憶體使用率 |
VSZ | 虛擬記憶體大小 |
RSS | 程序佔用的實體記憶體的大小,以千位元組為單位。 |
START | 程序啟動的時間。若它的值超過24小時,則用天表示。 |
top命令
top
top 程式以程序活動順序顯示連續更新的系統程序列表。
行號 | 欄位 | 意義 |
---|---|---|
1 | top | 程式名。 |
14:59:20 | 當前時間。 | |
up 6:30 | 這是正常執行時間。它是計算機從上次啟動到現在所執行的時間。 在這個例子裡,系統已經運行了六個半小時。 | |
2 users | 有兩個使用者登入系統。 | |
load average: | 載入平均值是指,等待執行的程序數目,也就是說,處於可以執行狀態並共享 CPU 的程序個數。 這裡展示了三個數值,每個數值對應不同的時間段。第一個是最後60秒的平均值, 下一個是前5分鐘的平均值,最後一個是前15分鐘的平均值。若平均值低於1.0,則指示計算機 工作不忙碌。 | |
2 | Tasks: | 總結了程序數目和這些程序的各種狀態。 |
3 | Cpu(s): | 這一行描述了 CPU 正在進行的活動的特性。 |
0.7%us | 0.7% 的 CPU 被用於使用者程序。這意味著程序在核心之外。 | |
1.0%sy | 1.0%的 CPU 時間被用於系統(核心)程序。 | |
0.0%ni | 0.0%的 CPU 時間被用於"nice"(低優先順序)程序。 | |
98.3%id | 98.3%的 CPU 時間是空閒的。 | |
0.0%wa | 0.0%的 CPU 時間來等待 I/O。 | |
4 | Mem: | 展示實體記憶體的使用情況。 |
5 | Swap: | 展示交換分割槽(虛擬記憶體)的使用情況。 |
兩個最有趣的命令是 h 和 q。h,顯示程式的幫助螢幕,q, 退出 top 程式。
把命令放到後臺執行
xlogo &
jobs 【檢視任務】
程序返回前臺
fg %1
輸入 Ctrl-c 來終止 xlogo 程式
停止一個程序
xlogo
Ctrl-z
如果我們從命令列啟動一個圖形程式,但是忘了在命令後加字元 “&”, 將一個程序從前臺移動到後臺也是很方便的。
訊號
kill PID/jobspec
在使用 Ctrl-c 的情況下,會發送一個叫做 INT(Interrupt,中斷)的訊號;
當使用 Ctrl-z 時,則傳送一個叫做 TSTP(Terminal Stop,終端停止)的訊號。
kill [-signal] PID...
如果在命令列中沒有指定訊號,那麼預設情況下,傳送 TERM(Terminate,終止)訊號
編號 | 名字 | 含義 |
---|---|---|
1 | HUP | 掛起(Hangup)。這是美好往昔的殘留部分,那時候終端機通過電話線和調變解調器連線到 遠端的計算機。這個訊號被用來告訴程式,控制的終端機已經“結束通話”。 通過關閉一個終端會話,可以展示這個訊號的作用。在當前終端執行的前臺程式將會收到這個訊號並終止。 許多守護程序也使用這個訊號,來重新初始化。這意味著,當一個守護程序收到這個訊號後, 這個程序會重新啟動,並且重新讀取它的配置檔案。Apache 網路伺服器守護程序就是一個例子。 |
2 | INT | 中斷。實現和 Ctrl-c 一樣的功能,由終端傳送。通常,它會終止一個程式。 |
9 | KILL | 殺死。這個訊號很特別。儘管程式可能會選擇不同的方式來處理髮送給它的 訊號,其中也包含忽略訊號,但是 KILL 訊號從不被髮送到目標程式。而是核心立即終止 這個程序。當一個程序以這種方式終止的時候,它沒有機會去做些“清理”工作,或者是儲存工作。 因為這個原因,把 KILL 訊號看作最後一招,當其它終止訊號失敗後,再使用它。 |
15 | TERM | 終止。這是 kill 命令傳送的預設訊號。如果程式仍然“活著”,可以接受訊號,那麼 這個它會終止。 |
18 | CONT | 繼續。在一個停止訊號後,這個訊號會恢復程序的執行。 |
19 | STOP | 停止。這個訊號導致程序停止執行,而不是終止。像 KILL 訊號,它不被 傳送到目標程序,因此它不能被忽略。 |
其他常用訊號列表
編號 | 名字 | 含義 |
---|---|---|
3 | QUIT | 退出 |
11 | SEGV | 段錯誤(Segmentation Violation)。如果一個程式非法使用記憶體,就會發送這個訊號。也就是說, 程式試圖寫入記憶體,而這個記憶體空間是不允許此程式寫入的。 |
20 | TSTP | 終端停止(Terminal Stop)。當按下 Ctrl-z 組合鍵後,終端傳送這個訊號。不像 STOP 訊號, TSTP 訊號由目標程序接收,且可能被忽略。 |
28 | WINCH | 改變視窗大小(Window Change)。當改變視窗大小時,系統會發送這個訊號。 一些程式,像 top 和 less 程式會響應這個訊號,按照新視窗的尺寸,重新整理顯示的內容。 |
通過 killall 命令給多個程序傳送訊號
killall [-u user] [-signal] name...
給匹配特定程式或使用者名稱的多個程序傳送訊號。
其他與程序相關的命令
命令名 | 命令描述 |
---|---|
pstree | 輸出一個樹型結構的程序列表(processtree),這個列表展示了程序間父/子關係。 |
vmstat | 輸出一個系統資源使用快照,包括記憶體,交換分割槽和磁碟 I/O。 為了看到連續的顯示結果,則在命令名後加上更新操作延時的時間(以秒為單位)。例如,“vmstat 5”。 ,按下 Ctrl-c 組合鍵, 終止輸出。 |
xload | 一個圖形介面程式,可以畫出系統負載隨時間變化的圖形。 |
tload | terminal load與 xload 程式相似,但是在終端中畫出圖形。使用 Ctrl-c,來終止輸出。 |