私のMySQLレプリケーションの状態に基づいて監視します。次のコードを使用して単純なシェルスクリプトを作成しました。
#!/bin/bash
date > /tmp/mysql_repl_status.txt
cd /usr/bin/
"/usr/bin/mysql" "-e" "SHOW SLAVE STATUS \G" >> /tmp/mysql_repl_status.txt
mail -s "Netspective MySQL replication status" [email protected] < /tmp/mysql_repl_status.txt
問題は、このスクリプトを手動で実行すると正しく機能しますが、cronを使用するとスクリプトが機能しないことです。
dateコマンドの出力のみを含むメッセージを取得するには、cronを使用します。私にとって何が問題ですか?
ベストアンサー1
さまざまな可能性:
Cronはcronで実行されているスクリプトに完全なユーザーエクスペリエンスを渡しません。したがって、$ PATHなどの変数は、cronで実行されているときとユーザー端末で実行されているときに異なる場合があります。
Cronでは各行の末尾に改行文字が必要なので、crontabファイルの末尾には必ず空行を残してください。
スクリプトにフルパスを指定し、それが起動することを確認することもできます。
#!/bin/bash
statfile=/tmp/mysql_repl_status.txt
/bin/date > $statfile
cd /usr/bin
/usr/bin/mysql -e "SHOW SLAVE STATUS \G" >> $statfile
/bin/mail -s "Netspective MySQL Replication Status" [email protected] < $statfile