Benutzer daran hindern, denselben cron-Zeitplan zu verwenden?

395
IMB

Ich habe eine Menge Benutzer auf meinem Server, die genau den gleichen cron-Zeitplan verwenden, und dies verursacht eine hohe Serverlast. Können wir das verhindern?

Wenn zum Beispiel x Benutzerzahlen verwendet werden, die den folgenden cron-Zeitplan verwenden: Ist 0 1 * * *es möglich, zukünftige Benutzer daran zu hindern, denselben cron-Zeitplan zu verwenden?

1
Siehe auch http://serverfault.com/questions/321840/what-are-some-ways-to-prevent-user-cron-jobs-von-crushing-the-servers charlesbridge vor 11 Jahren 0

3 Antworten auf die Frage

0
Guardian

Sie können cron geplant pro Benutzerkonto zuweisen :

crontab -e -u user 
Dies verhindert nicht, dass zwei Benutzer denselben Zeitplan verwenden. slhck vor 11 Jahren 1
0
Cobolt

Warum schreiben Sie nicht einfach ein Skript, das alle Cron-Dateien des Benutzers vergleicht und bei einem Konflikt weiterführt? Wenn dies in mehreren Crontabs 0 1 * * *für jeden vorhandenen Konflikt gefunden wird, ändern Sie die Minuten mit 5 1 * * *und 10 1 * * *. Dann führen Sie dieses Skript einfach in der Root-Crontab aus, so dass Benutzer Crontabs häufig automatisch geändert werden.

Wenn es entscheidend ist, dass Cron-Jobs der Benutzer zu den angegebenen Zeiten ausgeführt werden, müssen Sie sich die PAM-Grenzwerte ansehen .

0
Raúl Salinas-Monteagudo

Wenn Ihre Benutzer lediglich nächtliche Aufgaben ausführen möchten, ist eine Lösung, die auf der Ausführung von ~ / nightly.sh basiert, möglicherweise einfacher.

Sie würden dann «/home/*/nightly.sh» nacheinander ausführen. Natürlich müssten Sie das Skript jedes Benutzers mit seinen eigenen Berechtigungen und in einer angemessenen Umgebung ausführen (cron macht diese Dinge).

Aber es könnte ganz einfach sein. Zum Beispiel:

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