Apa perbedaan antara cron.d (seperti pada /etc/cron.d/) dan crontab?

18

Apa perbedaan utama antara direktori cron.d (seperti dalam /etc/cron.d/) dan crontab?

Sejauh yang saya mengerti, seseorang dapat membuat file seperti /etc/cron.d/my_non_crontab_cronjobsdan meletakkan apa pun yang diinginkan orang di dalamnya, sama seperti orang akan memasukkannya crontabmelalui crontab -e.

Jadi apa perbedaan utama antara keduanya?

Arcticooling
sumber
lokasi dalam sistem, dan format.
Rui F Ribeiro
Format? Dari 2 contoh yang saya lihat itu juga memiliki sintaks unit 5 waktu, atau saya bingung dengan crontab.
Arcticooling

Jawaban:

24

Perbedaan didokumentasikan secara rinci dalam halaman cron(8)manual dalam bahasa Debian. Perbedaan utama adalah yang /etc/cron.ddiisi dengan file yang terpisah, sedangkan crontabmengelola satu file per pengguna; dengan demikian lebih mudah untuk mengelola konten /etc/cron.dmenggunakan skrip (untuk instalasi otomatis dan pembaruan), dan lebih mudah untuk mengelola crontabmenggunakan editor (untuk pengguna akhir benar-benar).

Perbedaan penting lainnya adalah bahwa tidak semua distribusi mendukung /etc/cron.d, dan bahwa file dalam /etc/cron.dharus memenuhi sejumlah persyaratan tertentu (di luar pekerjaan cron yang valid): mereka harus dimiliki oleh root, dan harus sesuai dengan run-parts'konvensi penamaan ( tidak ada titik , hanya huruf, angka, garis bawah, dan tanda hubung).

Jika Anda sedang mempertimbangkan menggunakan /etc/cron.d, itu biasanya layak dipertimbangkan salah /etc/cron.hourly, /etc/cron.daily, /etc/cron.weekly, atau /etc/cron.monthlysebaliknya.

Stephen Kitt
sumber
1
Dan untuk contoh dunia nyata, item-item di cron.dbiasanya ditambahkan melalui instalasi paket, sedangkan berbagai crontabfile penuh dengan hal-hal yang dibuat oleh pengguna yang sesuai. IE, paket certbotatau letsencryptmemasukkan entri cron.d- sebelum paket tersedia, sysadmin (root) akan menambahkan entri di pengguna root crontabmenunjuk ke skrip shell / etc. untuk menjaga agar sertifikat tetap terbaru.
ivanivan
Stephen terima kasih! Mengapa Anda merekomendasikan menggunakan direktori cron per jam / mingguan / bulanan? Dan BTW, mengapa halaman manual di sana disebut cron (8) untuk apa 8 (halaman manual untuk crontab bernama crontab (1)).
Arcticooling
1
@Arcticooling, lihat pertanyaan ini untuk penjelasan tentang(8)
user4556274
Direktori per jam dll. Membuatnya lebih mudah untuk menambahkan pekerjaan (tidak perlu mencari tahu sintaks yang tepat), dan yang lebih penting, memungkinkan sistem untuk memvariasikan waktu eksekusi nyata tergantung pada keadaan; ini sangat berguna pada sistem yang tidak selalu aktif, dengan anacron.
Stephen Kitt
1
Kelemahan dari hourly|daily|weekly|monthlydirektori adalah bahwa (AFAICT), mereka selalu berjalan sebagai root, dan tidak secara langsung mendukung berjalan dengan hak istimewa yang lebih rendah.
ilkkachu
5

Saya akan mengatakan perbedaan utama adalah yang jelas: /etc/crontabdan /etc/cron.dtidak dapat dimodifikasi oleh pengguna biasa, sedangkan crontab per pengguna di /var/spool/cronmana crontabalat diedit, adalah. (Tergantung cron.allowdan cron.deny, tentu saja.) Tentu saja pada sistem di mana Anda adalah administrator, Anda dapat menggunakan keduanya. Pada sistem bersama, pengguna biasa hanya dapat menggunakannya.

Terkait dengan ini adalah bidang tambahan dalam file sistem-lebar, nama pengguna tempat pekerjaan dijalankan.

ilkkachu
sumber