やりたいこと
SSHでサーバーにログインして以下のようなコマンドを叩くとする。
nohup some_command &
するとnohupコマンドにより、SSHを切断してもsome_commandの処理はバックグラウンドで動き続ける。
これをcronで自動実行したい
かきかた
そのまま書くのはダメで
some_command >/dev/null 2>&1 &
と書かなければならない。
ポイントは2つあって
- nohupはいらない
- コマンドの後ろに
>/dev/null 2>&1
が必要
なぜかって言うとcronの仕様らしく、
crontab により実行されたコマンドから出力が行われると、 cron デーモンは通常その出力結果を登録されたメールアドレス宛に配送します。 そのため、cronスクリプトがバックグラウンドで行われていても、そのプロセスがopenしているファイルディスクリプタがcloseされない限り、cronは次の処理に移行しないのです。
だそうです。とりあえずうまく行ったからいいや(