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