From: http://www.startos.com/zhuanti/linux20101115a/index.html
1、 進(jìn)程分類
Linux 操作系統(tǒng)包括三種不同類型的進(jìn)程它們是:交互進(jìn)程、批處理進(jìn)程和守護(hù)進(jìn)程。每種進(jìn)程都有自己的特點(diǎn)和屬性。交互進(jìn)程是由一個Shell啟動的進(jìn)程。交互進(jìn)程既可以在前臺運(yùn)行,也可以在后臺運(yùn)行。批處理進(jìn)程和終端沒有聯(lián)系,是一個進(jìn)程序列。系統(tǒng)守護(hù)進(jìn)程是Linux系統(tǒng)啟動時啟動的進(jìn)程,并在后臺運(yùn)行。
說明:
值得一提的是守護(hù)進(jìn)程總是活躍的,一般是后臺運(yùn)行,守護(hù)進(jìn)程一般是由系統(tǒng)在開機(jī)時通過腳本自動激活啟動或超級管理用戶root來啟動。比如在 Fedora中,我們可以定義httpd 服務(wù)器的啟動腳本的運(yùn)行級別,此文件位于/etc/init.d目錄下,文件名是httpd,/etc/init.d/httpd 就是httpd服務(wù)器的守護(hù)程序,當(dāng)把它的運(yùn)行級別設(shè)置為3和5時,當(dāng)系統(tǒng)啟動時,它會跟著啟動。由于守護(hù)進(jìn)程是一直運(yùn)行著的,所以它所處的狀態(tài)是等待請求處理任務(wù)。
2 進(jìn)程的屬性
進(jìn)程ID(PID):是唯一的數(shù)值,用來區(qū)分進(jìn)程。
父進(jìn)程和父進(jìn)程的ID(PPID);
啟動進(jìn)程的用戶ID(UID)和所歸屬的組(GID);
進(jìn)程狀態(tài):狀態(tài)分為運(yùn)行R、休眠S、僵尸Z;
進(jìn)程執(zhí)行的優(yōu)先級;
進(jìn)程所連接的終端名;
進(jìn)程資源占用:比如占用資源大小(內(nèi)存、CPU占用量);
3、 父進(jìn)程和子進(jìn)程
他們的關(guān)系是管理和被管理的關(guān)系,當(dāng)父進(jìn)程終止時,子進(jìn)程也隨之而終止。但子進(jìn)程終止,父進(jìn)程并不一定終止。比如httpd服務(wù)器運(yùn)行時,我們可以殺掉其子進(jìn)程,父進(jìn)程并不會因?yàn)樽舆M(jìn)程的終止而終止。在進(jìn)程管理中,當(dāng)我們發(fā)現(xiàn)占用資源過多,或無法控制的進(jìn)程時,應(yīng)該殺死它,以保護(hù)系統(tǒng)的穩(wěn)定安全運(yùn)行。
4、進(jìn)程管理
Linux管理進(jìn)程的最好方法就是使用命令行下的系統(tǒng)命令。Linux下面的進(jìn)程涉及的命令有比如ps、kill、pgrep等工具。
監(jiān)視進(jìn)程命令
1、ps(process status命令)
使用方式:ps [options] [--help]
功能說明:顯示瞬間行程 (process) 的動態(tài)
主要參數(shù):
ps 的參數(shù)非常多, 在此僅列出幾個常用的參數(shù)并大略介紹含義
-A 列出所有的行程
-w 顯示加寬可以顯示較多的資訊
-au 顯示較詳細(xì)的資訊
-aux 顯示所有包含其他使用者的行程
范例: ps 如下圖:表示的順序?yàn)椋哼M(jìn)程標(biāo)號、設(shè)備、狀態(tài)、啟動時間、命令。

2、pstree命令
使用方式:pstree [-a] [-c] [-h|-Hpid] [-l] [-n] [-p] [-u] [-G|-U] [pid|user]
pstree -V
功能說明:將所有行程以樹狀圖顯示, 樹狀圖將會以 pid (如果有指定) 或是以 init 這個基本行程為根 (root) ,如果有指定使用者 id , 則樹狀圖會只顯示該使用者所擁有的行程
主要參數(shù):
-a 顯示該行程的完整指令及參數(shù), 如果是被記憶體置換出去的行程則會加上括號。
-c 如果有重覆的行程名, 則分開列出 (預(yù)設(shè)值是會在前面加上 *)。
范例: pstree 如下圖:

說明:命令對程序名稱相同的會自動合并,所有"|-auto---4*[{automount}]"即表示系統(tǒng)中有4個automount進(jìn)程產(chǎn)生的子進(jìn)程。
3、top命令
使用方式:top [-] [d delay] [q] [c] [S] [s] [i] [n] [b]
功能說明:實(shí)時顯示 process 的動態(tài)
主要參數(shù):
d : 改變顯示的更新速度,或是在交談式指令列( interactive command)按 s
q : 沒有任何延遲的顯示速度,如果使用者是有 superuser 的權(quán)限,則 top 將會以最高的優(yōu)先序執(zhí)行
c : 切換顯示模式,共有兩種模式,一是只顯示執(zhí)行檔的名稱,另一種是顯示完整的路徑與名稱S : 累積模式,會將己完成或消失的子行程 ( dead child process ) 的 CPU time 累積起來
s : 安全模式,將交談式指令取消, 避免潛在的危機(jī)
i : 不顯示任何閑置 (idle) 或無用 (zombie) 的行程
n : 更新的次數(shù),完成后將會退出 top
b : 批次檔模式,搭配 "n" 參數(shù)一起使用,可以用來將 top 的結(jié)果輸出到檔案內(nèi)
范例:顯示更新十次后退出 ; top -n 10 如下圖:
使用者將不能利用交談式指令來對行程下命令 :
top -s 如下圖:

PID(Process ID):進(jìn)程標(biāo)志號,是非零正整數(shù)。
USER:進(jìn)程所有者的用戶名。
PR:進(jìn)程的優(yōu)先級別。
NI:進(jìn)程的優(yōu)先級別數(shù)值。
VIRT:進(jìn)程占用的虛擬內(nèi)存值。
RES:進(jìn)程占用的物理內(nèi)存值。
SHR:進(jìn)程使用的共享內(nèi)存值。
STAT:進(jìn)程的狀態(tài),其中S表示休眠,R表示正在運(yùn)行,Z表示僵死狀態(tài),N表示該進(jìn)程優(yōu)先值是負(fù)數(shù)。
%CPU:該進(jìn)程占用的CPU使用率。
%MEM:該進(jìn)程占用的物理內(nèi)存和總內(nèi)存的百分比。
TIME:該進(jìn)程啟動后占用的總的CPU時間。
COMMAND:進(jìn)程啟動的啟動命令名稱,如果這一行顯示不下,進(jìn)程會有一個完整的命令行。
使用kill 命令控制進(jìn)程
使用方式: kill [-s <信息名稱或編號>][程序] 或 kill [-l <信息編號>]
功能說明: 刪除執(zhí)行中的程序或工作。kill可將指定的信息送至程序,預(yù)設(shè)的信息為 SIGTERM(15),可將指定程序終止。若仍無法終止該程序,可使用SIGKILL(9)信息嘗試強(qiáng)制刪除程序。程序或工作的編號可利用ps指令或 jobs指令查看。
主要參數(shù):
-l <信息編號> 若不加<信息編號>選項(xiàng),則-l參數(shù)會列出全部的信息名稱。
-s <信息名稱或編號> 指定要送出的信息。
說明:
進(jìn)程是Linux系統(tǒng)中一個非常重要的概念。Linux是一個多任務(wù)的操作系統(tǒng),系統(tǒng)上經(jīng)常同時運(yùn)行著多個進(jìn)程。我們不關(guān)心這些進(jìn)程究竟是如何分配的,或者是內(nèi)核如何管理分配時間片的,所關(guān)心的是如何去控制這些進(jìn)程,讓它們能夠很好地為用戶服務(wù)。
kill命令的工作原理:
向Linux系統(tǒng)的內(nèi)核發(fā)送一個系統(tǒng)操作信號和某個程序的進(jìn)程標(biāo)識號,然后系統(tǒng)內(nèi)核就可以對進(jìn)程標(biāo)識號指定的進(jìn)程進(jìn)行操作。
例如在top命令中,我們看到系統(tǒng)運(yùn)行許多進(jìn)程,有時就需要使用kill中止某些進(jìn)程來提高系統(tǒng)資源。在講解安裝和登陸命令時,曾提到系統(tǒng)多個虛擬控制臺的作用是當(dāng)一個程序出錯造成系統(tǒng)死鎖時,可以切換到其它虛擬控制臺工作關(guān)閉這個程序。此時使用的命令就是 kill,因?yàn)閗ill是大多數(shù)Shell內(nèi)部命令可以直接調(diào)用的。
實(shí)例:使用kill命令
第一步:執(zhí)行find命令(#find asdfg /)。
說明:很費(fèi)時間的命令。
第二步:查看find對應(yīng)的進(jìn)程號。(ps aux|grep find) 如圖:
顯示地項(xiàng)目共分為四項(xiàng),依次為PID(進(jìn)程ID)、TTY(終端名稱)、TIME(進(jìn)程執(zhí)行時間)、COMMAND(該進(jìn)程地命令行輸入)。

第三步:使用kill殺死find進(jìn)程(#kill 8269)。
進(jìn)程優(yōu)先級設(shè)定(nice命令)
使用方式:nice [-n adjustment] [-adjustment] [--adjustment=adjustment] [--help] [--version] [command [arg...]
功能說明:以更改過的優(yōu)先序來執(zhí)行程序, 如果未指定程序, 則會顯示出目前的排程優(yōu)先序, 內(nèi)定的 adjustment 為 10, 范圍為 -20 (最高優(yōu)先序) 到 19 (最低優(yōu)先序)
主要參數(shù):
-n adjustment, -adjustment, --adjustment=adjustment 皆為將該原有優(yōu)先序的增加 adjustment
--help 顯示求助訊息
--version 顯示版本資訊
范例: 將 ls 的優(yōu)先序加 1 并執(zhí)行 : nice -n 1 ls
注意 : 優(yōu)先序 (priority) 為操作系統(tǒng)用來決定 CPU 分配的參數(shù),Linux 使用『回合制(round-robin)』的演算法來做 CPU 排程,優(yōu)先序越高,所可能獲得的 CPU時間就越多。
定期或規(guī)定時間內(nèi)執(zhí)行Linux程序
1、定期時間內(nèi)執(zhí)行Linux程序(crontab)
使用方式: crontab [ -u user ] file
crontab [ -u user ] { -l | -r | -e }
功能說明:crontab 是用來讓使用者在固定時間或固定間隔執(zhí)行程序之用,換句話說,也就是類似使用者的時程表。-u user 是指設(shè)定指定 user 的時程表,這個前提是你必須要有其權(quán)限(比如說是 root)才能夠指定他人的時程表。如果不使用 -u user 的話,就是表示設(shè)定自己的時程表。
主要參數(shù):
-e : 執(zhí)行文字編輯器來設(shè)定時程表,內(nèi)定的文字編輯器是 VI,如果你想用別的文字編輯器,則請先設(shè)定 VISUAL 環(huán)境變數(shù)來指定使用那個文字編輯器(比如說 setenv VISUAL joe)
-r : 刪除目前的時程表
-l : 列出目前的時程表
時程表的格式如下 :
f1 f2 f3 f4 f5 program
其中 f1 是表示分鐘,f2 表示小時,f3 表示一個月份中的第幾日,f4 表示月份,f5 表示一個星期中的第幾天。program 表示要執(zhí)行的程序。
當(dāng) f1 為 * 時表示每分鐘都要執(zhí)行 program,f2 為 * 時表示每小時都要執(zhí)行程序,其馀類推
當(dāng) f1 為 a-b 時表示從第 a 分鐘到第 b 分鐘這段時間內(nèi)要執(zhí)行,f2 為 a-b 時表示從第 a 到第 b 小時都要執(zhí)行,其馀類推
當(dāng) f1 為 */n 時表示每 n 分鐘個時間間隔執(zhí)行一次,f2 為 */n 表示每 n 小時個時間間隔執(zhí)行一次,其馀類推
當(dāng) f1 為 a, b, c,... 時表示第 a, b, c,... 分鐘要執(zhí)行,f2 為 a, b, c,... 時表示第 a, b, c...個小時要執(zhí)行,其馀類推。
說明:使用者也可以將所有的設(shè)定先存放在檔案 file 中,用 crontab file 的方式來設(shè)定時程表。
例子1:每月每天每小時的第 0 分鐘執(zhí)行一次 /bin/ls :
0 * * * * /bin/ls
例子2:在 12 月內(nèi), 每天的早上 6 點(diǎn)到 12 點(diǎn)中,每隔 20 分鐘執(zhí)行一次 /usr/bin/backup :
0 6-12/3 * 12 * /usr/bin/backup
注意 :當(dāng)程序在你所指定的時間執(zhí)行后,系統(tǒng)會寄一封信給你,顯示該程序執(zhí)行的內(nèi)容,若是你不希望收到這樣的信,請?jiān)诿恳恍锌找桓裰蠹由?> /dev/null 2>&1 即可 。
2、規(guī)定時間內(nèi)執(zhí)行Linux程序(at命令)
使用方式:at -V [-q queue] [-f file] [-mldbv] TIME
功能說明:at 可以讓使用者指定在 TIME 這個特定時刻執(zhí)行某個程序或指令,TIME 的格式是 HH:MM其中的 HH 為小時,MM 為分鐘,甚至你也可以指定 am, pm, midnight, noon, teatime(就是下午 4 點(diǎn)鍾)等口語詞。
如果想要指定超過一天內(nèi)的時間,則可以用 MMDDYY 或者 MM/DD/YY 的格式,其中 MM 是分鐘,DD 是第幾日,YY 是指年份。另外,使用者甚至也可以使用像是 now + 時間間隔來彈性指定時間,其中的時間間隔可以是 minutes, hours, days, weeks。
使用者也可指定 today 或 tomorrow 來表示今天或明天。當(dāng)指定了時間并按下 enter 之后,at 會進(jìn)入交談模式并要求輸入指令或程序,當(dāng)你輸入完后按下 ctrl+D 即可完成所有動作,至于執(zhí)行的結(jié)果將會寄回你的帳號中。
主要參數(shù):
-V : 印出版本編號
-q : 使用指定的佇列(Queue)來儲存,at 的資料是存放在所謂的 queue 中,使用者可以同時使用多個 queue,而 queue 的編號為 a, b, c... z 以及 A, B, ... Z 共 52 個
-m : 即使程序/指令執(zhí)行完成后沒有輸出結(jié)果, 也要寄封信給使用者
-f file : 讀入預(yù)先寫好的命令檔。使用者不一定要使用交談模式來輸入,可以先將所有的指定先寫入檔案后再一次讀入
-l : 列出所有的指定 (使用者也可以直接使用 atq 而不用 at -l)
-d : 刪除指定 (使用者也可以直接使用 atrm 而不用 at -d)
-v : 列出所有已經(jīng)完成但尚未刪除的指定
例子1: 三天后的下午 5 點(diǎn)鐘執(zhí)行 /bin/ls :
at 5pm +3 days /bin/ls
例子2: 三個星期后的下午 5 點(diǎn)鐘執(zhí)行 /bin/ls :
at 5pm +2 weeks /bin/ls
例子3: 明天的 17:20 執(zhí)行 /bin/date :
at 17:20 tomorrow /bin/date
例子4: 1999 年的最后一天的最后一分鐘印出 the end of world !
at 23:59 12/31/1999 echo the end of world !
其它系統(tǒng)管理命令
順序
|
命令
|
語法
|
功能
|
主要選項(xiàng)
|
1 |
man |
man [-k] [command_name] | 顯示參考手冊,提供聯(lián)機(jī)幫助信息。 | -k表示指定關(guān)鍵字查詢的有關(guān)命令。 |
2 | uname | umane [選項(xiàng)] | 顯示目前的版本信息。 | [-a|m|n|r|s|v|help|version] |
3 | date | date? [選項(xiàng)] | 可以用來顯示或設(shè)定系統(tǒng)的日期與時間。 | [-d|help|s|u|-version] |
4 | cal | cal? [選項(xiàng)]? [月] [年] | 顯示某年某月的日歷。 | -j顯示第幾天;-y顯示整年日歷 |
5 | pwd | pwd | 顯示目前所在目錄。 | ? |
6 | free | free? [選項(xiàng)] | 顯示內(nèi)存狀態(tài)。 | [-b|k|m|o|s|t|V] |
7 | last | last? [選項(xiàng)][賬號][終端] | 列出目前與過去系統(tǒng)登錄用戶信息。 | [-a|d|f|n|R|x] |
8 | shutdown | shutdown[選項(xiàng)][時間][警告信息] | 系統(tǒng)關(guān)機(jī)命令。 | [-c|f|F|h|k|n|r|t] |
9 | halt | halt [選項(xiàng)] | 選擇性關(guān)閉系統(tǒng)命令 | [-d|f|i|n|p|w] |
10 | reboot | rebioot [選項(xiàng)] | 重新開機(jī)命令。 | [-d|f|i|n|w] |
11 | init | init state | 改變系統(tǒng)狀態(tài)。 | [0-6|s/S] |
12 | runlevel | runlevel | 查看當(dāng)前系統(tǒng)所處運(yùn)行狀態(tài) | ? |
13 | login | login | 注冊進(jìn)入系統(tǒng)。 | ? |
14 | logout | logout | 用戶注銷。 | ? |
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
