• 締切済み

cronでシェルスクリプトが実行されない

Linuxでファイルのバックアップを取るため backup.shというシェルスクリプトを組み、コマンドから実行する場合問題ないことを 確認しています。ところがcronに設定し自動実行すると内容が実行されておりません。 /var/log/cronを確認したところ時間通り実行されているというログは残っています。 /var/spool/cron/にrootというファイルを作成し 00 23 * * * /BACKUP/backup.shを実行させたいのです。 なぜ、手動の場合は問題がないのにcronで設定すると問題が生じるのでしょう? もし、お分かりの方は教えてください。 OSはRed Hat Linux release 8.0 (Psyche)です。

みんなの回答

  • interplay
  • ベストアンサー率39% (108/273)
回答No.4

再度。。Interplayです。 >/var/spool/cron/にrootというファイルを作成し まず/etc/cron.d/配下ですよね? っということとその下のrootのファイルにも実行権付いてますか?こちらにも実行権が必要です。 >00 23 * * * /BACKUP/backup.sh ちなみにこれだと実行ユーザの指定がないので駄目です。 00 23 * * * root /BACKUP/backup.sh とすればroot権限でシェルは実行されます。 出来ればエラーの標準出力への吐き出しを捨てる為に 00 23 * * * root /BACKUP/backup.sh >> /dev/null などとしておくと良いです。 基本的にはcrontabコマンドで設定する事が標準ですが、わたしもcron情報をパッケージングして何かを配布する時にはこの方法の方がインストール漏れが無く確実に感じます。

  • interplay
  • ベストアンサー率39% (108/273)
回答No.3

>var/log/cronを確認したところ時間通り実行されているというログは残っています。 っと言う事なのでcrondは認識していると思われます。 >/var/spool/cron/にrootというファイルを作成し >00 23 * * * /BACKUP/backup.shを実行させたいのです。 っと言う事なので /BACKUP/backup.sh のファイル属性を確認しましょう。 ひょっとして手動実行って $ sh /BACKUP/backup.sh とかってやってます? ファイル属性「-rwxr-xr-x」って具合に実行可能ファイルの「x」は実行させたいユーザで付いてますか? 又、ファイル内では最初の行に実行させたいシェルをしてしていますか? 例) #!/bin/sh   :   :

gahau
質問者

お礼

ありがとうございます。 属性については755を設定しており問題ないと思います。 エラーメールがroot宛てに届いているのですが それを見ても原因がわかりません。 もう一度見直しみます。

noname#43437
noname#43437
回答No.2

まず原則として・・ cronの設定を/var下にあるファイルに直接書き込んで、というのは、あまりお薦めじゃありません。(システムによってディレクトリが変わるので)No1の方もおっしゃってますが、crontab -eで書きましょう。 本題・・ cronから起動された場合、カレントディレクトリは、そのユーザのホームになります。則ち、rootのcronは、rootのホームで起動されます。なので、カレントディレクトリを意識していないと、動かないことがあり得ます。 また(私も完全には理解してないのですが)、おそらくシェルの関係で、普段はシェルのrcファイルで設定してある環境変数が、cronで起動された時は設定されていなかったりもします。ためしに、当該スクリプトにでenvで、環境変数一覧をどこかに保存してみるといいです。

  • mendokusa
  • ベストアンサー率13% (359/2726)
回答No.1

crontab -e で編集してないとか。

関連するQ&A