有兩個命令可以來查看,ps 和 jobs。區(qū)別在于 jobs 只能查看當(dāng)前終端后臺執(zhí)行的任務(wù),換了終端就看不見了。而ps命令適用于查看瞬時進(jìn)程的動態(tài),可以看到別的終端的任務(wù)。
先后起了兩個后臺運(yùn)行的進(jìn)程,使用jobs后都顯示出來了。 “+”代表最近的一個任務(wù)(當(dāng)前任務(wù)),“-”代表之前的任務(wù)。
只有在當(dāng)前終端命令行中敲下 nohup和& 時,jobs命令才能將它顯示出來。如果將他們寫到 .sh 腳本中,然后執(zhí)行腳本,是顯示不出來的
比如執(zhí)行下面這個腳本后,jobs顯示不出來:
這個是查看進(jìn)程常用的命令,不多說了。 a: 顯示所有程序 u: 以用戶為主的格式來顯示 x: 顯示所有程序,不以終端機(jī)來區(qū)分
在Linux系統(tǒng)中,ps(Process Status的縮寫)命令常常用來用來列出系統(tǒng)中當(dāng)前運(yùn)行的進(jìn)程。ps命令列出的是當(dāng)前那些進(jìn)程的快照,就是執(zhí)行ps命令的那個時刻的那些進(jìn)程, 如果想要動態(tài)的顯示進(jìn)程信息,就可以使用top命令。 要對進(jìn)程進(jìn)行監(jiān)測和控制,首先必須要了解當(dāng)前進(jìn)程的情況,也就是需要查看當(dāng)前進(jìn)程,而 ps 命令就是最基本同時也是非常強(qiáng)大的進(jìn)程查看命令。使用該命令可以確定有哪些進(jìn)程正在運(yùn)行和運(yùn)行的狀態(tài)、進(jìn)程是否結(jié)束、進(jìn)程有沒有僵死、哪些進(jìn)程占用了過多的資源等等。總之大部分信息都是可以通過執(zhí)行該命令得到的。 Linux上進(jìn)程有5種狀態(tài):
ps命令有很多參數(shù),具體如下:
ps -ef 與 ps aux Linux下顯示系統(tǒng)進(jìn)程的命令ps,最常用的有ps -ef 和ps aux。這兩個到底有什么區(qū)別呢?兩者沒太大差別,討論這個問題,要追溯到Unix系統(tǒng)中的兩種風(fēng)格,System V風(fēng)格和BSD 風(fēng)格,ps aux最初用到Unix Style中,而ps -ef被用在System V Style中,兩者輸出略有不同。現(xiàn)在的大部分Linux系統(tǒng)都是可以同時使用這兩種方式的。
ps -ef 是用標(biāo)準(zhǔn)的格式顯示進(jìn)程的、其格式如下:
ps aux 是用BSD的格式來顯示、其格式如下:
其中STAT狀態(tài)位常見的狀態(tài)字符有 D 無法中斷的休眠狀態(tài)(通常 IO 的進(jìn)程); R 正在運(yùn)行可中在隊(duì)列中可過行的; S 處于休眠狀態(tài); [ 注意:在前臺的進(jìn)程狀態(tài)為s+,而在后臺的sleep進(jìn)程狀態(tài)都是s ] T 停止或被追蹤; W 進(jìn)入內(nèi)存交換 (從內(nèi)核2.6開始無效); X 死掉的進(jìn)程 (基本很少見); Z 僵尸進(jìn)程; < 優(yōu)先級高的進(jìn)程 N 優(yōu)先級較低的進(jìn)程 L 有些頁被鎖進(jìn)內(nèi)存; s 進(jìn)程的領(lǐng)導(dǎo)者(在它之下有子進(jìn)程); l 多線程,克隆線程(使用 CLONE_THREAD, 類似 NPTL pthreads); + 后面有加號說明進(jìn)程是“位于在 前臺 進(jìn)程組”。也就是進(jìn)程可以使用鍵盤輸出;
(1)通過jobs命令查看jobnum,然后執(zhí)行 kill %jobnum
(2)通過ps命令查看進(jìn)程號PID,然后執(zhí)行 kill %PID
如果是前臺進(jìn)程的話,直接執(zhí)行 Ctrl+c 就可以終止了
將后臺中的命令調(diào)至前臺繼續(xù)運(yùn)行
如果后臺中有多個命令,可以先用jobs查看jobnun,然后用 fg %jobnum 將選中的命令調(diào)出。
(2)Ctrl + z 命令
將一個正在前臺執(zhí)行的命令放到后臺,并且處于暫停狀態(tài)
(3)bg命令
將一個在后臺暫停的命令,變成在后臺繼續(xù)執(zhí)行
如果后臺中有多個命令,可以先用jobs查看jobnum,然后用 bg %jobnum 將選中的命令調(diào)出繼續(xù)執(zhí)行。