1. 程式人生 > >程序【TLCL】

程序【TLCL】

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,來終止輸出。