
Ubuntu日本語フォーラム

ログインしていません。
お世話になっております。
現在crontabでいくつか設定しているのですが、端末から手動で実行するときちんと実行されるのですが、cronに設定すると機能していないようなのです。単純なスクリプトでいろいろ試してみたのですが、その他のプログラムはきちんと動いています。端末で実行できるのにcronで実行しないというのにはどんな原因が考えられるのでしょうか?phpやperlなどで単純にcronの実行時間を記録するようなものを置いてみましたが、きちんとスタンプされていました。
syslogなどのログでは正常に実行した…という感じでログが残っています。特にエラーは出ていない(他に何か参照するログがあるでしょうか?)と思います。
実行されないプログラム自体は非常に単純でrsyncを使ったバックアップ(差分コピー)です。もしかしたらcronに原因があるのではなくこのプログラム自体に問題があるのかもしれませんが、端末から手動で実行すると大丈夫なのでここでは(たぶん)問題はない筈です。
crontabでの設定は以下のようになっています。このcronのユーザーはrootです。
# m h dom mon dow command
0 */6 * * * php /home/myuser/public_html/test/php/time/time_stamp.php >/dev/null 2>&1
20 5 * * * bash /root/bin/backup/rysnc-system.sh >/dev/null 2>&1
何か怪しい点がありましたらご指摘ください。よろしくお願いします。
オフライン
# m h dom mon dow command
0 */6 * * * php /home/myuser/public_html/test/php/time/time_stamp.php >/dev/null 2>&1
20 5 * * * bash /root/bin/backup/rysnc-system.sh >/dev/null 2>&1
php、 bash をフルパスで書いたらどうなります?
また、出力を捨てずに、ファイルに出力してみては?
オフライン
こんばんは
何かcrontabの書式がちがう気がするのですが。
ふつうは"~.sh"の1行目に#!/bashと書いて、実行シェルを指定しますので、コマンドの先頭に"php"とか"bash"入らないのでは。
http://www.k4.dion.ne.jp/~mms/unix/linu … ontab.html
cron.txtに自動実行させたい内容を書いておき、「#crontab cron.txt」で登録すれば登録時エラーが表示されるとのことです。
http://blog.f14s.biz/?p=1399
オフライン
#3の funatogawaさん による投稿:
ふつうは"~.sh"の1行目に#!/bashと書いて、実行シェルを指定しますので、コマンドの先頭に"php"とか"bash"入らないのでは。[/url]
別に 1行目に #! /bin/bash などと書かれていなくても、bash のコマンドラインにスクリプトファイル名を渡して実行させることもできるので、特に間違いというわけではありません
可能性としては #2 で si さんがすでに指摘しているように、cron からの起動には成功しているが、スクリプトの中でエラーが出ているという気がします
出力を /dev/null に捨てないようにして、/var/log/syslog に落とされるログを確認してください
オフライン
返信遅くなりました。様々な解決法ありがとうございます。
>siさん
フルパスでやってみるとうまく動きました。以前はフルパスじゃなくても動いていたのですが、やはりどこかの設定が違うのでしょうか?
SHELL=/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/var/lib/gems/1.8/bin
RAILS_ENV=production
というのを追加したらフルパスじゃなくても動くようになりました。
>funatogawa
cron.txtに書いてから読み込ませる方法は大変参考になりました。ありがとうござます。script自体には問題がなかったので特にエラーメッセージはなかったのですがこれから活用してみたいと思います。
>ryさん
syslogには、正常に起動しましたみたいなことになっているのです。
Jan 27 18:12:01 lily CRON[13665]: (root) CMD (bash /root/bin/backup/rsync-system.sh)
といった感じです。フルパスの場合も、
Jan 27 18:12:01 lily CRON[13665]: (root) CMD (/bin/bash /root/bin/backup/rsync-system.sh)
と同様でした。ただフルパスじゃないと中身が実行されていない…ということでしたが。。。
一応解決しましたが、まだまだ勉強不足のような気がしております。
いろいろありがとうございます!
オフライン