crontabが上手く動かなくて躓いてしまったので、問題解決用のメモを残しておきます。
症状としては、プロンプトでコマンドを入力すると普通に実行出来るのに、crontabで実行させようとしたらなぜか動かない、といった場合。以下は自分の環境に合わせて、ubuntu server 8.4.3 でのやり方です。まあ、どのLinuxでもだいたい同じだと思いますが。
1、crontabの記述が合っているか確かめる
2、cronbが動いていることを確かめる、再起動してみる
表示されないようなら、crondを起動(再起動)しましょう。
3、crontabのシェルを変更し、エラーをファイルに出力する
一応補足すると、 「>」 はリダイレクトで、標準出力先を変更します。
「2」は標準エラーで「1」は標準出力なので、「2>&1」により標準エラーの出力先を標準出力と同じにします。
4、エラーを1つずつ潰していく、(実行させたいものが自作のスクリプトなら)文字コード(改行コード)を疑う
残りは3で出力させたエラーを見て1つずつ解決していくだけですが、そもそも普通にコマンドで入力したら動いていたものであれば、原因は限られていると思います。
ひっかかりやすいものとして、Windowsで作ったスクリプトをLinuxに持っていった場合等で、文字コードがLinuxの環境のものと違う、改行コードがLFではなくてCR+LFを使っている等です。
これらに関しては、Windowsの時点でサクラエディタ等を使うことで、文字コードや改行コードを指定することが出来ます。
また、スクリプト中でファイルを読み込む時は、絶対パスじゃないといけないような感じです。
どうでしょうか。
症状としては、プロンプトでコマンドを入力すると普通に実行出来るのに、crontabで実行させようとしたらなぜか動かない、といった場合。以下は自分の環境に合わせて、ubuntu server 8.4.3 でのやり方です。まあ、どのLinuxでもだいたい同じだと思いますが。
1、crontabの記述が合っているか確かめる
# m h dom mon dow command時間設定のパラメータが足りているか一応確認しておきましょう
0 12 * * * /home/myhome/myscript.py >/dev/null 2>&1
2、cronbが動いていることを確かめる、再起動してみる
$ less /var/log/syslog | grep CRONcrontabが動作しているようなら、動作された時刻やコマンド等が表示されるはずです。
表示されないようなら、crondを起動(再起動)しましょう。
$ sudo /etc/init.d/cron restart
3、crontabのシェルを変更し、エラーをファイルに出力する
SHELL=/bin/zshデフォルトのbourne shell(?)の出すエラーは少しわかりにくいので、zshのように親切なものを使い、実行時のエラーを記録します。
# m h dom mon dow command
0 12 * * * /home/myhome/myscript.py >/home/myhome/log.txt 2>&1
一応補足すると、 「>」 はリダイレクトで、標準出力先を変更します。
「2」は標準エラーで「1」は標準出力なので、「2>&1」により標準エラーの出力先を標準出力と同じにします。
4、エラーを1つずつ潰していく、(実行させたいものが自作のスクリプトなら)文字コード(改行コード)を疑う
残りは3で出力させたエラーを見て1つずつ解決していくだけですが、そもそも普通にコマンドで入力したら動いていたものであれば、原因は限られていると思います。
ひっかかりやすいものとして、Windowsで作ったスクリプトをLinuxに持っていった場合等で、文字コードがLinuxの環境のものと違う、改行コードがLFではなくてCR+LFを使っている等です。
これらに関しては、Windowsの時点でサクラエディタ等を使うことで、文字コードや改行コードを指定することが出来ます。
また、スクリプト中でファイルを読み込む時は、絶対パスじゃないといけないような感じです。
どうでしょうか。
![]() | 新Linux/UNIX入門 林 晴比古 ソフトバンククリエイティブ 売り上げランキング : 5352 Amazonで詳しく見る |
- 関連記事
-
- LinuxにCUIでDropboxをインストールする (2011/03/06)
- crontabが上手く動かない時のヒント (2011/03/03)
この記事のトラックバックURL
http://creatornote.blog87.fc2.com/tb.php/24-fcdfc299
この記事にトラックバックする(FC2ブログユーザー)
この記事にトラックバックする(FC2ブログユーザー)
この記事へのトラックバック