3つのcronjobエントリ(crontab -l
)があります。最初のエントリは、仮想マシンのLVMバックアップを作成するPerlスクリプトで、他の2つはmysqldump
を実行するshファイルです。
しかし、私はcrontab -e
をルートとして編集し(Sudo su
最初)、これが私の最初のジョブエントリです
# Run daily backup of my job at 3:15 [relation ä11]
15 3 * * * Perl /opt/AUTO_BACKUP/virt-backup.pl --action=dump --date --vm=SERVER2
ただし、バックアップディレクトリに出力を作成したり、cronログにエントリを作成したりすることはありません。 cronログファイルには、他のshジョブのエントリのみが見つかりました。
ただし、コマンドPerl /opt/AUTO_BACKUP/virt-backup.pl --action=dump --date --vm=SERVER2
をルートターミナルにコピーすると、チャームのように機能します。したがって、crontab
をルートとして編集するため、適切なユーザーのみがジョブを実行する必要があります。また、ログにエラーはありません。
Perl
エントリをpath/to/Perl
に変更します。多くの場合、Perl
やpython
などのコマンドは実際には環境ベースのものであり、PATHにあります。 cronにはそのPATHがないため、crontabで絶対パスを使用するのが最善です。
Cronジョブとしてではなくシェルから実行されたときにスクリプトが実行される理由は、通常、そこにある異なるenvです。
Cronjobを変更して、envを保存します。/tmp/envを使用して
env | sort> /tmp/env
/ tmp/envが到着すると、現在のenvとdiffします。
env | sort | diff - /tmp/env
HTH