Process

Disowned “Stopped”作業流程仍出現在流程表中

  • April 22, 2015

我想知道為什麼在取消停止的程序後,它仍然出現程序表

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,你也不能取消它,這意味著你不能讓它在你的終端的前台執行。

引用自:https://unix.stackexchange.com/questions/197954