web-dev-qa-db-ja.com

"cronジョブで一致する` `"を探しているときに予期しないEOF

RedHat 4.1を実行しているサーバーにcronジョブを設定して、MySQLデータベースをバックアップしてから、AmazonS3にアップロードします。目標は、曜日に対応するフォルダーに.bz2ファイルをドロップすることです。ただし、デーモンから次のエラーがメールで送信されます。

Cronジョブ:

[email protected]
0       4       *       *       *       mysqldump --all-databases  -ubackups -pPassword | gzip > all-databases.sql.bz2; s3cmd put all-databases.sql.bz2 s3://backup_exampleserver.com/mysql_backups/`date +%A`/all-databases.sql.bz2

エラーメッセージ:

/bin/sh: -c: line 0: unexpected EOF while looking for matching ``'
/bin/sh: -c: line 1: syntax error: unexpected end of file
7

コマンドのパーセント記号をバックスラッシュでエスケープする必要があります:\%、それ以外の場合は、コマンドの終わりとして解釈されます。

crontab(5)から:

The command field (the rest of the line) is the command to be run.  The
entire command portion of the line, up to a newline or % character, will
be executed by /bin/sh or by the Shell specified in the Shell variable of
the crontab.  Percent signs (‘%’) in the command, unless escaped with a
backslash (‘\’), will be changed into newline characters, and all data
after the first ‘%’ will be sent to the command as standard input.
14
Sergey Vlasov

これを変える:

`date +%A`

に:

`date +\%A`
3
quanta