Jika saya cron
salah mengatur pekerjaan, tampaknya gagal. Di mana saya harus mencari log kesalahan untuk memahami apa yang salah?
sumber
Jika saya cron
salah mengatur pekerjaan, tampaknya gagal. Di mana saya harus mencari log kesalahan untuk memahami apa yang salah?
Seperti yang telah ditunjukkan orang lain, cron
akan mengirimi Anda output dari program apa pun yang dijalankannya (jika ada output). Jadi, jika Anda tidak mendapatkan output apa pun, pada dasarnya ada tiga kemungkinan:
crond
bahkan tidak dapat memulai shell untuk menjalankan program atau mengirim emailcrond
memiliki masalah mengirim output, atau email hilang.Kasus 1. sangat tidak mungkin, tetapi sesuatu harus ditulis dalam log cron. Cron memiliki fasilitas syslog milik sendiri, jadi Anda harus melihat /etc/syslog.conf
(atau file yang setara di distro Anda) untuk melihat di mana pesan-pesan fasilitas cron
dikirim. Tujuan populer termasuk /var/log/cron
, /var/log/messages
dan /var/log/syslog
.
Dalam kasus 2., Anda harus memeriksa log daemon mailer: pesan dari daemon Cron biasanya muncul dari root@yourhost
. Anda dapat menggunakan MAILTO=...
baris dalam file crontab untuk meminta cron mengirim email ke alamat tertentu, yang seharusnya memudahkan untuk melihat log daemon mailer. Misalnya:
[email protected]
00 15 * * * echo "Just testing if crond sends email"
Dalam kasus 3., Anda dapat menguji apakah program itu benar-benar dijalankan dengan menambahkan perintah lain yang efeknya dapat Anda periksa dengan mudah: misalnya,
00 15 * * * /a/command; touch /tmp/a_command_has_run
sehingga Anda dapat memeriksa apakah crond
telah benar-benar menjalankan sesuatu dengan melihat waktu /tmp/a_command_has_run
.
dead.letter
di root atau direktori home pengguna masing-masing.Anda selalu dapat secara eksplisit mengirim output pekerjaan ke file log:
Ingatlah bahwa ini akan menggantikan perilaku email yang telah disebutkan sebelumnya, karena crond sendiri tidak akan menerima output apa pun dari pekerjaan tersebut. Jika Anda ingin mempertahankan perilaku itu, Anda harus melihat ke tee (1).
sumber
>>
alih-alih>
, jadi Anda tidak menimpa file log setiap saat?| /usr/bin/logger
jika Anda mau, seperti yang disarankan oleh Stefan. Pilih racun Anda: tldp.org/LDP/abs/html/io-redirection.htmlmyjob.log
dengan ukuran 0 seperti yang diharapkan, tetapi log ke file lain, di mana saya bisa mengubah pengaturan ini?Jika Anda tidak melihat surel, Anda mungkin melakukan spamming root @ perusahaan Anda dengan kesalahan yang bisa sangat mengganggu orang-orang yang menggunakan akun itu untuk memantau. Coba kirim hasilnya ke Syslog:
Kemudian, tunggu cronjob dijalankan dan cari kesalahan di / var / log / messages (atau /var/log/user.log pada beberapa sistem).
Ini berfungsi baik untuk pesan kesalahan yang panjangnya hanya 1-2 baris, seperti "yourcronjob: command not found". Itu juga memanfaatkan infrastruktur syslog Anda yang ada (Logrotation, syslogging pusat, Splunk, dll.) Ini juga mengurangi spam email untuk di-root.
Ini mungkin bukan solusi yang baik jika cronjob Anda menghasilkan ratusan baris output.
sumber
Konfigurasi cron default akan mengirimi Anda email dengan hasil program Anda. Jika ini gagal, Anda bisa mencoba membungkus program Anda yang gagal dalam skrip shell yang memastikan bahwa program tersebut tidak gagal, dan Anda bisa mencatat hasilnya lebih lanjut.
Ini adalah pengaturan yang dapat dikonfigurasi pada beberapa implementasi cron.
sumber
Anda harus mendapatkan email dari
crond
saat pekerjaan gagal dijalankan atau ketika pekerjaan mengembalikan kode keluar yang tidak nol. Coba ketikkan:di command prompt.
mailx(1)
adalah program membaca surat dasar pada hampir semua sistem Unixlike. Ini sangat primitif menurut standar modern, tetapi Anda dapat mengandalkannya untuk selalu tersedia. Lainnya, agen surat yang lebih baik mungkin tersedia, tetapi ada cukup banyak dari mereka yang Anda tidak pernah tahu yang diinstal pada beberapa mesin acak yang kebetulan Anda gunakan.Perhatikan bahwa kecuali Anda telah mengonfigurasi sistem Anda sebagai server email Internet, subsistem email ini hanya digunakan di dalam mesin. Anda dapat mengirim email ke dan menerima dari pengguna lain di mesin, tetapi Anda mungkin tidak dapat mengirim email ke dunia, dan email dari dunia luar tentu tidak akan bisa datang ke mesin Anda.
sumber
Cron mencatat info dasar
/var/log/messages
, tetapi mengirimkan output program apa pun kepada pengguna yang meminta.sumber
/var/log/messages
di server Ubuntu saya (4.4.0-128-generic #154-Ubuntu SMP
). Ada yang tahu kenapa? I'va memiliki beberapa tugas cron yang didefinisikan dalamroot
crontab selama berbulan-bulan (misalnyaapt autoremove
), tetapi tidak ada yang dieksekusi.Saya menemukan thread ini beberapa tahun yang lalu mengalami masalah yang sama dan baru-baru ini menemukan solusi untuk kasus yang disebutkan di atas oleh Ricardo. Kurangnya email sulit dideteksi (seperti yang Anda sebutkan) dan Anda tentu tidak ingin mengirim spam ke email perusahaan Anda. Jika tertarik lihat deadmanssnitch.com. . Alat ini tampaknya bisa menyelesaikan kasus-kasus tersebut. Tampaknya cukup mudah digunakan — cukup tambahkan sedikit kode yang diberikan alat ini kepada cronjob Anda. Jika pekerjaan Anda gagal dijalankan pada internal yang ditentukan, Anda akan diberitahu. Jika pekerjaan Anda mulai berjalan lagi, Anda juga akan diperingatkan.
sumber
Saya menggunakan
vixie-cron
, jadi saya tidak tahu apakah ini berlaku untuk semuanya. Tapi saya punyadead.letter
file yang berisi semua hasil pekerjaan.Di
/root/
folder saya, saya memilikicrons.cron
yang saya tetapkan sebagai crontab saya dengan menjalankancrontab /root/crons.cron
.dead.letter
akan dibuat/root/
juga.Sunting Saya baru saja Google'd
dead.letter
, dan ini surat yang tidak terkirim. Tampaknya tidak ada hubungannya dengan cron. Jika Anda tidak mengatur email dengan benar (seperti saya), Anda akan memiliki file tersebut.sumber
Untuk pemula, ini bisa menyusahkan untuk debug. Pastikan untuk tidak menukar nilai menit dan jam. Menit datang pertama, lalu jam. Ketika Anda memberikan nilai kurang dari 12 untuk masing-masing, nilai itu akan menerimanya tetapi mungkin tidak berfungsi seperti yang diharapkan atau sama sekali.
sumber