web-dev-qa-db-ja.com

勘当された「停止」ジョブプロセスはまだプロセステーブルに表示されます

停止したプロセスの所有権を剥奪した後も、プロセステーブルが表示されている理由を知りたい

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が表示されているのですか、削除する必要がありますか?

4
Anveshak

いいえ、プロセスは停止であり、強制終了されません。したがって、psは引き続き表示します。

ps axを実行すると、ステータスがTであることがわかります。この状態では、プロセスはSIGCONTを受信するまで何もしません。その後、プロセスは実行を継続します(ターミナルでfgと入力すると、プロセスが停止した時点から再開するのがわかります。あなたの場合、次のicmp_seqは5)になります。

編集:disownの部分を忘れました。プロセスの所有権を剥奪したため、jobsには表示されなくなりました。このため、fgすることはできません。ただし、psステータスのT出力には引き続き存在します。あなたが言ったように、あなたはまだそれをkill -sigcont <PID>で続けることができます。それでも、SIGCONTを送信したとしても、それをun-disownすることはできません。つまり、フォアグラウンドで実行することはできません。あなたの端末の。

6
apaul