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


49

Hostmonster.comでホスティングしているcronジョブを実行しています。cronjobが実行されると、スクリプトの出力が記載された電子メールを受け取ります。

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

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

これに関する問題は、電子メールの件名が、その電子メールがどのcronjobに関係しているのかを非常に読みにくくすることです。

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

例えば:

From:Cron Daemon
件名:MySQLデータベースの最適化

回答:


11

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

電子メールを受信したい場合は、出力がまったくないスクリプトを作成します。ただし、代わりにすべての出力をテキストファイルに入れてください。

そして

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

あなたが望むようにそれを受け取ります。


ありがとうミシェル。Hostmonsterの自動メールシステムを使用することを望んでいましたが、これが私が行くソリューションであるように見えます。ホスティングによって制御される自動Cronメールを受信する代わりに、私は自分のメールを送信します。
ジャスティン2009

53

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

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

主題はまだ見苦しいように見えますが、少なくとも説明的であり、余分なスクリプトは必要ありません。


4
今ではハックです!(私はそれが好きです。)
Maxy-B

8
コロンの後のスペースは重要であることに注意してください。
パトリックは

1
タイトルは「Queue Summary」になりますか?この場合、コマンドは「qshape」ですか?
プラティックハドローヤ

qshapeは後置コマンドのようです。私のUNIXマシンは「メール」コマンドを使用します。しかし、ここでqshapeコマンドは関連していますか?
Pratik Khadloya

1
参考までに、電子メールの件名はQueue Summary; PATH=/usr/sbin qshape
Akom

20

cronジョブ出力を直接メールにパイプして、件名を入力できます。2>&1構文は、そうでない場合は消えてしまう任意のエラー出力を送信します。

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

2
私はこれをやっていますが、実行中のスクリプトの成功または失敗を主題に反映させたいので、スクリプトcron呼び出しの内部です。
トム・バロン

13

出力とstderrを「mailx -E」にパイプすることにより、コマンド出力を送信する(またはない場合)crondの責任を引き継ぎます。例えば:

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

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


1
ここでの$ LOGNAME変数とは何ですか?
Pratik Khadloya

コマンドの終了コードがゼロ以外の場合にのみメールを送信する方法はありますか?
Pratik Khadloya

1
@ PratikKhadloya、crontab(5)から: Several environment variables are set up automatically by the cron(8) daemon. SHELL is set to /bin/sh, and LOGNAME and HOME are set from the /etc/passwd line of the crontab's owner. PATH is set to "/usr/bin:/bin". HOME, SHELL, and PATH may be overridden by settings in the crontab; LOGNAME is the user that the job is running from, and may not be changed.
lingfish

2
複数のmailx実装があります。それらの一部のみがこの-Eオプションを提供します。Ubuntuでは、bsd-mailxまたはheirloom-mailxパッケージが必要です。mailutilsパッケージには、mailx異なるを持つGnu コマンドが含まれています-E
スマイラーズ

2

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

#Optimize_MySQL_Database.sh

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

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


0

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

/usr/local/bin/php -q /path /hostname/foldername/Page-You-want-to-execute \
   | **mail -s "*SUBJECT*" YOUR@MAIL.COM.**
  • これはあなたを導くための単なる参考です
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.