cron.dの下にファイルを作って動かないとき。
とりあえず、実行ユーザー、実行ファイルのフルパスを指定してみる。
52 01 * * 3-5 root /usr/local/bin/hoge.sh
スクリプトのパスがどこに通っているかの確認。
where hoge.sh
cronがエラーなく動いているかどうかの確認。
/var/log/cron
cronを実行したときのhoge.shのエラー確認。
45 09 ** 3-5 hoge.sh >>/tmp/logging.log 2>>/tmp/error.log
シェルスクリプト内のコマンドにパスが通っていないときがある。
例えば
peke.sh
というスクリプトがあるとする。
./peke.sh
とするとちゃんと動く。
でもcronに登録すると一部のコマンドが動かない時がある。
cronで動かす時と自分でログインして動かす時は環境変数が違ってしまう時があるんだそうだ。
そういう時は、スクリプト中のコマンドをフルパスで書く。
(which iptablesなどとしてコマンドのパスを探す。)
とか、
crontabの先頭の行に
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin
と、ありったけの使っていいパスを指定する。
(できれば確認をして最低限に抑えた方がいいのだろうけど。)
0 件のコメント:
コメントを投稿