it-swarm.com.de

linux: kill background task

Wie kann ich die letzte Hintergrundaufgabe unter Linux beenden?

Beispiel:

doSomething
doAnotherThing
doB &
doC
doD
#kill doB
????
180
flybywire

In bash gibt es dafür eine spezielle Variable:

kill $!

$! wird auf die PID des zuletzt im Hintergrund ausgeführten Prozesses erweitert.

220
falstro

Sie können nach Jobnummer töten. Wenn Sie eine Aufgabe in den Hintergrund stellen, sehen Sie Folgendes:

$ ./script &
[1] 35341

Das [1] Ist die Auftragsnummer und kann wie folgt referenziert werden:

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

Verwenden Sie den Befehl jobs, um eine Liste der Auftragsnummern anzuzeigen. Mehr von man bash:

Es gibt verschiedene Möglichkeiten, auf einen Job in der Shell zu verweisen. Das Zeichen % Führt einen Jobnamen ein. Die Auftragsnummer n kann als %n Bezeichnet werden. Auf einen Job kann auch mit einem Präfix des Namens verwiesen werden, mit dem er gestartet wurde, oder mit einer Teilzeichenfolge, die in der Befehlszeile angezeigt wird. Beispielsweise bezieht sich %ce Auf einen angehaltenen ce Job. Wenn ein Präfix mit mehr als einem Job übereinstimmt, meldet die Bash einen Fehler. Die Verwendung von %?ce Bezieht sich dagegen auf einen Job, dessen Befehlszeile die Zeichenfolge ce enthält. Wenn die Teilzeichenfolge mit mehr als einem Job übereinstimmt, meldet die Bash einen Fehler. Die Symbole %% Und %+ Beziehen sich auf die Shell-Vorstellung des aktuellen Jobs, bei dem es sich um den letzten Job handelt, der angehalten wurde, während er sich im Vordergrund befand oder im Hintergrund gestartet wurde. Der vorherige Job kann mit %- Referenziert werden. Bei der Ausgabe von Jobs (z. B. der Ausgabe des Befehls jobs) wird der aktuelle Job immer mit + Und der vorherige Job mit - Gekennzeichnet. Ein einzelnes % (Ohne zugehörige Auftragsspezifikation) bezieht sich auch auf den aktuellen Auftrag.

280
John Kugelman

Mit dem folgenden Befehl erhalten Sie eine Liste aller Hintergrundprozesse in Ihrer Sitzung zusammen mit der PID. Sie können es dann verwenden, um den Prozess abzubrechen.

jobs -l

Anwendungsbeispiel:

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

Dies sollte alle Hintergrundprozesse beenden:

jobs -p | xargs kill -9
24
Prabhu Are
skill doB

skill ist eine Version des Befehls kill, mit dem Sie einen oder mehrere Prozesse basierend auf bestimmten Kriterien auswählen können.

2
gte525u

Du brauchst seine PID ... benutze "ps-A", um sie zu finden.

1
jldupont

dies ist eine Antwort, die nicht zum Thema gehört, aber für diejenigen, die interessiert sind, ist sie möglicherweise wertvoll.

Wie in der Antwort von @John Kugelman bezieht sich% auf die Auftragsspezifikation. wie man das effizient findet? benutze den & pattern Befehl von less, scheint, dass man weniger Pager benutzt (nicht so sicher), in man bash type &% dann type Enter zeigt nur Zeilen an, die '%' enthalten, um es erneut zu zeigen alle Arten &. dann Enter.

0
qeatzy