Saya membuat cron-job di Ubuntu dengan menempatkan executable di salah satunya /etc/cron.{daily,hourly,monthly,weekly}
. Ada banyak direktori yang dimulai dengan cron:
kent@rat:~$ ls -ld /etc/cron*
drwxr-xr-x 2 root root 4096 2009-06-06 18:52 /etc/cron.d
drwxr-xr-x 2 root root 4096 2009-07-16 13:17 /etc/cron.daily
drwxr-xr-x 2 root root 4096 2009-06-06 18:52 /etc/cron.hourly
drwxr-xr-x 2 root root 4096 2009-06-06 18:52 /etc/cron.monthly
-rw-r--r-- 1 root root 724 2009-05-16 23:49 /etc/crontab
drwxr-xr-x 2 root root 4096 2009-06-06 18:52 /etc/cron.weekly
Saya ingin mendapatkan email dari skrip saya ketika:
- Skrip gagal dan memberikan kode keluar yang bukan nol.
- Script memiliki sesuatu untuk diceritakan
Saya sudah menginstal dan bekerja SSMTP , saya mengirim email dari akun Google saya. Fakta bahwa SSMTP hanya dapat mengirim email menggunakan satu akun bukan masalah bagi saya. Ini hanya server rumah dan pengguna yang saya miliki tidak memiliki kemampuan untuk menambahkan cron-job.
Saya ingin tahu bagaimana mailing dari skrip biasanya bekerja di Linux / Unix secara umum dan di Ubuntu secara khusus. Saya juga ingin tahu cara yang baik bagi saya untuk mendapatkan email dalam dua situasi di atas.
/etc/aliases
entri seharusnya mengikuti formatname: value1, value2, ...
? Saya tidak tahu, mungkin formatnya diubah di beberapa titik dalam 8 tahun terakhir.Untuk mendapatkan email yang dikirim dari vixie cron, Anda perlu sesuatu yang mereplikasi perintah sendmail. Jadi menginstal postfix atau SSMTP akan menyelesaikan bagian ini. Jika Anda menggunakan postfix maka file alias dapat digunakan untuk memetakan pengguna sistem ke alamat email asli.
Menambahkan MAILTO = "[email protected]" ke bagian atas crontab akan menyebabkan semua output dari tugas cron diemail. Ini terlepas dari kode kesalahan.
Untuk skrip yang menampilkan kesalahan dengan benar ke STDERR, maka mudah untuk diemail hanya ketika mereka salah lakukan saja:
Ini akan mengarahkan hanya STDOUT ke nol. Jika ada pesan STDERR, mereka akan menerima email kepada Anda.
Namun, saya telah menemukan beberapa skrip akan menampilkan kesalahan sebagai STDOUT dan mengatur kode keluar ke 1. Saya belum menemukan cara untuk mengambil output dari ini, tetapi abaikan output jika kode keluar adalah 0. Satu-satunya metode Yang bisa saya pikirkan adalah untuk mengarahkan kembali output ke file, maka jika kode keluar tidak 0 output file itu untuk cron untuk ambil. Sepertinya cukup mengerikan.
sumber
Jika Anda ingin mengirim semua output (stdout dan stderr) ke alamat tertentu maka Anda dapat menggunakan
MAILTO
variabel. Misalnya, tempatkan yang berikut di bagian atas skrip.sumber
coba tambahkan "root: [email protected]" ke / etc / aliases
yang akan mengirim semua pesan untuk pengguna itu ke email Anda. jika Anda tidak ingin semua pesan, Anda dapat membuat pengguna khusus untuk ini.
Selama skrip menampilkan sesuatu, Anda akan mendapatkan email.
sumber
Pada semua server produksi saya yang biasanya menjalankan sekitar 20 cronjobs setiap hari saya bersumpah dengan paket python-cronwrap. Lihat di sini: http://pypi.python.org/pypi/cronwrap . Ini sangat mudah untuk dikonfigurasi dan yang paling dapat diandalkan.
sumber
Saya tidak berpikir SSMTP dapat melakukan apa yang Anda butuhkan. Anda memerlukan sesuatu yang dapat "menerima" surat dari proses cron dan kemudian mengirimkannya ke kotak surat Anda yang sebenarnya.
Saya menggunakan Sendmail, tapi itu karena saya tangan Sun yang lama; Saya tahu itu ditertawakan oleh semua anak keren hari ini yang menggunakan Postfix. Komunitas ubuntu Anda dapat memandu Anda mengatur sistem email Anda.
sumber
Alternatif - saya mengarsipkan semua root mail ke beberapa file, dan kemudian menghapus email asli.
Saya cron skrip (di sini adalah bagian kunci) -
Ini membuat segalanya rapi dan saya bisa mengawasinya. Saya dapat mengirim email file surat harian ke id email eksternal, dll ...
sumber