3

crontabに次のようなエントリがあります。

0 3 * * * pg_dump mydb | gzip > ~/backup/db/$(date +%Y-%m-%d).psql.gz

そのスクリプトは、シェルから実行すると完全に機能しますが、毎晩実行されているようには見えません。権限に問題があると思います。crontabが別のユーザーか何かで実行されている可能性があります。どうすればこれをデバッグできますか?私は共有ホスティング環境(WebFaction)です。

4

4 に答える 4

9

バックスラッシュを使用してcrontabエントリの「%」文字をエスケープする必要があります。crontab(5)のマンページを参照してください。私はまったく同じ問題を抱えていました。

例えば:

0 7 * * * mysqldump usblog | bzip2 -c > usblog.$(date --utc +\%Y-\%m-\%dT\%H-\%M-\%SZ).sql.bz2

cronエラーのメールを受け取りませんか?crontabに「MAILTO=you@example.com」を入れても違いますか?

pg_dumpまたはgzipがシステムのデフォルトパス上にない場合は、crontabにPATHを設定する必要がある場合もあります(したがって、「type pg_dump」を使用してそれらがどこにあるかを確認します。crontabは通常、デフォルトで/binまたは/usr/binのコマンドのみを実行します。 )。

于 2010-06-09T21:10:49.397 に答える
2

うまくいかないと言うとき、どういう意味ですか?ファイルがまったく生成されないのですか、それとも空ですか?

システムが正しく設定されている場合、コマンドが出力を生成すると、crontabから電子メールが送信されます。

このようなことを試して、crontabが実行されていることを確認してください。毎分ファイルにアクセスします。

* * * * * touch /tmp/foo

そして、ジェームズが述べたようにあなたの道をチェックしてください。

于 2010-06-09T21:00:01.917 に答える
2

crontabエンティティでは常にフルパスを使用してください。たとえば、/usr/bin/gzip。また、とのためにそれを行う必要がありpg_dumpますdate

于 2010-06-09T20:44:09.007 に答える
1

これが/etc/ crontabのようなものである場合は、ユーザーが含まれていることを確認してください。

0 3 * * * <user_goes_here> pg_dump mydb | gzip > ~/backup/db/$(date +%Y-%m-%d).psql.gz
于 2010-06-09T21:01:56.620 に答える