3

次の一連のコマンドを実行して、MySQL データベースのバックアップを作成しようとしています。

を使用して crontab にコマンドを追加しようとすると、crontab -e「crontab ファイルにエラーが発生しました。インストールできません」というエラーが表示され、再試行するかどうか尋ねられます。

mkdir /home/mysql-backup/`date '+%m-%d-%Y'`; mysql -s -r -e 'show databases' | while read db; do mysqldump $db -r /home/mysql-backup/`date '+%m-%d-%Y'`/${db}.sql; done; rm -r -f `date --date="1 week ago" +%m-%d-%Y`; du -k |sort -n > output; mail -s "MySQL Backups" "steven@brightbear.net" < output

このファイルで変更する必要があるものはありますか? または、スクリプト ファイルを作成し、それを cron から呼び出すことを検討する必要があります。

どうぞよろしくお願いいたします。

4

3 に答える 3

6

もちろん、そのスクリプトを与えた場合、crontab -eそれは同意しません。crontab ファイルの行は、スクリプトをいつ実行するかを示す 5 つのフィールドで始まる必要があります。これは、crontab の manpage で読むことができます

一方、最近のほとんどの Linux ディストリビューションには、毎時 (/etc/cron.hourly)、毎日 (/etc/cron.daily) などに実行する機能があらかじめ設定されています。スクリプトを配置するだけで、はるかに簡単になります。適切なディレクトリのファイルに保存すると、選択した時間ラスターで実行されます。追加の利点は、これらのファイルでは、すべてを 1 行に詰め込む必要がないことです。

于 2013-02-08T00:40:44.027 に答える
0

crontab(5)のマニュアルページから、パーセント記号(%)には特別な意味があるように見えるので、おそらく問題が発生している場所です。

はい、コマンドを別のシェルスクリプトに入れて、crontab行から呼び出す必要があります。これにより、crontabファイルの読み取りもはるかに簡単になり、スクリプトを適切にフォーマットして、保守が容易になります。そして、その方法でcrontabとは別にテストすることができます。

于 2013-02-08T00:51:34.353 に答える
0

はい; スタイルの問題として、SQL コマンドをシェル スクリプトに入れ、シェル スクリプトを から実行することをお勧めしますcron。(そして、Anew が指摘しているように、コマンド シーケンスは、コメントを付けて複数の行に分割すると、保守/デバッグが容易になります。crontab) man crontabコマンドをいつ実行するかを指定するフィールドを確認して追加します。

于 2013-02-08T00:40:01.167 に答える