Process
Disowned “Stopped”作業流程仍出現在流程表中
我想知道為什麼在取消停止的程序後,它仍然出現程序表
PING www.google.com (74.125.130.106) 56(84) bytes of data. 64 bytes from 74.125.130.106: icmp_seq=1 ttl=44 time=182 ms 64 bytes from 74.125.130.106: icmp_seq=2 ttl=44 time=209 ms 64 bytes from 74.125.130.106: icmp_seq=3 ttl=44 time=213 ms 64 bytes from 74.125.130.106: icmp_seq=4 ttl=44 time=122 ms ^Z [1]+ Stopped ping www.google.com anshul@anshul-Inspiron-N5010:~/Documents/workspace/shell$ jobs -l [1]+ 10319 Stopped ping www.google.com anshul@anshul-Inspiron-N5010:~/Documents/workspace/shell$ disown bash: warning: deleting stopped job 1 with process group 10319 anshul@anshul-Inspiron-N5010:~/Documents/workspace/shell$ ps -ef | grep 10319 anshul 10319 9717 0 23:35 pts/25 00:00:00 ping www.google.com
為什麼仍然顯示程序10319,應該刪除它,對嗎?
不,該過程已停止,而不是被殺死。所以
ps
還是會顯示的。如果你執行
ps ax
,你會看到它的狀態是T
。在這種狀態下,該程序在收到 SIGCONT 之前什麼都不做,然後它將繼續執行(如果您fg
在終端中鍵入,您將看到該程序從它停止的點重新開始,因此在您的情況下,下一個icmp_seq
將為 5)。**編輯:**我忘記了這
disown
部分。由於您否認了該過程,因此它不再出現在jobs
. 由於這個原因,你不能fg
。但是,它仍然存在於狀態的ps
輸出中T
。因此,正如您所說,您仍然可以使用kill -sigcont <PID>
. 然而,即使你發送了一個 SIGCONT,你也不能取消它,這意味著你不能讓它在你的終端的前台執行。