Может ли cron "кэшировать" скрипты, которые он запускает?

520
zkarj

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

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

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

0

1 ответ на вопрос

2
djsmiley2k

Он будет запускать новую версию, так как каждый раз, когда запускается 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. 
Благодарю. Я полагал, что это, скорее всего, так, но просто не видел, чтобы это было ясно написано. zkarj 6 лет назад 0