電子書籍の厳選無料作品が豊富!

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)です。

A 回答 (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情報をパッケージングして何かを配布する時にはこの方法の方がインストール漏れが無く確実に感じます。
    • good
    • 1

>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
  :
  :
    • good
    • 1
この回答へのお礼

ありがとうございます。
属性については755を設定しており問題ないと思います。

エラーメールがroot宛てに届いているのですが
それを見ても原因がわかりません。

もう一度見直しみます。

お礼日時:2005/02/22 13:52

まず原則として・・


cronの設定を/var下にあるファイルに直接書き込んで、というのは、あまりお薦めじゃありません。(システムによってディレクトリが変わるので)No1の方もおっしゃってますが、crontab -eで書きましょう。

本題・・
cronから起動された場合、カレントディレクトリは、そのユーザのホームになります。則ち、rootのcronは、rootのホームで起動されます。なので、カレントディレクトリを意識していないと、動かないことがあり得ます。
また(私も完全には理解してないのですが)、おそらくシェルの関係で、普段はシェルのrcファイルで設定してある環境変数が、cronで起動された時は設定されていなかったりもします。ためしに、当該スクリプトにでenvで、環境変数一覧をどこかに保存してみるといいです。
    • good
    • 1

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

    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!