Jak tymczasowo wyłączyć jedno lub więcej zadań cron użytkowników? W szczególności nie chcę zawieszać praw crona użytkownika - po prostu nie zwalniam żadnego z jego zadań.
Jestem na systemach SLES 11 SP2 i SP3
Jak tymczasowo wyłączyć jedno lub więcej zadań cron użytkowników? W szczególności nie chcę zawieszać praw crona użytkownika - po prostu nie zwalniam żadnego z jego zadań.
Jestem na systemach SLES 11 SP2 i SP3
Odpowiedzi:
touch /var/spool/cron/crontabs/$username; chmod 0 /var/spool/cron/crontabs/$username
powinien załatwić sprawę. Przywróć za pomocą chmod 600
i touch
(musisz zmienić mtime pliku, aby cron (próbował) ponownie go załadować).
Przynajmniej w Debianie i prawdopodobnie w ogóle z Vixie cron, chmod 400 /var/spool/cron/crontabs/$username
robi to samo, ponieważ implementacja nalega, aby uprawnienia wynosiły dokładnie 600. Jednak trwa to tylko do momentu uruchomienia crontab
polecenia przez użytkownika.
Jeśli chcesz solidnego sposobu, nie sądzę, że jest coś lepszego niż tymczasowe usunięcie ich crontab z drogi lub zmiana uprawnień i tymczasowe dodanie ich do /etc/cron.deny
.
chmod
.
touch $username
po chmod
. Ale to nie pomogło. (btw załatwiłeś sprawę cron.deny
)
chgrp root /var/spool/cron/crontabs
Co powiesz na coś takiego, aby wyłączyć crontab użytkownika:
crontab -l -u [username] >/tmp/[username].cron.tmp
crontab -r -u [username]
i ponownie włączyć:
crontab -u [username] /tmp/[username].cron.tmp
Ma to tę dodatkową zaletę, że można go uruchomić jako ten użytkownik bez konieczności rootowania (wystarczy usunąć parametr -u).
Jeśli używasz Debiana, dotyczy to tylko Debiana AFAIK :
Możesz to zrobić, dodając kropkę do nazwy kumpla.
Zachowanie jest opisane w oficjalnych dokumentach Debiana:
https://www.debian.org/doc/debian-policy/#cron-job-file-names
Nazwa pliku zadania cron nie może zawierać żadnych kropek ani znaków plus (. Lub +), ponieważ spowoduje to zignorowanie pliku przez crona. Zamiast tego należy użyć podkreślników (_). i + znaki.
Jeśli chcesz po prostu cron
całkowicie zatrzymać wszystkie zadania - na przykład wykonując konserwację systemu, z którą mogą źle oddziaływać - polecenia są zwykle
systemctl stop crond.service
i, aby wznowić
systemctl start crond.service
Zakładam, że potrzebujesz uprawnień roota lub koła, aby je wykonać; w razie potrzeby uruchom je za pomocą sudo lub (w ostateczności) zaloguj się jako root.
Przesada w przypadku konkretnego zadanego pytania, ale zapewnia „kompleksowe zakupy” i nie wymaga odtwarzania z systemem plików lub plikami tymczasowymi.
Zgadzam się, że ścieżka przez systemctl jest tą, którą należy obrać. Na malinie byłyby to polecenia
sudo systemctl stop cron.service
sudo systemctl start cron.service
cron
usługi. OP chciał mieć możliwość wyboru crontabs, które użytkownicy mają wyłączyć.
-u user
przełącznikacrontab
polecenia i umieścić znak#
komentarza przed zadaniami, aby wyłączyć dla danego użytkownika?