放弃的“已停止”作业进程仍然出现在进程表中

放弃的“已停止”作业进程仍然出现在进程表中

我想知道为什么在否认已停止的进程后,它仍然出现在进程表中

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进程,应该删除吧?

答案1

不,过程是停止了,没有被杀。所以ps还是会表现出来。

如果你运行ps ax,你会看到它的状态是T。在这种状态下,该进程将不执行任何操作,直到收到 SIGCONT,然后它将继续运行(如果您fg在终端中键入,您将看到该进程从停止点再次开始,因此在您的情况下,下一个icmp_seq将为 5)。

编辑:我忘记了那disown部分。由于您否认了该过程,因此它不再出现在 中jobs。出于这个原因,你不能fg这样做。但是,它仍然存在于ps输出中并带有T状态。因此,正如您所说,您仍然可以使用kill -sigcont <PID>.然而,即使你发送了 SIGCONT,你也不能不否认它,这意味着您将无法使其在终端的前台运行。

相关内容