- Jak mogę zobaczyć zadania crontab, które są w toku?
- Jak ręcznie zatrzymać trwające zadania Crontab?
Czy [to] pytanie dotyczy bieżących uruchomionych procesów cron?
tak
Aby ręcznie zabić proces, jednym ze sposobów jest użycie pkill
Myślałem o pkill / killall, ale niektóre z moich poleceń w pliku crontab są odpowiednio! oznacza to, że po zakończeniu polecenia zostanie uruchomione następne! na przykład:
sudo crontab -e
00 10 * * * /usr/bin/wget LINK ; shutdown -h now
Więc jeśli zabiję wget
, komputer zostanie wyłączony !!! -> Chcę całkowicie zabić zadanie crona, a nie jego część!
Następny pkill
problem: co ze skryptami? (Zaimportowałem kilka skryptów bash do crontab -e
) ->sudo pkill ???
Odpowiedzi:
Po pierwsze, użyj tylko jednego polecenia w wierszu w crontab. Zmień tę linię crontab:
więc wygląda to tak:
i twórz
/path/to/my/crontab/script1.sh
z tej zawartości:Oczywiście nie zapomnij dać zezwolenia na wykonanie:
Po drugie, możesz zobaczyć uruchamianie zadań crontab, w użytecznym i czytelnym formacie, w wynikach:
Pojawią się w pierwszych wierszach, mniej więcej tak:
Pierwsza kolumna to PID, druga to identyfikator sesji, a trzecia to komenda uruchomiona przez crona. Możesz zabić wszystkie procesy związane z konkretnym zadaniem cron przy użyciu identyfikatora sesji, więc w powyższym przykładzie powinieneś zabić identyfikator sesji 4289:
źródło
sh ps: cmd: keyword not found ps: illegal argument: afx
ps -o pid,sess,cmd -afx | egrep "( |/)cron( -f)?$"
Aby ręcznie zabić proces, jednym ze sposobów jest użycie
pkill
. pkill zatrzyma wszystkie procesy, które mają następujący wzorzec w nazwie. na przykład, aby zatrzymać wszystkie procesy wget, użyj:źródło
sudo crontab -e
=>00 10 * * * /usr/bin/wget LINK ; shutdown -h now
=> Więc jeśli zabiję wget , komputer zostanie wyłączony !!! -> Chcę całkowicie zabić zadanie crona, a nie jego część! następny problem z pkill: A co ze skryptami? (Zaimportowałem kilka skryptów bash docrontab -e
) ->sudo pkill ???
zmień swój cronjob w ten sposób
Powinno to działać, ponieważ
&&
oznacza to, że drugie polecenie zostanie wykonane tylko wtedy, gdy pierwsze zostało poprawnie wykonane (zwracanie statusu 0 do konsoli / systemu), co nie powinno mieć miejsca (ponieważ proces został zabity przez użytkownika i powinien zwrócić inną wartość niż 0).źródło