|
ログアウトと同時にちゃんと SSH の接続が切れるようになりました。
Python で Unix デーモンを書くときは通常 こんなふう にするのだけど、これだと SSH 経由でデーモンを起動したとき、exit しても SSH の接続が切れなくなってしまいます。端末を見ているプロセスが残っていると SSH が接続を切ってくれないためであります。
ちゃんと接続を切るようにするには、上記リンク先のコメントにもあるように os.dup2 を使って標準入出力と標準エラー出力のファイル・ディスクリプタをクローズしなくちゃなりません。
out_log = file('/out/log/file/name', 'a+')
err_log = file('/err/log/file/name', 'a+', 0)
dev_null = file('/dev/null', 'r')
os.dup2(out_log.fileno(), sys.stdout.fileno())
os.dup2(err_log.fileno(), sys.stderr.fileno())
os.dup2(dev_null.fileno(), sys.stdin.fileno())
これは Python だけの事情じゃないので、他言語でプログラミングする場合も同様。ちなみにシェル・スクリプトの場合は こんな感じ 。
|