シェルがジョブにのみシグナルを送信でき、ジョブ以外のプロセスにシグナルを送信できないことは正しいですか?
disown
シェルのタスクリストからタスクを移動します。これは、拒否されたプロセスが親シェルからすべての信号(SIGHUPだけでなく)を受信するわけではありませんか?それでも他の信号を受信している場合、なぜこれが起こりますか?
答え1
自分が所有するすべてのプロセスにいつでもシグナルを送信できます。シェル自体はおそらくそうではありません。
答え2
テストしやすい:
sleep
SIGUSR1を受け取ると死にます:
$ sleep 999 &
[1] 7399
$ kill -USR1 7399
$
[1]+ User defined signal 1 sleep 999
したがって、これを拒否し、それが生き残るかどうかを見てみましょう。
$ sleep 999 &
[1] 7396
$ disown %1
$ jobs
$ ps -fp 7396
UID PID PPID C STIME TTY TIME CMD
schaller 7396 7360 0 19:59 pts/0 00:00:00 sleep 999
$ kill -USR1 7396
$ ps -fp 7396
UID PID PPID C STIME TTY TIME CMD
$