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/$usernamepowinien załatwić sprawę. Przywróć za pomocą chmod 600i 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/$usernamerobi to samo, ponieważ implementacja nalega, aby uprawnienia wynosiły dokładnie 600. Jednak trwa to tylko do momentu uruchomienia crontabpolecenia 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 $usernamepo 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 croncał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
cronusługi. OP chciał mieć możliwość wyboru crontabs, które użytkownicy mają wyłączyć.
-u userprzełącznikacrontabpolecenia i umieścić znak#komentarza przed zadaniami, aby wyłączyć dla danego użytkownika?