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.