搜尋此網誌
RHCE - 程序管理
PROCESS
當使用者執行一個程式或一個命令時,就會產生一個程序。
PID是程序的ID,PPID就是該程序的父程序ID,UID是執行這個程序的使用者ID。
Stat是呈續執行的狀態,分別為休眠、執行、刪除、以及殭屍程序。
所謂的殭屍(Zombie)程序是指父程序呼叫的子程序,在父程序結束時因bug而未結束。
這個子程序就會獨自運作到程序結束,這種程序就稱為殭屍程序。
程序之間使用signal溝通,代號從1~64號,其中比較重要的有1為重啟,9為強制終止,15為停止。
使用 #ps 以及#top 指令可以查詢目前系統上的程序。
#ps 是靜態的查詢,常用的參數如下
a:目前帳號權限可見程序。
u:查看使用者以及更多的資訊。
x:系統所有程序。
#top為動態查詢,使用者可以設定更新秒數自動即時更新。
#top -d [秒數] 可以設定更新的間隔時間。
先前提到程序之間是使用signal溝通的,signal有1~64號動作。
可以使用 #kill -l 查詢所有動作編號,以及 #kill [signal編號] [PID] 對程序下命令。
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為排程所存放的目錄。