「... の検索中に予期しない EOF エラーが発生しました。」エラーの原因は何ですか? [コピー]

「... の検索中に予期しない EOF エラーが発生しました。」エラーの原因は何ですか? [コピー]

Godaddy 共有ホスティング Cpanel アカウントのすべてのデータベースをエクスポートする cron ジョブの実行に問題があります。しかし、以下のコマンドで構文エラーを見つけるのに問題があります。

私のAWS Ec2でも同じコマンドが実行されています。

mysql -N -ubackup -pt -e 'show databases' | while read dbname; do mysqldump -ubackup -p123 --complete-insert -N "$dbname" > /home/test/sqlbackups/'$(date +"%Y-%m-%d")-$dbname'.sql;done

メール受信エラー:

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

ベストアンサー1

Crontabコマンドは、エスケープされていないすべてのエントリを%改行文字で置き換えます。これはから来たものですcrontab(5)手動私のシステムでは:

コマンドフィールド(行の残りの部分)は実行するコマンドです。行の完全なコマンド部分(改行文字または複数文字まで)は、crontab変数で指定されたシェルによって実行されます%/bin/shSHELLコマンドのパーセント記号(%\は、バックスラッシュ()でエスケープしない限り改行文字に変更され、最初の後のすべてのデータは%標準入力としてコマンドに送信されます。

crontabコマンドは次のようにする必要があります。

mysql -N -ubackup -pt -e 'show databases' | while read dbname; do mysqldump -ubackup -p123 --complete-insert -N "$dbname" > /home/test/sqlbackups/"$(date +"\%Y-\%m-\%d")-$dbname".sql;done

$(...)ここでは、以前に一重引用符で囲まれた内容(したがってシェルで拡張されていない内容)も修正しました。

通常、すべての重要なクローン操作を独自のスクリプトに入れてから予約するのが最善です。これにより、そのようなことをよりよく制御でき、特定のタスクに適した通訳者を選択することができます(たとえば、代わりにksh)。また、cronデーモンが送信するすべての電子メールの件名をより読みやすくします。bashsh

おすすめ記事