Hostmonster.comでのホスティングから、6種類のcronジョブを実行しています。 cronjobが実行されると、スクリプトの出力が記載されたメールが届きます。
電子メールの形式は次のとおりです。
差出人:Cron Daemon 件名:Cron/ramdisk/bin/php5 -c /home5/username/scheduled/optimize_mysql.bash
この問題は、電子メールの件名により、電子メールがどのcronjobに関連しているかを読み取るのが非常に困難になることです。
Cronjobメールの件名を変更して読みやすくする方法はありますか?
例えば:
差出人:Cron Daemon 件名:MySQLデータベースの最適化
私のシステム(ほとんどのDebian)では、crontab-entryと呼ばれるスクリプト/プログラムからのすべての出力は、cronを開始したaccount@localhost
に電子メールで送信されます。これらのメールには、あなたのような件名があります。
電子メールを受信する場合は、それ自体は出力のないスクリプトを記述します。しかし、代わりにすべての出力をテキストファイルに入れます。
そして
mail -s 'your subject' adress@where < textfile
あなたはそれをあなたが望む方法で受け取ります。
または、sh noopコマンド(:)を使用します
0 9-17 * * 1-5 : Queue Summary; PATH=/usr/sbin qshape
対象はまだだらしないように見えますが、少なくとも説明的であり、無関係なスクリプトは必要ありません。
Cronジョブの出力を直接メールにパイプして、件名を入力できます。 2>&1
構文は、通常であれば表示されなくなるエラー出力を送信します。
mycmd 2>&1 | mail -s "mycmd output" myname
出力とstderrを 'mailx -E'にパイプすることにより、コマンド出力(存在しない場合は送信しない)を送信するcrondの役割を引き継ぎます。例えば:
0 * * * * your-command 2>&1 | mailx -E -s "Descriptive Subject" $LOGNAME
Mailxの「-E」オプションは、crond自体と同様に、送信する出力がない場合はメールを送信しないため、ニースです。
別の解決策は、適切なコマンドを呼び出す必要な件名行を含むシェルスクリプトを記述することです。あなたの例では、これは次のようになります:
#Optimize_MySQL_Database.sh
/ramdisk/bin/php5 -c /home5/username/scheduled/optimize_mysql.bash
Crontabファイルで設定することにより、パスにbinディレクトリを含めることができます。
これを試してください-コマンドラインで次のコードを実装してください---
/usr/local/bin/php -q /path /hostname/foldername/Page-You-want-to-execute \
| **mail -s "*SUBJECT*" [email protected].**