Frage

Wie kann ich die letzte gelaicht Hintergrundaufgabe in Linux töten?

Beispiel:

doSomething
doAnotherThing
doB &
doC
doD
#kill doB
????
War es hilfreich?

Lösung

Es gibt eine spezielle Variable für diesen in bash:

kill $!

$! dehnt sich auf den PID des letzten Prozesses im Hintergrund ausgeführt wird.

Andere Tipps

Sie können durch Auftragsnummer töten. Wenn Sie eine Aufgabe in den Hintergrund gestellt werden Sie so etwas wie sehen:

$ ./script &
[1] 35341

Das [1] ist die Auftragsnummer und kann wie verwiesen werden:

$ kill %1
$ kill %%  # Most recent background job

Um eine Liste von Auftragsnummern finden Sie in den jobs Befehl verwenden. Mehr von man bash:

  

Es gibt eine Reihe von Möglichkeiten, um einen Job in der Schale zu verweisen. Der Charakter % führt einen Jobnamen ein. Auftragsnummer n können          bezeichnet als %n. Ein Job auch bezeichnet werden kann verwendet, um einen Präfix des Namen zu verwenden, es zu starten, oder mit einer Teilkette, dass          erscheint in seinem Befehlszeile. Zum Beispiel bezieht sich %ce zu einem gestoppten ce Job. Wenn ein Präfix mehr als einen Job übereinstimmt, bash          meldet einen Fehler. Verwendung %?ce, andererseits bezieht sich auf jede Aufgabe, den Zeichenfolge ce in seiner Befehlszeile enthält. wenn die          String entspricht mehr als ein Job, bash meldet einen Fehler. Die Symbole %% und %+ auf den Begriff der Shell beziehen des aktuellen Auftrags, die der letzte Job ist gestoppt, während es in den Vordergrund oder begann im Hintergrund war. Die bisherige Arbeit kann          wird unter Verwendung von %- verwiesen. In Ausgabe an Arbeitsplätzen betreffen (zum Beispiel die Ausgabe des Jobs-Befehl), ist der aktuelle Job immer          mit einem + gekennzeichnet, und dem vorherigen Job mit einem -. Ein einzelner % (ohne begleitende Auftragsspezifikation) bezieht sich auch auf die          aktuelle Job.

Der folgende Befehl gibt Ihnen eine Liste aller Hintergrundprozesse in der Sitzung zusammen mit der pid. Sie können es dann verwenden, um den Prozess zu beenden.

jobs -l

Beispiel Nutzung:

$ sleep 300 &
$ jobs -l
[1]+ 31139 Running                 sleep 300 &
$ kill 31139

Dies sollte alle Hintergrundprozesse beenden:

jobs -p | xargs kill -9
skill doB

skill ist eine Version des Kill-Befehl, den Sie einen oder mehrere Prozesse auf einem bestimmten Kriterien auswählen können.

Sie müssen seine pid ... verwenden "ps -A" zu finden ist.

Dies ist ein Thema aus Antwort, aber für diejenigen, die daran interessiert sind, es vielleicht wertvoll.

Wie in @John Kugelman Antwort,% auf Auftragsspezifikation bezogen. , wie effizient das finden? verwenden weniger u Muster Befehl , Mann weniger Pager verwenden scheint (nicht sicher), in man bash Art &% geben Sie dann nur zeigen Linien eingeben werden, die, ‚%‘ enthält alle bis wieder aufführen, geben Sie &. Geben Sie dann.

Verwenden Sie einfach den Befehl killall:

killall Taskname

für weitere Informationen und erweiterte Optionen, Typ "Mann killall".

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top