Запретить пользователям использовать одно и то же расписание cron?

313
IMB

У меня на сервере много пользователей, использующих одно и то же расписание cron, и это вызывает высокую нагрузку на сервер. Можем ли мы предотвратить это?

Например, если существует x номеров пользователей, которые используют следующее расписание cron: 0 1 * * *возможно ли запретить будущим пользователям использовать одно и то же расписание cron?

1
Смотрите также http://serverfault.com/questions/321840/what-are-some-ways-to-prevent-user-cron-jobs-from-crushing-the-servers charlesbridge 11 лет назад 0

3 ответа на вопрос

0
Guardian

Вы можете назначить cron для каждой учетной записи пользователя:

crontab -e -u user 
Это не мешает двум пользователям использовать одно и то же расписание. slhck 11 лет назад 1
0
Cobolt

Why not simply write a script that compares all the user's cron files and moves them on if they conflict? if this is found in several crontabs 0 1 * * * for each conflict that exists change move the minutes along 5 1 * * * and 10 1 * * *. Then simply run this script in the root crontab so that it automatically changes user crontabs often.

If it is crucial that users' cron jobs run at the times they specified you will have to take a look at using PAM limits.

0
Raúl Salinas-Monteagudo

Если ваши пользователи просто намерены выполнять ночные задачи, решение, основанное на запуске их ~ / 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 

Похожие вопросы