Как временно отключить одно или несколько заданий пользователя cron? В частности, я не хочу приостанавливать права пользователя на cron - просто не увольнять их.
Разве вы не можете просто использовать -u userпереключатель crontabкоманды и поставить #символ комментария перед заданиями, чтобы отключить его для данного пользователя?
Янис
@Janis, тогда мне нужно следить за тем, что пользователь (их много) уже прокомментировал, плюс пользователь может пойти дальше и добавить еще одну вещь (я не добавляю их в /etc/cron.deny). Слишком много ручной работы :(
Динеш
Динеш, я (неправильно) понял, что ты хочешь детальный контроль над тем, что ты отключаешь.
Янис
Ответы:
10
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.
Благодарю. В моей системе это / var / spool / cron / tabs / $ username. Но он все еще выполняется, даже после chmod.
Динеш
После изменения файла perms мне также нужно было остановить / перезапустить cron. Я думал, что это, вероятно, потому что Cron может держать вещи в памяти. Поэтому я добавил touch $usernameпосле chmod. Но это не помогло. (кстати, получил ваше мнение cron.deny)
Динеш
@Dinesh Действительно, вам нужно обновить mtime файла, иначе cron считает, что он не изменился и хранит кэшированную информацию. Я заметил это во время тестирования вчера, но забыл упомянуть об этом в своем ответе, извините за это.
Жиль "ТАК - перестань быть злым"
Если вы хотите отключить для всех стандартных пользователей просто:chgrp root /var/spool/cron/crontabs
shrimpwagon
9
Как насчет того, чтобы отключить пользовательский crontab:
Это дает дополнительное преимущество, заключающееся в том, что вы можете запускать его как этот пользователь без необходимости суперпользователя (просто уберите параметр -u)
Имя файла задания cron не должно содержать символы точки или плюс (. Или +), поскольку это приведет к тому, что cron проигнорирует файл. Символ подчеркивания (_) следует использовать вместо. и + символы.
Если вы просто хотите на время полностью остановить все cronзадания, например, во время обслуживания системы, с которым они могут плохо взаимодействовать, команды обычно
systemctl stop crond.service
и, чтобы возобновить
systemctl start crond.service
Я предполагаю, что вам нужны полномочия root или wheel для их выполнения; при необходимости запустите их через sudo или (в крайнем случае) войдите в систему как root.
Избыточное количество для конкретного поставленного вопроса, но обеспечивает «универсальные покупки» и не требует воспроизведения с файловой системой или временными файлами.
-u user
переключательcrontab
команды и поставить#
символ комментария перед заданиями, чтобы отключить его для данного пользователя?Ответы:
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:
и повторно включить:
Это дает дополнительное преимущество, заключающееся в том, что вы можете запускать его как этот пользователь без необходимости суперпользователя (просто уберите параметр -u)
источник
Если вы используете Debian, это относится только к Debian AFAIK :
Вы можете сделать это, добавив точку к имени cronjob.
Поведение упоминается в официальных документах Debian:
https://www.debian.org/doc/debian-policy/#cron-job-file-names
источник
Если вы просто хотите на время полностью остановить все
cron
задания, например, во время обслуживания системы, с которым они могут плохо взаимодействовать, команды обычнои, чтобы возобновить
Я предполагаю, что вам нужны полномочия root или wheel для их выполнения; при необходимости запустите их через sudo или (в крайнем случае) войдите в систему как root.
Избыточное количество для конкретного поставленного вопроса, но обеспечивает «универсальные покупки» и не требует воспроизведения с файловой системой или временными файлами.
источник
Я согласен, путь через systemctl - единственный. На малине, пальцы ног будут
источник
cron
сервис. ОП хотел иметь возможность выбрать, какие пользовательские crontabs отключить.