Назад | Перейти на главную страницу

легко включить или отключить cron

Всякий раз, когда мне нужно включить crons, я копирую файл cron в папку спула.

cp /home/shantanu/shantanu /var/spool/cron/
chown shantanu:root /var/spool/cron/shantanu 

Это сработает? С какими проблемами я могу столкнуться?

обновление: с использованием CentOS

Это может работай. Но..

Как говорилось на предыдущих плакатах: не делайте этого. Использовать crontab -e. Прямое редактирование файлов может работать, но это не надежная практика. Ваш материал может сломаться в любой момент при обновлении задействованных компонентов. Кроме того, он не очень портативен, другие системы могут хранить файлы в другом месте. Это похоже на самостоятельную реализацию printf вместо использования стандартного iolib.

Так что не делай этого так.

edit: И если вам нужно сгенерировать crontab с помощью сценария оболочки, просто вставьте свой материал в crontab (Он даже знает псевдо-файл '-'! Прочтите страницу руководства.).

Официальный способ отключить некоторые задания cron для определенного пользователя - ввести crontab -e -u <user> и поставить # в начале комментировать.


ОБНОВИТЬ

Потому что файл cron будет частью сценария оболочки.

Попробуй это:

crontab -l -u shantanuo > shantanuo.cron
sed -i 's/^/#/' shantanuo.cron
crontab shantanuo.cron
rm -f shantanuo.cron

Почему бы просто не использовать команду crontab -e, или если вы вошли в систему как root, crontab -e -u shantanu?

Это может работать или не работать в зависимости от того, какую операционную систему (и какую версию cron) вы используете. Проверяя некоторые ящики Linux, их страница руководства cron говорит следующее

Кроме того, cron ежеминутно проверяет, изменилось ли время модификации его каталога спула (или время модификации в / etc / crontab), и, если это так, cron проверит время модификации на всех crontab и перезагрузит те, которые изменились. Таким образом, cron не нужно перезапускать при изменении файла crontab. Обратите внимание, что команда crontab (1) обновляет время модификации каталога спула при каждом изменении crontab.

Итак, предоставляя /var/spool/cron mtime каталога обновляется, затем cron проверит отдельные crontab, чтобы увидеть, были ли они обновлены, и перечитает их.

Если мы посмотрим на окно Solaris 10, на странице руководства cron написано следующее:

cron проверяет crontab или командные файлы только на этапе инициализации собственного процесса и при запуске команды crontab или at. Это снижает накладные расходы на проверку наличия новых или измененных файлов через регулярные запланированные интервалы.

Таким образом, в системе Solaris 10 (и, возможно, в других системах) вам придется использовать команду crontab, чтобы изменить файлы и сообщить cron, что он должен перечитать свои файлы crontab.

Если вы хотите приостановить задания без перезапуска cron (что может повлиять на запуск заданий, например, каждые 3 минуты), вы можете использовать файлы блокировки, которые легко создаются или удаляются в сценарии.

*/3 0 * * * [ ! -f /tmp/job.lock ] && /path/to/job

Итак, чтобы приостановить использование работы:

touch /tmp/job.lock

Перезапустите планирование в cron:

rm /tmp/job.lock

Прелесть этого заключается в том, что вы можете использовать разные файлы блокировки для разных заданий (или групп заданий, если все они используют один и тот же файл блокировки), не беспокоясь о прерывании планирования или поломке cron из-за ошибок при редактировании (скриптом или вручную) crontab .