Wie man alle Python-Prozesse außer einem von Bash beendet

10

Wie kann ich alle Python-Prozesse mit Ausnahme eines Python-Skripts aus dem Bash beenden? (Ich kenne seinen Namen, aber seine PID kann manchmal geändert werden).

Ich brauche irgendwie pkill -f "python"aber mit dem Ausschluss des Python-spezifischen Skripts.

Bitte beraten.

user370717
quelle

Antworten:

12

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

Update: Schritt-für-Schritt-Erklärung wie in den Kommentaren angefordert

  • ps aux |grep python- Alle Prozesse anzeigen, die dem pythonMuster entsprechen
  • grep -v 'pattern_of_process_you_dont_want_to_kill' - Prozess ausschließen, den Sie nicht töten möchten
  • awk '{print $2}' - zweites Ausgabefeld anzeigen, es ist PID.
  • xargs kill- killBefehl auf jedes Eingabearg (PID) anwenden .

Wenn Sie mit dem xargsBefehl nicht vertraut sind , würde ich Ihnen raten, sich keine Sorgen zu machen, wenn Sie ihn nicht sofort verstehen. Es könnte zum ersten Mal ziemlich schwierig erscheinen. Ich habe ein sehr einfaches Beispiel für seine Verwendung gepostet. Sie können bei Google nach mehr suchen.

user1700494
quelle
1
Großartig, aber können Sie bitte erklären, wie es funktioniert? Was ist zum Beispiel awk '{print $ 2}' und xargs kill?
user370717
awk '{print $2}' - druckt das zweite psAusgabefeld, im aktuellen Fall PID. xargswendet killBefehl auf jeden anPID
user1700494
Das in einen Kommentar einzufügen ist nett, aber ich würde lieber für Ihre Antwort stimmen, nachdem dieser gut formatierte Kommentar in Ihre Antwort integriert wurde.
Küken