Как временно отключить одно или несколько заданий пользователя cron? В частности, я не хочу приостанавливать права пользователя на cron - просто не увольнять их.
Я нахожусь на SLES 11 SP2 и SP3 систем
Как временно отключить одно или несколько заданий пользователя cron? В частности, я не хочу приостанавливать права пользователя на cron - просто не увольнять их.
Я нахожусь на SLES 11 SP2 и SP3 систем
Ответы:
touch /var/spool/cron/crontabs/$username; chmod 0 /var/spool/cron/crontabs/$username
должен сделать свое дело. Восстановите с помощью chmod 600
и touch
(вам нужно изменить mtime файла, чтобы cron (попытался) перезагрузить его).
По крайней мере, на Debian и, возможно, на Vixie cron в целом, chmod 400 /var/spool/cron/crontabs/$username
тоже получается, потому что эта реализация настаивает на том, чтобы разрешения были ровно 600. Однако это продолжается только до тех пор, пока пользователь не выполнит crontab
команду.
Если вы хотите надежный способ, я не думаю, что есть что-то лучше, чем временно убрать их crontab или изменить разрешения и временно добавить их в /etc/cron.deny
.
chmod
.
touch $username
после chmod
. Но это не помогло. (кстати, получил ваше мнение cron.deny
)
chgrp root /var/spool/cron/crontabs
Как насчет того, чтобы отключить пользовательский crontab:
crontab -l -u [username] >/tmp/[username].cron.tmp
crontab -r -u [username]
и повторно включить:
crontab -u [username] /tmp/[username].cron.tmp
Это дает дополнительное преимущество, заключающееся в том, что вы можете запускать его как этот пользователь без необходимости суперпользователя (просто уберите параметр -u)
Если вы используете Debian, это относится только к Debian AFAIK :
Вы можете сделать это, добавив точку к имени cronjob.
Поведение упоминается в официальных документах Debian:
https://www.debian.org/doc/debian-policy/#cron-job-file-names
Имя файла задания cron не должно содержать символы точки или плюс (. Или +), поскольку это приведет к тому, что cron проигнорирует файл. Символ подчеркивания (_) следует использовать вместо. и + символы.
Если вы просто хотите на время полностью остановить все cron
задания, например, во время обслуживания системы, с которым они могут плохо взаимодействовать, команды обычно
systemctl stop crond.service
и, чтобы возобновить
systemctl start crond.service
Я предполагаю, что вам нужны полномочия root или wheel для их выполнения; при необходимости запустите их через sudo или (в крайнем случае) войдите в систему как root.
Избыточное количество для конкретного поставленного вопроса, но обеспечивает «универсальные покупки» и не требует воспроизведения с файловой системой или временными файлами.
Я согласен, путь через systemctl - единственный. На малине, пальцы ног будут
sudo systemctl stop cron.service
sudo systemctl start cron.service
cron
сервис. ОП хотел иметь возможность выбрать, какие пользовательские crontabs отключить.
-u user
переключательcrontab
команды и поставить#
символ комментария перед заданиями, чтобы отключить его для данного пользователя?