[RHCE] Process Manage

PROCESS

當使用者執行一個程式或一個命令時,就會產生一個程序。PID是程序的ID,PPID就是該程序的父程序ID,UID是執行這個程序的使用者ID。Stat是呈續執行的狀態,分別為休眠、執行、刪除、以及殭屍程序。所謂的殭屍(Zombie)程序是指父程序呼叫的子程序,在父程序結束時因bug而未結束。這個子程序就會獨自運作到程序結束,這種程序就稱為殭屍程序。程序之間使用signal溝通,代號從1~64號,其中比較重要的有1為重啟,9為強制終止,15為停止。
1336836644-3349511538.jpg-RHCE程序管理

使用 #ps 以及 #top 指令可以查詢目前系統上的程序。#ps 是靜態的查詢,常用的參數如下:
a: 目前帳號權限可見程序。
u: 查看使用者以及更多的資訊。
x: 系統所有程序。
1336837005-1765389231.jpg-RHCE程序管理

#top 為動態查詢,使用者可以設定更新秒數自動即時更新。#top -d [秒數] 可以設定更新的間隔時間。
1336837013-2820717595.jpg-RHCE程序管理

先前提到程序之間是使用signal溝通的,signal有1~64號動作。可以使用 #kill -l 查詢所有動作編號,以及 #kill [signal編號] [PID] 對程序下命令。
1336838203-3414460223.jpg-RHCE程序管理

PRIORITY

#top 指令中可以看到每個程序的PR值,也就是優先權,預設都是20。另外還有NI值,NI值為-20~19之間,但一般的使用者只能使用0~19。優先權的算法為PR值加上NI值,所得的值越低優先權越高。

使用者調整程序優先權時,是針對NI值進行設定,設定時會將PR值回復成20。#nice -n [NI值] [指令] 可針對將要執行的程序設定優先權。#renice -n [NI值] [PID] 可針對已執行的程序設定優先權。

SCHEDULING

排程的功能為在指定的時間執行指定的程序。主要有兩種排程工具,atd以及crond。atd是針對一次性的程序進行排程,而crond是針對週期性的程序進行排程。

atd的指令為 #at ,輸入 #at [時間] 後,在輸入所要執行的工作,再按下Ctrl + D結束設定。atd在設定時間上可使用 now +1 min 或 now +3 days 或 4pm +1 week 等方式。#atg 可查詢目前的排程, #atrm [編號] 可刪除排程。/etc/at.allow為使用者白名單,/etc/at.deny為使用者黑名單。黑名單與白名單只能存在一者,系統會先偵測白名單,而一般情況下使用黑名單。/var/spool/at為排程所存放的目錄。

crond的指令為 #crondtab。crond與atd設定上的不同在於crond會開啟一個文件讓使用者編輯。輸入 #crondtab -e 會開啟編輯畫面,#crondtab -l 可以查詢,#crondtab -r 可以刪除。編輯時每個排程的格式為,分 時 日 月 星期 指令,以空白作區隔。分跟時是從0開始,分為0~59,時為0~23,其他皆從1開始。*表示每個間隔都要執行,如 0 3 * * * command_a,表示每天的3點執行command_a。多個時間點可用,區隔,如 0 3,15 * * * command_b,表示每天的3點跟15點執行command_b。可以設定間隔多久執行,如 0 3 */5 * * command_c,表示每隔五天的3點執行command_c。如果日跟星期都有指定,只要符合其中一項命令就會執行。/etc/cron.allow為使用者白名單,/etc/cron.deny為使用者黑名單。如同atd,黑名單與白名單只能存在一者,系統會先偵測白名單,而一般情況下使用黑名單。/var/spool/cron/username為排程所存放的目錄。

留言