1

crontabファイルを。で開きましたcrontab -e。次に、これをcrontabに追加しました。

SHELL=/bin/bash

@hourly /home/ec2-user/utilities/create-snapshots.sh

次に、ファイルを保存しました。約1時間後、cronログが表示されます。

CROND[1876]: (ec2-user) CMD (/home/ec2-user/utilities/create-snapshots.sh)
CROND[1877]: (root) CMD (/usr/lib64/sa/sa1 -S DISK 1 1)
CROND[1892]: (root) CMD (run-parts /etc/cron.hourly)
run-parts(/etc/cron.hourly)[1892]: starting 0anacron
run-parts(/etc/cron.hourly)[1901]: finished 0anacron

ただし/home/ec2-user/utilities/create-snapshots.sh、データベースのスナップショットが作成されたため、コマンドが実際に実行されなかったことはわかっていますが、実際には実行されませんでした。/home/ec2-user/utilities/create-snapshots.shコマンドをターミナルで直接実行すると、コマンドの実行は機能します。

cronにそのコマンドを1時間ごとに実行させるにはどうすればよいですか?

4

2 に答える 2

5

私の精神的なデバッグ能力は、create-shapshots.shスクリプト実行されたことを教えてくれますが、環境変数の問題(おそらく)のために失敗しましたPATH。Cronは通常、クリーンアウトされた環境でコマンドを実行します。シェルプロンプトで通常実行するものよりもはるかに少ないものです。

于 2012-09-17T05:15:26.250 に答える
0

あなたの環境変数はあなたが思っているものではないかもしれないというグレッグに同意します。前述のように、それは空のスレートから始まります。変数をデバッグするには、set コマンドを使用できます。

set >~/some-file.txt

.bash_profile ファイルを含めることができますが、PATH や HOME などがない場合はあまり役に立ちません。まず、これらの基本的な変数をセットアップする必要があります (ただし、HOME はユーザー cron スクリプト用に設定する必要があります)。bash プロファイル スクリプトをロードするには、$HOME が適切に設定されていると仮定して、次のようにします。

. ~/.bash_profile

ただし、anacrontab のマニュアル ページを読むと、次のように表示されます。

@period_name delay job-identify command

The period_name can only be set to monthly at the present time.
This will ensure jobs are only run once a month, no matter the
number of days in this month, or the previous month.

したがって、@hourly が機能しないように感じます。明らかに、マニュアルページが嘘をついている可能性があります。私は Anacron をあまり使用していないので、100% 確信はありません。現在の Cron セットアップは、Anacron を自動的に使用して、実行されるはずだったスクリプトを実行し、コンピューターの電源が入っていなかったために何らかの理由で失敗しました。

于 2012-12-15T22:09:45.103 に答える