Linux プロセスをデーモン化するには、さまざまなトリックがあります。つまり、ターミナルを閉じた後にコマンドを実行するようにします。
nohup
はこの目的で使用され、fork()
/setsid()
の組み合わせを C プログラムで使用して、それ自体をデーモン プロセスにすることができます。
&
上記はLinuxデーモンに関する私の知識でしたが、今日、ターミナルを終了しても、コマンドの最後で開始されたプロセスが実際には終了しないことに気付きました。
$ while :; do echo "hi" >> temp.log ; done &
[1] 11108
$ ps -ef | grep 11108
username 11108 11076 83 15:25 pts/0 00:00:05 /bin/sh
username 11116 11076 0 15:25 pts/0 00:00:00 grep 11108
$ exit
(after reconnecting)
$ ps -ef | grep 11108
username 11108 1 91 15:25 pts/0 00:00:17 /bin/sh
username 11130 11540 0 15:25 pts/0 00:00:00 grep 11108
どうやら、プロセスの PPID が 1 に変わったようです。これは、プロセスがデーモン化されたことを意味します。
これは私の知識と矛盾しています。それでは&
十分ではなくnohup
、プロセス「デーモン」に他のトリックを使用する必要があります。
誰がこのデーモン化を行っているか知っていますか?
CentOS 6.3 ホストを使用していますが、putty/cygwin/sshclient で同じ結果が得られました。