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

Надежное отключение определенного скрипта cron. {Ежечасно, ежедневно, еженедельно}

В различных системах, которые я администрирую, есть скрипты cron, которые запускаются через обычно используемые /etc/cron.{hourly,daily,weekly} макет. Я хочу знать, есть ли какая-нибудь общая функция «отключить этот сценарий».

Очевидно, простое удаление чего-либо из данного каталога отключит его, но я ищу более постоянное решение. Удаление /etc/cron.daily/slocate будет работать, чтобы отключить ночной updatedb на моей домашней машине (где я никогда не использую slocate), но в следующий раз, когда я обновлю пакет slocate, я почти уверен, что он появится снова.

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

Ты должен быть способен chmod -x scriptname чтобы отключить сценарий, но оставить файл на месте.

run-parts не выполняет задания, в имени которых есть точка, поэтому

mv /etc/cron.d/job /etc/cron.d/job.disabled

сделает свое дело.

Обычно cron.daily вызывается через /etc/crontab через строку, например, например

run-parts --report /etc/cron.daily

man run-parts дает вам варианты.

run-parts --test /etc/cron.daily показывает, какие задания выполняются без их выполнения.

Я предпочитаю делать подкаталог Disabled и перемещать туда свои рабочие места.

В любом случае, если вы обновляете пакет, вероятно, что задание снова встанет на свои места или удаленные биты 'x' будут восстановлены.

Вы можете удалить пакет slocate, если никогда не используете его.

Если вы используете cfengine (https://cfengine.com/) вы можете сделать это с помощью disable. Вы просто пишете файл обещания для группы хостов, и он будет применяться при следующем запуске cfagent. Сделать это с куклой, поваром или кем-то еще тоже должно быть довольно просто.

В /etc/cron.daily et. al. сценарии запускаются сценарием, называемым run-parts. Этот сценарий меняется. Например, упомянутый выше переключатель --test отсутствует на машине, которую я использую в данный момент.

Run-parts - это сценарий bash. Это обычно полезный инструмент для запуска всех скриптов в каталоге, который указан в качестве аргумента. Обычно он находится в / usr / bin / run-parts.

В нем есть логическая путаница, позволяющая решить, что бежать. Этот код содержит ответ на ваш вопрос, но он тоже может быть разным. Поэтому вам нужно прочитать код, чтобы быть в безопасности.

В рассматриваемой мной версии есть логика, которая при работе с каталогом <foo> проверяет наличие <foo> /jobs.deny. Если он существует, он отказывается запускать любой сценарий, упомянутый в этом файле в отдельной строке. Предполагая, что у вас есть эта функциональность, это круто, потому что она будет продолжать работать после установки или обновления пакета, который устанавливается.

Если вы имеете дело с RHEL и производными (что обеспечивает crontabs package), вы можете явно отключить задание, указав его имя в jobs.deny файл.

Из страница руководства crontabs / run-parts:

Выполнение файлов можно разрешить или запретить, создав файл jobs.allow или jobs.deny, который работает аналогично другим файлам конфигурации разрешения / запрета. Файл должен быть создан в указанном каталоге.

пример /etc/cron.daily/jobs.deny может содержать, например, 0logwatch, который запрещает выполнение этого скрипта.

Если вам не нужны и user-crontabs, просто отключите crond в своем списке услуг.

В Debian и версиях на базе Debian это просто вопрос удаления символической ссылки из соответствующего /etc/rcX.d (для уровня запуска X).

Я не знаю, как вы обрабатываете сервисы в SUSE или Gentoo.