Bagaimana saya mengetahui mengapa cron tidak menjalankan pekerjaan saya?


15

Saya menggunakan Ubuntu 14.04, dan daemon cron berjalan:

# ps ax | grep cron
822 ?        Ss     0:00 cron

tetapi tidak melakukan pekerjaan apa pun. Saya sebelumnya mendapatkan entri /var/log/syslogseperti ini:

2014-05-04T11:47:01.839754+01:00 localhost CRON[29253]: (root) CMD (test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly ))

tapi sekarang tidak ada entri terkait cron. Saya juga mendapatkan entri seperti ini di /var/log/auth.log:

2014-05-04T11:47:01.839183+01:00 localhost CRON[29252]: pam_unix(cron:session): session opened for user root by (uid=0)
2014-05-04T11:47:13.495691+01:00 localhost CRON[29252]: pam_unix(cron:session): session closed for user root

tetapi sekali lagi, sekarang tidak ada entri yang berhubungan dengan cron.

Saya tidak sadar bahwa ada yang berubah. Saya telah mencoba memulai ulang cron:

# service cron restart
cron stop/waiting
cron start/running, process 24907

Saya mencoba menggunakan crontab -euntuk menambahkan pekerjaan cron * * * * * date >> /tmp/somefileyang berhasil, tetapi ia menginstal crontab baru /var/spool/cron/crontabs/root, sedangkan saya ingin cron menggunakan file tersebut /etc/crontab.

Apakah ada opsi debug yang bisa saya gunakan, atau log di suatu tempat yang mungkin memberikan pesan kesalahan yang bisa saya selidiki?


1
Apa yang ditampilkan ke crontab -l?
— user345352353

no crontab for root.
— jl6

Saya percaya jika Anda melakukan sedikit pencarian di situs SE ini Anda akan memiliki jawaban. Ini adalah masalah yang cukup umum.
— mdpc

Crons yang diambil menggunakan crontabperintah ( -lswitch) tergantung pada pengguna, sementara /etc/crontabdigunakan untuk menyimpan crons seluruh sistem. Karena alasan ini, tugas yang disimpan /etc/crontabtidak akan muncul di siapa pun crontab -l.
— John WH Smith

Jawaban:


4

Untuk lebih lanjut membantu Anda men-debug apa yang salah dengan cronpekerjaan Anda, Anda harus memeriksa email Anda. Ini biasanya disimpan dalam file seperti /var/mail/<user_name>atau /var/spool/mail/<user_name>.

Kedua file ini sebenarnya adalah hardlink di kotak Debian saya, tetapi saya tidak tahu apakah ini standar.

Penjelasan

Dari cron(8)halaman:

Saat menjalankan perintah, output apa pun dikirimkan ke pemilik crontab (atau ke pengguna yang disebutkan dalam variabel lingkungan MAILTO di crontab, jika ada).


Saya telah memeriksa surat; tidak ada yang dihasilkan, juga tidak ada file dead.letter.
— jl6

0

Anda telah menunjukkan bahwa tidak ada crontab untuk root, apakah ada pengguna yang memiliki entri crontab? Jika Anda hanya menggunakan root maka Anda juga bisa memeriksa direktori berikut: /etc/cron.daily/ - /etc/cron.hourly/ - /etc/cron.monthly/ - /etc/cron.weekly

pada mesin saya (centos 6.4) saya memiliki mlocate.cron di dalam direktori /etc/cron.daily/ dan cron menjalankan skrip itu setiap hari.

jadi saya pikir Anda hanya perlu menambahkan pekerjaan cron.


Tetapi ada file crontab di /etc/crontab. Mungkin pertanyaannya adalah mengapa crontab -ltidak mengakuinya?
— jl6

0

Saya menyelesaikan ini dengan mengubah izin /etc/crontabmenjadi sebagai berikut:

-rw-r--r-- 1 root root 778 May 10 21:31 /etc/crontab

Sebelumnya itu -rw-rw-r--. Itu satu-satunya perubahan. Itu tidak berfungsi, sekarang. Masih belum yakin kenapa.


1
Crontab root akan menjalankan perintah apa pun sebagai root. Izin yang memungkinkan akses tulis ke non-root akan dianggap sebagai lubang keamanan.
— ChuckCottrill

@ ChuckCottrill: Tapi bit tulis grup hanya akan memberikan akses tulis kepada mereka yang ada di grup root - yang mungkin hanya pengguna root?
— jl6

0

Saya juga memiliki jenis masalah yang serupa, tetapi setelah menentukan root sebagai pengguna pada /etc/crontab, tugas cron mulai memicu.

Mungkin karena sintaks yang diikuti pada crontab -eyang berbeda dari /etc/crontab.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.