- ベストアンサー
crontabで実行されない部分がある・・・?
MySQLに登録されたユーザ名とアカウント名でLinuxのユーザを作る シェルスクリプトを作りました。 ルートにおいてあって、 ./test.sh とすると、 1.useraddでユーザが作られる 2.MySQLの予約テーブルから登録済テーブルにユーザ情報を書き換える 3.FTPユーザ登録がされる というものです。 これをcrontabで走らそうと思いました。 su -でルートになって、 crontab -e * * * * * /test.sh としたのですが、2.3は実行されました。 しかし1.のユーザ作成がされませんでした。 スクリプトいじった記憶はないですが一応確認ということで、 crontabをとめて手動でやってみたところ、1.2.3全て実行されました。 コードも悪くないし、crontab登録もルートでやったのに上手く行かなくて、 途方に暮れています。 何か思いつく原因があったら御教授ください。 お願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
スクリプト内で使用しているコマンドへのパスを絶対で指定してみてください。 ファイルを扱っているならばファイルへのパスも絶対で指定してください。
その他の回答 (3)
- notnot
- ベストアンサー率47% (4900/10358)
crontabで動く時のPATHは特に指定しなければ /usr/bin:/bin です。 useraddは普通 /usr/sbin/ にあるので、フルパスで書かないと動かないです。 そもそも、cronジョブでエラーになればユーザー(この場合root)にメールが送られているはずです。そこにエラーメッセージが出ています。rootでmailコマンド。
お礼
ありがとうございます。 エラーメッセージの読み方等良く分かりませんが、 エラーの解析はサーバ管理の肝になる部分なので、 しっかり勉強しようと思います。 ありがとうございました。
- ham_kamo
- ベストアンサー率55% (659/1197)
直接の回答ではないですが、 /test.sh > /test.log 2>&1 としてエラーログが出力されてないか調べてみてはいかがでしょうか。
お礼
ありがとうございます。 手動でエラーログを出力させる方法があるんですね。 調べて次回使ってみようと思います。
* * * * * root /test.sh とかじゃなかったっけ?書き方
お礼
ありがとうございます。 crontab -u root -lで見たところちゃんとrootで動くように なっていました。
お礼
ありがとうございます。 絶対パスで通したところ、上手く行きました。 その後、削除すべきファイルが削除されない問題が出ましたが、 そこも同じように解決できました。 ありがとうございました。