Periksa apakah program yang Anda jalankan dengan cron memiliki file log sendiri. Jika jika mereka tidak menulis hasilnya ke keluaran standar, Anda dapat mengarahkan ini ke file atau mengirimkannya kepada Anda. Di dalam pengalihan shell standar crontab berfungsi.
Misalnya. untuk mengalihkan keluaran kesalahan dari some_job.sh
ke some_job.err
dan membuang output standar (yaitu mengirimkannya ke /dev/null
) tambahkan pengalihan berikut ke crontab Anda
33 3 * * * /path/to/some_job.sh 1> /dev/null 2> /other/path/to/some_job.err
atau mengirimkannya kepada Anda sebagai gantinya (jika mail
tersedia)
33 3 * * * /path/to/some_job.sh 1> /dev/null 2>&1 | mail -s "cron output" [email protected]
Sebagian besar daemon cron pada platform tempat saya bekerja secara otomatis mengirim email stdout/stderr dari pekerjaan cron pengguna ke pengguna yang crontabnya berasal dari pekerjaan itu. Saya lupa apa yang terjadi pada seluruh sistem (pekerjaan cron non-pengguna khusus dari /etc/crontab). Masalahnya adalah orang tidak selalu menyiapkan daemon mailer (yaitu, Mail Transfer Agent (MTA) seperti sendmail, qmail, atau postfix) di sebagian besar OS mirip Unix lagi. Jadi email keluaran tugas cron mati begitu saja di folder spool surat lokal di suatu tempat jika mereka mendapatkan itu jauh. Jadi satu jawaban mungkin hanya dengan menjalankan daemon mailer Anda, dan mungkin pastikan Anda memiliki file ~/.forward untuk meneruskan email lokal Anda ke akun email "asli" Anda.
Jika Anda ingin pekerjaan Anda menulis ke file log tertentu, Anda dapat menggunakan pengalihan keluaran standar seperti yang disarankan @honk, atau, seandainya pekerjaan cron Anda adalah skrip shell, Anda dapat membuat panggilan skrip logger(1) atau syslog(1) atau apa pun alat baris perintah lain yang disediakan OS Anda untuk mengirim pesan arbitrer ke syslog. Kemudian Anda dapat menggunakan metode bawaan OS Anda untuk mengonfigurasi jenis pesan mana yang dicatat di mana, mungkin dengan mengedit /etc/syslog.conf.
Sebagian besar pekerjaan cron saya menggunakan skrip bash yang saya tulis khusus untuk tujuan dimulai oleh cron karena alasan tertentu. Dalam hal itu, terutama ketika saya pertama kali menulis dan men-debugnya, saya suka menggunakan "set -vx" bash untuk membuat bentuk yang tidak diperluas dan diperluas dari setiap baris skrip shell ditulis ke stdout sebelum dieksekusi. Perhatikan bahwa skrip shell yang dimulai dari cron dianggap sebagai shell non-login, non-interaktif, jadi skrip startup shell standar Anda seperti .bashrc dan .profile tidak dijalankan. Jika Anda menggunakan bash dan ingin bash menjalankan skrip startup, Anda harus menentukan variabel lingkungan "BASH_ENV=/path/to/my/startup/script" di crontab Anda sebelum baris tempat Anda menentukan pekerjaan.
Tugas yang dijalankan cron bertanggung jawab atas logging mereka sendiri.