前臺(tái)與后臺(tái)進(jìn)程
每個(gè)進(jìn)程都可能以兩種方式存在:前臺(tái)(Foreground)與后臺(tái)(Background)。所謂前臺(tái)進(jìn)程,就是用戶目前在屏幕上進(jìn)行操作的進(jìn)程;而后臺(tái)進(jìn)程則是實(shí)際上在操作,但由屏幕上并無法看到的進(jìn)程。
通常使用后臺(tái)方式執(zhí)行的情況是,當(dāng)此進(jìn)程較為復(fù)雜且必須執(zhí)行較長的時(shí)間時(shí),我們會(huì)將它置于后臺(tái)中執(zhí)行,以避免占用屏幕的時(shí)間過久,而無法執(zhí)行其他的進(jìn)程。
系統(tǒng)的服務(wù)一般都是以后臺(tái)進(jìn)程的方式存在的 ,而且都會(huì)駐留在系統(tǒng)中,直到關(guān)機(jī)時(shí)才結(jié)束,這類服務(wù)我們也稱為 Daemon ,在Linux系統(tǒng)中就包含許多Daemon。
判斷Daemon 最簡(jiǎn)單的方法就是由名稱來判斷,多數(shù)Daemon都是由 服務(wù)名稱加上d來產(chǎn)生的 ,例如HTTP服務(wù)的Daemon為httpd。
顯示目前進(jìn)程 ps
ps命令是Process Status的縮寫,它的功能是查看目前的系統(tǒng)中有哪些進(jìn)程正在執(zhí)行,以及它們的執(zhí)行情況。您可以直接輸入ps命令名稱而不加任何參數(shù)。
如果直接執(zhí)行ps命令,則會(huì)出現(xiàn)類似以下的信息:
[root@ns1 ~]# ps
|
上述ps命令顯示的數(shù)據(jù)共分為4個(gè)字段,它們的說明如下:
PID:進(jìn)程標(biāo)識(shí)(Process ID),系統(tǒng)即是憑著這個(gè)編號(hào)來識(shí)別及處理此進(jìn)程的。
TTY:Teletypewriter,登錄的終端機(jī)編號(hào)。
TIME:此進(jìn)程所消耗的CPU時(shí)間。
CMD:正在執(zhí)行的命令或進(jìn)程名稱。
上述的信息是ps命令顯示的最基本數(shù)據(jù)畫面,其實(shí)ps支持非常多的參數(shù)。因?yàn)閜s是非常常用的命令,所以本書在此將說明其中較為重要的參數(shù)的使用方法。
顯示詳細(xì)信息 ps -l
如果需要更詳細(xì)的系統(tǒng)數(shù)據(jù),可以使用-l(Long)參數(shù),它除了顯示ps命令的4個(gè)基本字段數(shù)據(jù)外,另外還有10個(gè)額外數(shù)據(jù)可供查看,這些額外數(shù)據(jù)的內(nèi)容及說明如下:
[root@ns1 ~]# ps -l
|
F :該進(jìn)程狀態(tài)的標(biāo)志(Flag),表12-1是較常用的標(biāo)志及說明。
表12-1 進(jìn)程狀態(tài)標(biāo)志說明
標(biāo) 志 名 稱標(biāo) 志 代 碼說 明
ALIGNWARN001打印警告信息
STARTING002進(jìn)程正在初始化
EXITING004系統(tǒng)正在關(guān)機(jī)
PTRACED010表示已調(diào)用ptrace(0)
TRACESYS020跟蹤System Call
FORKNOEXEC040已執(zhí)行fork但沒有執(zhí)行exec
SUPERPRIV100以root身份執(zhí)行
DUMPCORE200內(nèi)核轉(zhuǎn)儲(chǔ)
SIGNALED400以Signal結(jié)束進(jìn)程
S :進(jìn)程狀態(tài)代碼(Process State Codes),可用的代碼及說明如表12-2所示。
表12-2 進(jìn)程狀態(tài)代碼說明
代碼說明
D不可中斷的閑置狀態(tài)(Uninterruptible Sleep)
R可執(zhí)行的
S閑置狀態(tài)
(續(xù))
代碼說明
T跟蹤或停止
Z已死亡的進(jìn)程(Zombie)
W沒有足夠的內(nèi)存頁可分配
<高優(yōu)先級(jí)的進(jìn)程
N低優(yōu)先級(jí)的進(jìn)程
L有內(nèi)存頁分配并鎖在內(nèi)存內(nèi)
UID :進(jìn)程執(zhí)行者的ID(User ID)。
PPID :父進(jìn)程標(biāo)識(shí)(Parent Process ID)。
PRI :進(jìn)程執(zhí)行的優(yōu)先級(jí)(Priority)。
NI :nice,是指進(jìn)程執(zhí)行優(yōu)先級(jí)的nice值,負(fù)值表示其優(yōu)先級(jí)較高。
SZ :Size,進(jìn)程所占用的內(nèi)存大小,以KB為單位。
WCHAN :Waiting Channel,表示進(jìn)程或系統(tǒng)調(diào)用等待時(shí)的地址。
ps -u
另一種顯示詳細(xì)內(nèi)容信息的參數(shù)為-u(User),它的主要功能是將進(jìn)程數(shù)據(jù)以用戶的格式來顯示,以下是部分的示例內(nèi)容以及新的字段說明:
[root@ns1 ~]# ps -u
|
顯示后臺(tái)進(jìn)程 ps -x
其實(shí),系統(tǒng)中目前執(zhí)行的進(jìn)程絕不是只有輸入ps命令時(shí)的數(shù)目,事實(shí)上有為數(shù)更多的進(jìn)程以后臺(tái)的方式來執(zhí)行,它們一般都是系統(tǒng)的服務(wù)(Daemon),或是用戶利用&來處理的進(jìn)程。如果要查看這些后臺(tái)進(jìn)程,可以使用-x參數(shù),以下是部分的示例內(nèi)容:
[root@ns1 ~]# ps -x
|
有經(jīng)驗(yàn)的管理員一般都習(xí)慣一次查看所有用戶執(zhí)行的進(jìn)程以及后臺(tái)進(jìn)程,此時(shí)可以使用-aux參數(shù)。
雖然 -aux參數(shù)可以提供最詳盡的信息,但是有時(shí)并不是很容易找出所需的信息,因此我們可 配合使用grep命令,以縮小查看的范圍。以下是找出與用戶jack有關(guān)的進(jìn)程及其內(nèi)容的示例:
[root@ns1 ~]# ps -aux | grep jack
|
....
結(jié)束執(zhí)行中的進(jìn)程
如果某個(gè)進(jìn)程執(zhí)行到一半時(shí)中斷,或消耗太多的系統(tǒng)資源,例如內(nèi)存數(shù)量及CPU時(shí)間,此時(shí)您可以考慮使用kill命令來將指定的信號(hào)傳送到該進(jìn)程。
雖然kill命令可以傳送的信號(hào)有很多種,但以SIGTERM(15)或SIGKILL(9)居多,它們都是用來結(jié)束進(jìn)程執(zhí)行的。您可以使用-l參數(shù)來查看所有可供傳送的信號(hào),如圖12-2所示。
![]() |
圖12-2 kill命令可傳送的信號(hào) |
因?yàn)閗ill命令在使用時(shí)必須通過進(jìn)程ID來指定信號(hào)的接收進(jìn)程,所以需先以ps命令來得知要傳送的PID,之后再使用kill命令加上指定的PID來送出終止信號(hào)以結(jié)束進(jìn)程。
以下示例假設(shè)要終止PID 16525進(jìn)程的執(zhí)行:
[root@ns1 ~]# kill 16525
因?yàn)橛行┻M(jìn)程會(huì)捕捉某些信號(hào),所以當(dāng)直接指定PID無法終止其進(jìn)程時(shí),您可以使用-9參數(shù),它代表送出SIGKILL信號(hào)。
[root@ns1 ~]# kill -9 16525
如果使用-9參數(shù)仍無法結(jié)束該進(jìn)程,還可以嘗試使用-15參數(shù)來送出SIGTERM信號(hào);如果連-15參數(shù)都無法成功地刪除此進(jìn)程,則只有重新啟動(dòng)這一方法了。
通常,極難刪除的進(jìn)程大多與系統(tǒng)運(yùn)行有關(guān)聯(lián),如果刪除后可能會(huì)影響系統(tǒng)的性能或執(zhí)行,因此最好不要養(yǎng)成直接使用-9和-15參數(shù)的習(xí)慣。
[root@ns1 ~]# kill -15 16525
kill命令另外一個(gè)常用的時(shí)機(jī)是,當(dāng)對(duì)某個(gè)Daemon進(jìn)行修改或設(shè)置后,您可以使用-HUP(Hang Up)參數(shù)來重新啟動(dòng)該進(jìn)程,這可減少重新啟動(dòng)計(jì)算機(jī)的時(shí)間。
[root@ns1 ~]# kill -HUP 16525
本文為張軍原創(chuàng)文章,轉(zhuǎn)載無需和我聯(lián)系,但請(qǐng)注明來自張軍的軍軍小站,個(gè)人博客http://www.dlhighland.cn
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

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