0

crontab -e次のように使用して cronjob を設定しました。

12 22 * * * /usr/bin/mysql >> < FILE PATH >

これは mysql コマンドを実行しません。空のファイルを作成するだけです。一方、mysqldump コマンドは cron 経由で実行されています。問題は何でしょうか?

4

2 に答える 2

2

確かmysqlに、MySQL へのインタラクティブなインターフェイスです。

mysqlを実行して出力をファイルに追加しているだけだと仮定すると>>、最初に標準入力から読み取ろうとすると、おそらくファイルの終わりを取得して終了します。

おそらく、次のようなコマンドを処理することを考えたいと思うかもしれません:

12 22 * * * /usr/bin/mysql
                -u me
                -p never_you_mind
                -e "select * from my_table"
                -D my_database
                >>/home/me/output_file

(読みやすくするために複数行に分割されていますが、1 行にする必要があります)。

余談ですがps、プロセスの実行中にパスワードが表示される可能性があるため、これはあまり安全ではありません。これは一例にすぎないので、あまり心配していませんが、my.cnfこのパスをたどる場合は、パスワードを適切に保護されたファイルに保存することを検討してください。

MySQLコマンドを実行するシェルスクリプトを実行するという点ではcron、それも同様に機能するはずです。1 つの選択肢は、ヒアドキュメントを使用することです。

/usr/bin/mysql -u me -p never_you_mind -D my_database <<EOF
    select * from my_table
    select * from my_other_table where id = 74
EOF
于 2012-08-24T05:18:11.947 に答える