7-2 行程管理命令
內容:
了解行程的概念之後,接下來介紹幾種行程的管理命令。
7-2-1 行程操作命令 - ps
(A) 命令格式
使用者可利用 ps(Process status)命令來觀察目前系統有哪些行程正在執行,也可藉由 ps 來了解執行中行程的狀態如何,命令格式如下:
常用選項有:
-
pids:顯示指定 PID 的行程。
-
-e :顯示所有行程。
-
-l :長行顯示格式。
-
-f :顯示所有資訊。
-
-u :顯示某一使用者所產生的行程。
-
--sort:排序顯示。
以下藉由幾種操作範例來說明 ps 命令的使用方法,說明如下:
(B) 顯示自己的行程
使用者直接輸入 ps 命令後,可觀察到自己所下的行程如何,範例如下:
$ ps
PID TTY TIME CMD
30086 pts/0 00:00:00 bash
30145 pts/0 00:00:00 ps |
其中:
(C) 顯示系統的行程
使用者如欲觀察整個系統目前有哪些行程正在執行,可增加其選項為 ps –ef,範例如下:
$ ps -ef
ID PID PPID C STIME TTY TIME CMD
root 1 0 0 Nov04 ? 00:00:03 init
root 2 1 0 Nov04 ? 00:00:00 [keventd]
….
root 30085 30084 0 14:46 ? 00:00:00 [login]
tsnien 30086 30085 0 14:46 pts/0 00:00:00 -bash
tsnien 30225 30086 0 17:24 pts/0 00:00:00 ps -ef |
其中:
7-2-2 行程的關聯 - pstree
我們可利用 pstree 命令,以樹狀結構來觀察行程之間的關連(子行程與父行程),命令格式如下:
常用選項有:
-
-a:顯示每個行程完整路徑。
-
-h :在樹狀結構中標示目前執行的行程。
-
-l :長行顯示格式。
-
-n :使用行程識別碼排序。
-
-u :顯示使用者名稱。
操作範例如下:
[tsnien@Secure-1 ~]$ pstree -u
init─┬─acpid
├─atd
├─automount
├─avahi-daemon(avahi)───avahi-daemon
├─bluez-pin
├─bonobo-activati
├─clock-applet
├─crond
├─cups-config-dae
├─cupsd
├─dbus-daemon───{dbus-daemon}
├─dbus-daemon(dbus)───{dbus-daemon}
├─dbus-launch
├─eggcups
…… |
7-2-3 行程的中止 – kill
執行中的行程也可以被強迫中止,但一般使用者僅能刪除自己所產生的行程,不可以中止其他行程。而系統管理員(root 使用者)則享有最高權限,可中止任何行程,其中包含 init(PID=1)行程。中止行程的命令為 kill,格式如下:
# kill [ -s signal | -p ] [ -n ] [ -- ] pid ... |
常用選項有:
選項 n 表示強制性的多寡。行程在執行當中可能正在處理某一特定的工作,而此工作可能具有某些重要性的任務,它是否可以及時被刪除也可能需要思考一下。如果選項為 -9,則無論行程目前執行的工作有何等重要,都要及時被刪除,至於 -0 則需等待一段時間之後,才可以刪除該行程。中止行程必須指名欲被刪除行程的識別碼(PID),如果不知道的話,可利用 ps –ef 命令來查詢所欲刪除行程的 PID 號碼;強制刪除背景程式 vi(vim)的操作範例如下:
$ vi test.c & 【產生一個背景行程】
[1] 19553
$ ps 【顯示自己的行程】
PID TTY TIME CMD
19341 pts/85 00:00:00 bash
19553 pts/85 00:00:00 vim
$ kill -9 19553 【刪除某一行程】
$ ps 【顯示刪除結果】
PID TTY TIME CMD
19341 pts/85 00:00:00 bash
19555 pts/85 00:00:00 ps
[1]+ Killed vim test.c |
|