Запретить пользователям использовать одно и то же расписание 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.

Другие вопросы по тегам