Запретить пользователям использовать одно и то же расписание cron?
У меня на сервере много пользователей, использующих одно и то же расписание cron, и это вызывает высокую нагрузку на сервер. Можем ли мы предотвратить это?
Например, если есть x номеров пользователей, которые используют следующее расписание cron: 0 1 * * *
Можно ли запретить будущим пользователям использовать одно и то же расписание cron?
3 ответа
Вы можете назначить cron для каждой учетной записи пользователя:
crontab -e -u user
Если ваши пользователи просто намерены выполнять ночные задачи, решение, основанное на запуске их ~ / nightly.sh, может быть проще.
Затем вы будете запускать "/home/*/nightly.sh", один за другим. Конечно, вам придется запускать скрипт каждого пользователя с его собственными разрешениями и в приемлемой среде (cron делает это).
Но это может быть довольно просто. Например:
for user in user0 user1 user2 user3 ...
do
script=/home/$user/nightly.sh
[ -x $script ] || continue
sudo -u $user 2>&1 | mail -s "nightly.sh" $user
done
Почему бы просто не написать скрипт, который сравнивает все файлы cron пользователя и перемещает их, если они конфликтуют? если это найдено в нескольких crontabs 0 1 * * *
для каждого существующего конфликта переместите минуты 5 1 * * *
а также 10 1 * * *
, Затем просто запустите этот скрипт в корневом файле crontab, чтобы он автоматически часто менял пользовательские файлы.
Если крайне важно, чтобы задания пользователей cron выполнялись в указанное ими время, вам придется взглянуть на использование ограничений PAM.