Почему crontab -e отличается от менее / etc / crontab?

11

Я довольно новичок в Unix и Crons, в настоящее время я собирался добавить Cron в существующий файл Cron. Я читал, вы могли бы сделать это с crontab -e. Меня сбивает с толку то, что crontab -eпоказывает разные кроны / команды, чем less /etc/crontab- как получилось? Какой правильный путь / файл для редактирования?

Alex
источник

Ответы:

14

Хотя ответ @X Tian содержит информацию о различных файлах для crontab, важная информация относительно вашего вопроса такова:

crontab -eредактирует файл crontab пользователя (хранится в /var/spool/cron/crontabs/каталоге на текущих системах Debian, но YMMV) или создает новый, а не /etc/crontab. Аналогично для crontab -l(перечислить файл crontab) и crontab -r(удалить файл crontab).

Для всех заданий cron, которые должны выполняться под учетной записью пользователя, вы должны использовать crontab -e. Для системных заданий вы должны добавить файл /etc/cron.d, если он существует; под /etc/cron.{hourly|daily|weekly|monthly}(но они не должны называться как имя пакета!), если это соответствует вашей цели; или добавьте строку в /etc/crontab. Но учтите, что это /etc/crontabможет быть перезаписано обновлением системы.

Dubu
источник
@Stephane Chazelas Спасибо за разъяснения с вашей правкой. /var/spool/cron/Каталог специальность Linux (см File Hierarchy Standard ) и расположение может отличаться по отличным от текущей Debian систем.
Dubu
3

Вы действительно хотите прочитать справочные страницы man cronиman crontab

Вот выдержка, которая охватывает ваш вопрос. Отman cron

ЗАМЕЧАНИЯ: cron ищет в своей области спула (/ var / spool / cron / crontabs) файлы crontab (которые названы в честь учетных записей в / etc / passwd); Найденные crontabs загружаются в память. Обратите внимание, что к crontabs в этом каталоге нельзя обращаться напрямую - для доступа к ним и их обновления должна использоваться команда crontab.

   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 Тянь
источник
1
Вы должны указать, какую реализацию cron и какую версию для какой ОС и какую версию вы цитируете. cronэто то, что сильно варьируется от ОС к ОС, и в некоторых вы можете выбирать между несколькими реализациями.
Стефан Шазелас