web-dev-qa-db-ja.com

Cronjobメールの件名を変更する方法

Hostmonster.comでのホスティングから、6種類のcronジョブを実行しています。 cronjobが実行されると、スクリプトの出力が記載されたメールが届きます。

電子メールの形式は次のとおりです。

差出人:Cron Daemon 
件名:Cron/ramdisk/bin/php5 -c /home5/username/scheduled/optimize_mysql.bash

この問題は、電子メールの件名により、電子メールがどのcronjobに関連しているかを読み取るのが非常に困難になることです。

Cronjobメールの件名を変更して読みやすくする方法はありますか?

例えば:

差出人:Cron Daemon 
件名:MySQLデータベースの最適化
51
justinl

私のシステム(ほとんどのDebian)では、crontab-entryと呼ばれるスクリプト/プログラムからのすべての出力は、cronを開始したaccount@localhostに電子メールで送信されます。これらのメールには、あなたのような件名があります。

電子メールを受信する場合は、それ自体は出力のないスクリプトを記述します。しかし、代わりにすべての出力をテキストファイルに入れます。

そして

mail -s 'your subject' adress@where < textfile

あなたはそれをあなたが望む方法で受け取ります。

11
Michèle

または、sh noopコマンド(:)を使用します

0 9-17 * * 1-5    : Queue Summary; PATH=/usr/sbin qshape

対象はまだだらしないように見えますが、少なくとも説明的であり、無関係なスクリプトは必要ありません。

56
Anthony

Cronジョブの出力を直接メールにパイプして、件名を入力できます。 2>&1構文は、通常であれば表示されなくなるエラー出力を送信します。

mycmd 2>&1 | mail -s "mycmd output" myname
22
Mark Harrison

出力とstderrを 'mailx -E'にパイプすることにより、コマンド出力(存在しない場合は送信しない)を送信するcrondの役割を引き継ぎます。例えば:

0 * * * * your-command 2>&1 | mailx -E -s "Descriptive Subject" $LOGNAME

Mailxの「-E」オプションは、crond自体と同様に、送信する出力がない場合はメールを送信しないため、ニースです。

13
Alexis Huxley

別の解決策は、適切なコマンドを呼び出す必要な件名行を含むシェルスクリプトを記述することです。あなたの例では、これは次のようになります:

#Optimize_MySQL_Database.sh

/ramdisk/bin/php5 -c /home5/username/scheduled/optimize_mysql.bash

Crontabファイルで設定することにより、パスにbinディレクトリを含めることができます。

2
kbk7173

これを試してください-コマンドラインで次のコードを実装してください---

/usr/local/bin/php -q /path /hostname/foldername/Page-You-want-to-execute \
   | **mail -s "*SUBJECT*" [email protected].**
  • これはあなたをガイドするための参照です
0
sudhu