Cronjob Email Konusu Nasıl Değiştirilir


49

Hostmonster.com'daki barınağımdan yarım düzine farklı cron işi işletiyorum. Bir cronjob idam edildiğinde betiğin çıktısını içeren bir e-posta alıyorum.

E-posta şu şekilde gelir:

Gönderen: Cron Daemon
Konu: Cron / ramdisk / bin / php5 -c /home5/username/scheduled/optimize_mysql.bash

Bununla ilgili sorun, e-postanın konusunun, e-postanın hangi cronjob'a ait olduğunu okumayı çok zorlaştırmasıdır.

Bir cronjob e-postasının konusunu, okunması daha kolay olacak şekilde değiştirmenin bir yolu var mı?

Örneğin:

Gönderen: Cron Daemon
Konu: MySQL Veritabanını Optimize Etme

Yanıtlar:


11

Sistemlerimde (çoğu Debian) crontab girişi olarak adlandırılan bir betikten / programdan tüm çıktılar, cronu account@localhostbaşlatan kişiye e-posta ile gönderilir . Bu e-postaların sizinki gibi bir konusu var.

Bir e-posta almak istiyorsanız, kendi başına çıktısı olmayan bir komut dosyası yazın. Ancak bunun yerine tüm çıktıları bir metin dosyasına koyun.

Ve birlikte

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

istediğiniz gibi aldınız.


Teşekkürler Michèle. Hostmonster'ın otomatik e-posta sistemini kullanmayı umuyordum, ancak bu benim çözümüm olacak gibi görünüyor. Barındırma tarafından kontrol edilen Otomatik Cron e-postaları almak yerine sadece kendi e-postalarımı göndereceğim.
justinl

53

Veya sh noop komutunu kullanın (:)

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

Konu hala çok kük görünüyor, ama en azından tanımlayıcı ve yabancı komut dosyası gerektirmiyor.


4
Şimdi bu bir kesmek! (
Beğendim

8
Kolondan sonra boşluğun önemli olduğunu unutmayın.
Patrick

1
Başlık "Sıra Özeti" mi olacak? Ve bu durumda "qshape" komutu nedir?
Pratik Khadloya

Qshape bir postfix komutudur. Unix makinem "mail" komutunu kullanıyor. Fakat qshape komutu burada alakalı mı?
Pratik Khadloya

1
Bilginize, e-postanın konusu olacakQueue Summary; PATH=/usr/sbin qshape
Akom

20

Cron iş çıktınızı doğrudan postaya gönderin, ardından konu satırını doldurabilirsiniz. 2>&1sözdizimi, aksi yok olur hata çıktı gönderir.

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

2
Bunu yapıyorum, ancak betiğin cron çağrıları içindeydi çünkü konunun çalışmakta olan betiğin başarısını veya başarısızlığını yansıtmasını istiyorum.
Tom Barron

13

Çıktısını ve stderr'i 'mailx -E' içine geçirerek komut çıktısı gönderme (ya da yoksa) komutunu verme sorumluluğunu üstlenin. Örneğin:

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

Mailx'in '-E' seçeneği çok güzel çünkü crond'un kendisi gibi gönderilecek herhangi bir çıktı yoksa mail göndermeyecek.


1
$ LOGNAME değişkeni burada ne?
Pratik Khadloya

Yalnızca komutun çıkış kodu sıfır olmadığında e-posta göndermenin bir yolu var mı?
Pratik Khadloya

1
@PratikKhadloya, crontab'dan (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
Birden çok mailxuygulama var; yalnızca bazıları bu -Eseçeneği sunar. Ubuntu'da bsd-mailxveya heirloom-mailxpaketlerini istersiniz ; mailutilspaket, Gnu içeren mailxfarklı olan komutu -E.
Smylers

2

Başka bir çözüm de, doğru komutu çağıran, istediğiniz konu satırına sahip bir kabuk betiği yazmaktır. Örneğinizde bu şöyle olur:

#Optimize_MySQL_Database.sh

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

Bin dizinini crontab dosyasında ayarlayarak yola ekleyebilirsiniz.


0

THIS TRY - Komut satırında aşağıdaki kodu uygulayın ---

/usr/local/bin/php -q /path /hostname/foldername/Page-You-want-to-execute \
   | **mail -s "*SUBJECT*" YOUR@MAIL.COM.**
  • Bu sadece size rehberlik etmek için bir referanstır
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.