シェルがシグナルをそのジョブにのみ送信できるが、そのジョブではないプロセスにシグナルを送信できないというのは正しいですか?
disown
は、シェルのジョブリストからジョブを移動します。それは、所有されていないプロセスがその親シェルからすべてのシグナル(SIGHUPだけでなく)を受信しないことを意味しますか?それでも他の信号を受信する場合は、なぜそうですか?
自分が所有する任意のプロセスにいつでもシグナルを送信できます。シェルはおそらくそれ自体では機能しません。
テストが簡単:
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
$