Kenapa crontab -e berbeda dari less / etc / crontab?

11

Saya cukup baru untuk unix dan crons, saya saat ini akan mencoba untuk menambahkan crons ke file cron yang ada. Saya membaca Anda bisa melakukan ini dengan crontab -e. Yang membingungkan bagi saya adalah hanya crontab -emenunjukkan crons / perintah yang berbeda dari less /etc/crontab- bagaimana bisa? Yang mana cara / file yang benar untuk diedit?

Alex
sumber

Jawaban:

14

Meskipun jawaban @X Tian berisi info tentang berbagai file untuk crontab, informasi penting mengenai pertanyaan Anda adalah ini:

crontab -emengedit file crontab pengguna (disimpan dalam /var/spool/cron/crontabs/direktori pada sistem Debian saat ini, tetapi YMMV) atau membuat yang baru, dan tidak /etc/crontab. Mirip dengan crontab -l(daftar file crontab) dan crontab -r(hapus file crontab).

Untuk semua pekerjaan cron yang harus dijalankan di bawah akun pengguna, Anda harus menggunakan crontab -e. Untuk pekerjaan sistem, Anda harus menambahkan file di bawah /etc/cron.d, jika ada; di bawah /etc/cron.{hourly|daily|weekly|monthly}(tetapi itu tidak boleh dinamai seperti nama paket!), jika itu sesuai dengan tujuan Anda; atau tambahkan baris ke /etc/crontab. Namun ketahuilah bahwa /etc/crontabmungkin akan ditimpa dengan pembaruan sistem.

Dubu
sumber
@Stephane Chazelas Terima kasih telah menjelaskan dengan suntingan Anda. The /var/spool/cron/direktori adalah khusus Linux (lihat Berkas Hierarchy Standard ) dan lokasi dapat bervariasi pada sistem selain Debian saat ini.
Dubu
3

Anda benar-benar ingin membaca halaman buku panduan man crondanman crontab

Berikut adalah kutipan yang mencakup pertanyaan Anda. Dariman cron

CATATAN cron mencari area spool (/ var / spool / cron / crontab) untuk file crontab (yang diberi nama setelah akun di / etc / passwd); crontab yang ditemukan dimuat ke dalam memori. Perhatikan bahwa crontab dalam direktori ini tidak boleh diakses secara langsung - perintah crontab harus digunakan untuk mengakses dan memperbaruinya.

   cron also reads /etc/crontab, which is in a slightly  different  format
   (see  crontab(5)).   Additionally, cron reads the files in /etc/cron.d:
   it treats  the  files  in  /etc/cron.d  as  in  the  same  way  as  the
   /etc/crontab  file  (they  follow the special format of that file, i.e.
   they  include  the  user  field).  However,  they  are  independent  of
   /etc/crontab:  they  do  not, for example, inherit environment variable
   settings from it. The intended purpose of  this  feature  is  to  allow
   packages  that  require  finer  control  of  their  scheduling than the
   /etc/cron.{daily,weekly,monthly} directories to add a crontab  file  to
   /etc/cron.d. Such files should be named after the package that supplies
   them. Files must conform to the same naming convention as used by  run-
   parts(8):  they  must  consist solely of upper- and lower-case letters,
   digits, underscores, and hyphens. If the -l option is  specified,  then
   they must conform to the LSB namespace specification, exactly as in the
   --lsbsysinit option in run-parts.
X Tian
sumber
1
Anda harus menentukan implementasi cron mana dan versi mana dari OS mana dan dari versi mana Anda mengutipnya. cronadalah sesuatu yang sangat bervariasi dari OS ke OS dan pada beberapa Anda dapat memilih antara beberapa implementasi.
Stéphane Chazelas