ラベル

Server (108) work (77) Idea (68) Car (31) PC (29) DAW (28) other (19) MakingWEBsite (18) 趣味 (18) health (13) CentOS (11) drupal (11) 山 (9) android (4) スマホ (4) communication (3) drupal7 (3) hint (3) meno (3) モバイル (3) 歯医者 (3) 第二種電気工事士 (3) 英語 (3) PC Server (2) drupal8 (2) ms access (2) uwp C# (2) めし (2) 整備 (2) 音楽 (2) MIDI (1) diy (1) 会計 (1) 動画再生 (1) 生活 (1) 郵便 (1) 食べ物 (1)

2013年9月28日土曜日

cron 動かないとき。

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 件のコメント:

コメントを投稿