2009-12-30
cronの設定で標準出力のリダイレクトの記述の有無によってプロセスの起動の仕方が変わる
今まで気付かなかった。
標準出力をリダイレクトしない下記のような設定をした場合
たとえばperlスクリプトをcronに登録するときに、このようにcrontabにリダイレクトを書かないと
[foo@sv01 ~]$ crontab -l * * * * * /home/foo/bar.pl
crontabに設定したコマンドがcrondの子プロセスとして起動される。
[foo@sv01 ~]$ ps -ef foo 23250 2413 0 11:25 ? 00:00:00 crond foo 23253 23250 0 11:25 ? 00:00:00 /usr/bin/perl /home/foo/bar.pl foo 23278 23159 0 11:25 pts/2 00:00:00 grep 23250 (他省略)
標準出力のリダイレクトを書いた場合
crontabにリダイレクトを書くと
[foo@sv01 ~]$ crontab -l * * * * * /home/foo/bar.pl > /dev/null 2>&1
shのプロセスがcrondの子プロセスになり、crontabに設定したコマンドはそのshプロセスの子プロセスになる。
[foo@sv01 ~]$ ps -ef foo 23570 2413 0 11:34 ? 00:00:00 crond foo 23571 23570 0 11:34 ? 00:00:00 /bin/sh -c /home/foo/bar.pl > /dev/null 2>&1 foo 23572 23571 0 11:34 ? 00:00:00 /usr/bin/perl /home/foo/bar.pl (他省略)
確認した環境:CentOS(4.4 x86-64/5.3 x86-64)
コメントを書く
トラックバック - http://d.hatena.ne.jp/satfy/20091230/1262142741