Як cron.d повідомляє систему?


16

Якщо я поставлю новий сценарій, /etc/cron.d/як система знає, щоб вставити його в глобальний crontab?

Чи потрібно перезапустити процес, щоб забрати його?

Чи initзапускає crontab щохвилини, і він буде потім повторно відсканований?

Він використовує inotify та watch /etc/cron.d?

Не вдалося знайти нічого страшного очевидного, і мені завжди було цікаво

Відповіді:


20

Із cron (8):

   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

   …

   cron then wakes up every minute, examining all stored crontabs, checking each com‐
   mand to see if it should be run in the current minute.  When  executing  commands,
   any  output  is  mailed  to  the owner of the crontab (or to the user named in the
   MAILTO environment variable in the crontab, if such exists).  The children  copies
   of  cron  running these processes have their name coerced to uppercase, as will be
   seen in the syslog and ps output.

   Additionally, cron checks each minute to see if its spool directory's modtime  (or
   the  modtime  on  /etc/crontab) has changed, and if it has, cron will then examine
   the modtime on all crontabs and reload those which have changed.  Thus  cron  need
   not  be  restarted  whenever a crontab file is modified.  Note that the crontab(1)
   command updates the modtime of the spool directory whenever it changes a crontab.

Також зауважте, що cron не "вставляє вміст cron.d у глобальний crontab" - вони незалежні:

   However, they are independent of /etc/crontab: they do not, for example, inherit 
   environment  variable  settings  from it.

5
Тож він перевірятиме себе щохвилини, в тому числі/etc/cron.d/
Том О'Коннор,
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.