Jak zabić wszystkie procesy Pythona oprócz jednego z bash


11

Jak mogę zabić z bazy danych wszystkie procesy Pythona z wyjątkiem jednego skryptu Pythona. (Znam jego nazwę, ale jego pid można czasem zmienić).

Potrzebuję trochę, pkill -f "python"ale z wyłączeniem skryptu specyficznego dla Pythona.

Proszę doradź.

Odpowiedzi:


13

ps aux |grep python |grep -v 'pattern_of_process_you_dont_want_to_kill' |awk '{print $2}' |xargs kill

Aktualizacja: wyjaśnienie krok po kroku zgodnie z żądaniem w komentarzach

  • ps aux |grep python- pokaż wszystkie procesy, które pasują do pythonwzorca
  • grep -v 'pattern_of_process_you_dont_want_to_kill' - wyklucz proces, którego nie chcesz zabić
  • awk '{print $2}' - pokaż drugie pole wyjściowe, jest to PID.
  • xargs kill- zastosuj killpolecenie do każdego wejściowego argumentu (PID).

Jeśli nie znasz xargskomendy, radzę ci nie martwić się, jeśli nie zrozumiesz go od razu. Po raz pierwszy może się to wydawać dość trudne. Zamieściłem bardzo prosty przykład jego użycia, możesz google więcej.


1
Świetnie, ale czy możesz wyjaśnić, jak to działa, na przykład czym jest awk „{print $ 2}” i xargs kill?
user370717,

awk '{print $2}' - wypisuje drugie pole pswyjściowe, w obecnym przypadku jest PID. xargsDotyczy killpolecenia każdemuPID
user1700494

1
Umieszczenie tego w komentarzu jest miłe, ale wolę głosować na twoją odpowiedź po tym, jak dobrze sformatowany komentarz został włączony do twojej odpowiedzi.
pisklęta
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.