Di mana log cron / crontab?

754

Saya ingin memverifikasi bahwa pekerjaan cron saya sedang dijalankan dan kapan. Saya percaya ada log untuk sudo crontab -epekerjaan saya , tetapi di mana?

Saya mencari di google dan menemukan rekomendasi untuk mencarinya /var/log(di mana saya tidak melihat apa-apa dengan 'cron' di namanya) dan untuk mengedit file /etc/syslog.confyang saya juga tidak punya.

Scott Szretter
sumber

Jawaban:

898

Pada instalasi default, tugas cron bisa login

/var/log/syslog

Anda bisa melihat hanya pekerjaan cron di logfile itu dengan menjalankan

 grep CRON /var/log/syslog

Jika Anda belum mengkonfigurasi ulang apa pun, entri akan ada di sana.

Richard Holloway
sumber
46
Jika tidak ada MTA yang diinstal, cron hanya membuang output pekerjaan.
Barry Kelly
11
Log cron mungkin ada di file lain di /var/log/direktori. Periksa cron.log atau yang setara.
Navigatron
4
ini tidak memberi saya hasil dari pekerjaan. itu hanya memberikan pesan umum bahwa cron diproses.
chovy
2
pada AWS itu / var / log / cron
tsukimi
5
@shadi Anda juga grep -i CRONdapat mencari case-insensitive
nafg
236

Anda dapat membuat file cron.log hanya berisi entri CRON yang muncul di syslog. Perhatikan bahwa pekerjaan CRON masih akan muncul di syslog jika Anda mengikuti petunjuk berikut.

Buka file

/etc/rsyslog.d/50-default.conf

Temukan baris yang dimulai dengan:

#cron.*

batalkan komentar pada baris itu, simpan file, dan mulai ulang rsyslog:

sudo service rsyslog restart

Anda sekarang akan melihat file log cron di sini:

/var/log/cron.log

Aktivitas Cron sekarang akan masuk ke file ini (selain syslog).

Perhatikan bahwa di cron.log Anda akan melihat entri ketika cron menjalankan skrip di /etc/cron.hourly, cron.daily, dll. - mis. Sesuatu seperti:

Apr 12 14:17:01 cd CRON[14368]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)

Namun, Anda tidak akan melihat informasi lebih lanjut tentang skrip apa yang sebenarnya dijalankan di dalam /etc/cron.daily atau /etc/cron. Dengan senang hati, kecuali skrip tersebut langsung menghasilkan ke cron.log (atau mungkin ke file log lain).

Jika Anda ingin memverifikasi apakah crontab sedang berjalan dan tidak harus mencarinya di cron.log atau syslog, buat crontab yang mengalihkan keluaran ke file log pilihan Anda - sesuatu seperti:

01 14 * * * /home/joe/myscript >> /home/log/myscript.log 2>&1

Ini akan mengarahkan semua output standar dan kesalahan yang mungkin dihasilkan oleh skrip yang dijalankan ke file log yang ditentukan.

pengguna12345
sumber
1
Dengan pendapat saya, jawaban ini lebih baik di masa depan. Jadi file syslog Anda lebih jelas.
shgnInc
9
Untuk juga mengecualikan log cron dari syslog Anda dapat mengubah baris *.*;auth,authpriv.none -/var/log/syslogke *.*;auth,authpriv.none,cron.none -/var/log/syslog.
Koen.
Pada CentOS 6 kami, cron. * Didefinisikan di /etc/rsyslog.conf, sedangkan saya kosong di folder rsyslog.d.
Scott Chu
apa yang 2>&1berdiri?
John Joe
2
@JohnJoe 2> & 1 digunakan untuk meneruskan stderr ke stdout, dengan cara ini Anda juga akan mendapatkan stderr untuk mencatat file.
Sampo Sarrala
79

Terkadang berguna untuk terus memantaunya, dalam hal ini:

tail -f /var/log/syslog | grep CRON
KennyCason
sumber
10
Nah, Anda mungkin ingin menggunakan -F, yang akan mengikuti file di seluruh perubahan nama, sehingga ketika itu terpotong / dipindahkan ke, misalnya /var/log/syslog.1.gz, Anda masih mengikuti /var/log/syslogfile saat ini . Menurut pria itu, ini sama dengan berlaritail xxxx -f --retry
Momer
37

Anda juga dapat mengarahkan output masing-masing cronjobs ke log mereka sendiri untuk keterbacaan yang lebih baik, Anda hanya perlu menambahkan output tanggal di suatu tempat.

 0 15 * * *    /home/andrew/daily-backup.sh >> /var/log/daily-backup.log 2>&1
Andrew Meyer
sumber
4
true, tetapi jika baris ini gagal dijalankan karena kesalahan sintaks, tidak ada yang akan ditulis dalam log keluaran yang ditentukan.
Raptor
11
Anda dapat menyelesaikan ini dengan menambahkan 2> & 1 setelah file log ditentukan. Ini juga merupakan praktik terbaik untuk menguji cronjobs Anda sebelum menambahkannya ke crontab, dan kemudian hadir untuk menjalankan dijadwalkan pertama untuk memastikan bahwa crontab diformat dengan benar.
Andrew Meyer
10

Jika Anda telah systemdmenginstal pada sistem Anda, Anda bisa menampilkan cron job log dengan menggunakan journalctlperintah.

Misalnya, di Ubuntu 17.10 saya:

journalctl -u cron.service
an9wer
sumber
9

Ini adalah pertanyaan yang sangat lama, tetapi tidak ada jawaban yang memuaskan.

Pertama-tama buat pekerjaan cron Anda berjalan setiap menit, kemudian jalankan cron sebagai non-daemon (untuk sementara, matikan semua crond yang mungkin sudah dimulai) dengan uji logging:

crond -nx test

Dan lihat log eksekusi program Anda yang mengalir melalui terminal Anda.

Tristan Maat
sumber
7
Tidak berjalan pada 14,04 -No command 'crond' found, did you mean: Command 'cron' from package 'cron' (main)
G-.
8

Ini secara /var/log/syslogdefault.

Tetapi dapat diatur untuk membuat cron.log terpisah, yang lebih berguna.

T&J ini menjelaskan proses:

16.04: Bagaimana cara membuat cron membuat cron.log dan memonitornya secara real time?

Juga dalam jawaban ini adalah instruksi untuk membuat wcronperintah yang menampilkannya hampir real-time. Selain itu, tautan ke jawaban lain,

Bagaimana cara mengubah level log cron?

yang menunjukkan cara mengubah level log untuk memasukkan lebih dari sekedar permulaan pekerjaan - level 15 juga akan menunjukkan kesalahan dan waktu berakhir.

SDsolar
sumber
5

Fedoar 29 dan RHEL 7

journalctl -t CROND

Dari journalctlmanual:

   -t, --identifier=SYSLOG_IDENTIFIER|PATTERN
       Show messages for the specified syslog identifier SYSLOG_IDENTIFIER, or for any of the messages with a "SYSLOG_IDENTIFIER" matched by PATTERN.

       This parameter can be specified multiple times.
HarlemSquirrel
sumber
3

Anda bisa mengarahkan output cron ke file tmp

Seperti: 00 11 07 * * / bin / bash /home/ubuntu/command.sh> / tmp / output 2> & 1

Kesalahan dan output normal, keduanya akan dialihkan ke file yang sama

Himanshu
sumber
2

Seperti disebutkan sebelumnya, pekerjaan cron bisa login /var/log/syslog

Anda dapat menyalurkan syslog ke grep dan memfilter log CRON, seperti ini

less /var/log/syslog | grep CRON 

Anda dapat mencari melalui log crontab Anda, seperti ini

less /var/log/syslog | grep CRON | grep <search-keyword-comes-here>

Anda dapat mencari melalui log riwayat crontab Anda yang disimpan dalam file gz, seperti ini

less /var/log/syslog.2.gz | grep CRON | grep <search-keyword-comes-here>

Itu selalu dianggap baik untuk memiliki mekanisme logging, Anda dapat dengan cepat mengatur ELK untuk server Anda, Anda juga dapat bereksperimen dengan logz .

nol
sumber