Saya ingin memecahkan masalah pekerjaan cron yang berfungsi dengan baik sampai modifikasi baru-baru ini, tetapi saya tidak dapat menemukan file log cron, di mana itu?
Apakah ini benar-benar pekerjaan cron atau Anda menggunakan launchd. Cron telah ditinggalkan pada OS X.
jaberg
1
Apakah Anda mengatur file log untuk pekerjaan cron?
daviesgeek
itu sebenarnya cronpekerjaan yang saya atur cron -edan saya bisa melihatnya cron -ldan saya yakin itu berhasil pada Lion dan sebelum itu pada macan tutul salju untuk waktu yang lama.
Ali
dan tidak, saya tidak secara manual mengatur file log untuk 'cron' itu sendiri, meskipun saya menulis ke file log di dalam pekerjaan dan telah berhenti bekerja baru-baru ini setelah saya mengubah sesuatu.
Ali
2
Ali, Karena Anda punya jawabannya, silakan posting sebagai jawaban dan terima. Jangan mengeditnya menjadi pertanyaan. Anda tidak hanya diizinkan, tetapi didorong, untuk menjawab pertanyaan Anda sendiri.
Jason Salaz
Jawaban:
30
Secara default, cron tidak mencatat output dari pekerjaan yang dieksekusi. Dimungkinkan untuk mencatat fakta bahwa cronjobs telah dieksekusi, tetapi itu juga bukan default pada OS X.
Untuk menyelidiki output eksekusi cronjob, saya sarankan memodifikasi baris cronjob Anda untuk mengarahkan STDOUT dan STDERR ke filefile. Di file crontab Anda atau setelah berjalan crontab -e, bagaimanapun Anda melakukannya, tambahkan sesuatu seperti yang berikut ke baris pekerjaan Anda:
Melakukan ini harus mengirim STDOUT (biasanya dicetak atau di-echo output ke STDOUT) ke file teks bernama stdout.log di direktori / tmp, dan STDERR ke stderr.log di direktori temp. Banyak utilitas menggunakan STDERR untuk mencetak pesan kesalahan khusus ketika mereka kesalahan aplikasi, dan bukan kesalahan yang dihasilkan oleh eksekusi aktual program. (Anda dapat membaca lebih lanjut tentang STDERR di Wikipedia.)
Terima kasih, itulah tepatnya yang saya coba lakukan, sepertinya cronkarena suatu alasan gagal menjalankan pekerjaan. jika saya menjalankan pekerjaan sendiri dengan mengetikkan perintah di terminal itu berjalan dan output ke logfile tetapi jika saya menunggu untuk cronmenjalankannya tidak ada yang terjadi, setidaknya tidak ada perubahan dalam file log, saya berpikir mungkin "file log cron "atau ada jejak di konsol yang bisa membantu saya mengetahui apa yang sedang terjadi, baru-baru ini saya mengganti shell saya dari bash ke zsh tapi saya tidak berpikir itu bisa mempengaruhi ini juga.
Ali
1
Menurut erikslab.com/2011/02/04/logging-with-launchd , Anda dapat memodifikasi cron plist ( /System/Library/LaunchDaemons/com.vix.cron.plist) dengan jalur Stdout / Stderr untuk men-debug cron itu sendiri. Saya tidak ingat apakah launchctl unloading dan launchctl loading plist sudah mencukupi, atau karena daemon sistem jika Anda harus me-restart sepenuhnya. Saya menyarankan yang terakhir hanya untuk memastikan.
Jason Salaz
20
Jauh lebih mudah untuk menambahkan yang berikut ke /etc/syslog.conf:
Saya suka ide ini - tetapi pada 10.10.5, /etc/syslog.confkata saya # Note that flat file logs are now configured in /etc/asl.conf. File itu memiliki sintaks yang berbeda, tidak jelas bagi saya cara mengkonfigurasi login.
Ken Williams
@ KenWilliams bahkan jika mengatakan itu, syslog.conf masih berfungsi, di High Sierra.
Fish Monitor
14
Secara default, "logging" tidak diaktifkan. Tetapi Anda mungkin mendapatkan beberapa informasi berguna dengan menjalankan mailperintah.
TL; DR pada mailperintah: tekan enter untuk membaca pesan, lalu qmasuk dan untuk keluar.
Itu adalah pesan kesalahan yang disimpan di kotak suratuser
nohillside
@ Patrix, saya dapat menemukan pekerjaan cron sukses juga. Diperbarui jawabannya.
Vineeth
Bagus! Seharusnya jawaban yang diterima!
Trollhorn
3
Ternyata ketika cron menjalankan pekerjaan (seperti saya), /usr/local/bintidak ada dalam PATH.
Saya menemukan ini dengan coba-coba dan membangun pekerjaan dari awal dari hal-hal sederhana yang saya tahu akan berhasil dan secara bertahap menambahkan hal-hal sampai saya menemukan masalah.
Tentang saran dan jawaban lain:
Untuk beberapa alasan (setidaknya pada komputer saya, yang menjalankan Lion ditingkatkan dari SnowLeopard) crontidak menggunakan parameter yang ditentukan dalam file plist yang launchdditutup untuk membaca /System/Library/LaunchDaemons/com.vix.cron.plistatau mungkin cron on Lion tidak menulis apa pun ke stdout atau stderr.
Ngomong-ngomong, saya menggunakan http://s3tools.org/s3cmd ke syncfolder dengan bucket Amazon S3 sebagai cadangan (seperti DropBox primitif).
cron
pekerjaan yang saya aturcron -e
dan saya bisa melihatnyacron -l
dan saya yakin itu berhasil pada Lion dan sebelum itu pada macan tutul salju untuk waktu yang lama.Jawaban:
Secara default, cron tidak mencatat output dari pekerjaan yang dieksekusi. Dimungkinkan untuk mencatat fakta bahwa cronjobs telah dieksekusi, tetapi itu juga bukan default pada OS X.
Untuk menyelidiki output eksekusi cronjob, saya sarankan memodifikasi baris cronjob Anda untuk mengarahkan STDOUT dan STDERR ke filefile. Di file crontab Anda atau setelah berjalan
crontab -e
, bagaimanapun Anda melakukannya, tambahkan sesuatu seperti yang berikut ke baris pekerjaan Anda:0 0 * * * yourcommand >/tmp/stdout.log 2>/tmp/stderr.log
Melakukan ini harus mengirim STDOUT (biasanya dicetak atau di-echo output ke STDOUT) ke file teks bernama stdout.log di direktori / tmp, dan STDERR ke stderr.log di direktori temp. Banyak utilitas menggunakan STDERR untuk mencetak pesan kesalahan khusus ketika mereka kesalahan aplikasi, dan bukan kesalahan yang dihasilkan oleh eksekusi aktual program. (Anda dapat membaca lebih lanjut tentang STDERR di Wikipedia.)
sumber
cron
karena suatu alasan gagal menjalankan pekerjaan. jika saya menjalankan pekerjaan sendiri dengan mengetikkan perintah di terminal itu berjalan dan output ke logfile tetapi jika saya menunggu untukcron
menjalankannya tidak ada yang terjadi, setidaknya tidak ada perubahan dalam file log, saya berpikir mungkin "file log cron "atau ada jejak di konsol yang bisa membantu saya mengetahui apa yang sedang terjadi, baru-baru ini saya mengganti shell saya dari bash ke zsh tapi saya tidak berpikir itu bisa mempengaruhi ini juga./System/Library/LaunchDaemons/com.vix.cron.plist
) dengan jalur Stdout / Stderr untuk men-debug cron itu sendiri. Saya tidak ingat apakahlaunchctl unload
ing danlaunchctl load
ing plist sudah mencukupi, atau karena daemon sistem jika Anda harus me-restart sepenuhnya. Saya menyarankan yang terakhir hanya untuk memastikan.Jauh lebih mudah untuk menambahkan yang berikut ke
/etc/syslog.conf
:Kemudian restart syslog
Diuji dan bekerja pada OSX 10.7.4
sumber
/etc/syslog.conf
kata saya# Note that flat file logs are now configured in /etc/asl.conf
. File itu memiliki sintaks yang berbeda, tidak jelas bagi saya cara mengkonfigurasi login.Secara default, "logging" tidak diaktifkan. Tetapi Anda mungkin mendapatkan beberapa informasi berguna dengan menjalankan
mail
perintah.TL; DR pada
mail
perintah: tekan enter untuk membaca pesan, laluq
masuk dan untuk keluar.sumber
Saya dapat menemukan cron-job log in,
Berikut ini adalah log pekerjaan cron yang saya dapatkan untuk menjalankan perintah AWS CLI,
sumber
user
Ternyata ketika cron menjalankan pekerjaan (seperti saya),
/usr/local/bin
tidak ada dalamPATH
.Saya menemukan ini dengan coba-coba dan membangun pekerjaan dari awal dari hal-hal sederhana yang saya tahu akan berhasil dan secara bertahap menambahkan hal-hal sampai saya menemukan masalah.
Tentang saran dan jawaban lain:
Untuk beberapa alasan (setidaknya pada komputer saya, yang menjalankan Lion ditingkatkan dari SnowLeopard)
cron
tidak menggunakan parameter yang ditentukan dalam file plist yanglaunchd
ditutup untuk membaca/System/Library/LaunchDaemons/com.vix.cron.plist
atau mungkin cron on Lion tidak menulis apa pun ke stdout atau stderr.Ngomong-ngomong, saya menggunakan http://s3tools.org/s3cmd ke
sync
folder dengan bucket Amazon S3 sebagai cadangan (seperti DropBox primitif).sumber