Предостережения:1. Мои знания * nix очень ограничены, но растут. 2. Эта конкретная проблема относится к SunOS 5.10 (я знаю), но меня будут интересовать общие ответы.

Если запись в cron запускает скрипт myscript.pl каждую минуту, и в какой-то момент я изменяю этот файл скрипта, гарантируется ли следующее выполнение cron для выполнения измененного скрипта, или он может где-нибудь / каким-то образом иметь кэшированную версию, которую он продолжит выполнять?

Я думаю, что интерпретатор Perl может также прийти к этой конкретной проблеме.

1 ответ1

2

Он будет запускать новую версию, так как каждый раз, когда запускается cron, он будет повторять команды, которые он кэшировал из crontab, но не «результат» этих команд.

Итак, если вы изменили скрипт, но не сам crontab, он будет запускать новый скрипт каждый раз.

Если вы изменили crontab (то есть, возможно, как часто он запускается, путь к сценарию и т.д.), Вы должны вызвать crontab чтобы он перечитал эту информацию. В противном случае cron проверяет изменения через modtime или используя ionotify, как на странице man:

   There are two ways how changes in crontables are checked.  The first
   method is checking the modtime of a file.  The second method is using
   the inotify support.  Using of inotify is logged in the /var/log/cron
   log after the daemon is started.  The inotify support checks for
   changes in all crontables and accesses the hard disk only when a
   change is detected.

   When using the modtime option, Cron checks its crontables' modtimes
   every minute to check for any changes and reloads the crontables
   which have changed.  There is no need to restart Cron after some of
   the crontables were modified.  The modtime option is also used when
   inotify can not be initialized.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .