Hierfür gibt es viele Möglichkeiten.
Methode 1 - ps
Sie können den ps
Befehl verwenden, um die Prozess-ID für diesen Prozess zu ermitteln und anschließend den Prozess mithilfe der PID abzubrechen.
Beispiel
$ ps -eaf | grep [w]get
saml 1713 1709 0 Dec10 pts/0 00:00:00 wget ...
$ kill 1713
Methode 2 - pgrep
Sie finden die Prozess-ID auch über pgrep
.
Beispiel
$ pgrep wget
1234
$ kill 1234
Methode 3 - pkill
Wenn Sie sicher sind, dass es das einzige ist, das wget
Sie ausgeführt haben, können Sie pkill
den Auftrag mit dem Befehl namentlich beenden.
Beispiel
$ pkill wget
Methode 4 - Jobs
Wenn Sie sich in derselben Shell befinden, von der aus Sie den Job ausgeführt haben, der jetzt im Hintergrund ausgeführt wird. Sie können mit dem jobs
Befehl überprüfen, ob er noch ausgeführt wird, und ihn anhand seiner Auftragsnummer beenden.
Beispiel
Mein falscher Job sleep
.
$ sleep 100 &
[1] 4542
Finde die Jobnummer. HINWEIS: Die Nummer 4542 ist die Prozess-ID.
$ jobs
[1]+ Running sleep 100 &
$ kill %1
[1]+ Terminated sleep 100
Methode # 5 - fg
Mit dem fg
Befehl können Sie einen Hintergrundjob wieder in den Vordergrund bringen .
Beispiel
Falscher Job sleep
.
$ sleep 100 &
[1] 4650
Holen Sie sich die Nummer des Jobs.
$ jobs
[1]+ Running sleep 100 &
Bringen Sie Job 1 wieder in den Vordergrund und verwenden Sie dann Ctrl+ C.
$ fg 1
sleep 100
^C
$
jobs
hat keineoutput
undfg
sais:-bash: fg: 1: no such job
. Aber das Tippenfg
funktioniert gut undpkill wget
funktioniert auch gut. aberps -eaf|grep wget
und dannkill <process number>
nicht aufhören zu arbeiten. ps: ich benutze die dritte nummer als prozessnummer .ps
. Die 3. # ist die Prozess-ID des übergeordneten Elements.ps -eaef| grep [w]get
.pgrep
stattdessenpgrep wget
.ps -eaf | grep [w]get
. Die Optionen finden Sie auf derps
Manpage.man ps
.In Bash können Sie verwenden
fg
, um den Job in den Vordergrund zu bringen und dann Ctrl+ zu verwendenCOder listen Sie den Vorgang im Hintergrund mit
jobs
und dann mit auf(wobei 1 durch die Zahl ersetzt wurde, die
jobs
Sie erhalten haben)quelle
Sie können auch verwenden
kill $!
, um den zuletzt im Hintergrund ausgeführten Job zu beenden.quelle
BEARBEITEN: Sobald Sie im Vordergrund sind, können Sie Ctrl+ Coder, wie bei @Zelda erwähnt, mit '% x' töten, wobei 'x' die Auftragsnummer ist, die das Standardsignal sendet (höchstwahrscheinlich SIGTERM im Fall von Linux).
fg
Geben Sie einfach ein , um es in den Vordergrund zu bringen, wenn es der letzte Prozess war, den Sie im Hintergrund ausgeführt haben (mit '&').Wenn es nicht die letzte war, geben Sie: ein
jobs
und suchen Sie die 'Auftragsnummer', dargestellt in '[]'. Dann tippe einfach:..wobei '2' die Auftragsnummer ist, zum Beispiel:
quelle
Der richtige Weg ist,
jobs
die Jobnummer einzugeben und dann zu töten. Um die PID zu verwenden, müssen Sie sie wie in der ersten Antwort beschrieben in den Vordergrund stellen.Versuche dies
Wenn Sie Jobs ausführen, nachdem Sie sie beendet haben, sollten Sie dies sehen
quelle
Eine Sache, die ich hier nicht sehe und die ich besonders beim Testen von Befehlen als sehr nützlich empfunden habe, ist
pidof
. Mit könnenpidof [command]
Sie die Prozess-ID eines Prozesses ermitteln, der gerade ausgeführt wird. Ich mag es, weil es mir erlaubt, die ID des gewünschten Befehls schnell zu finden, was normalerweise etwas ist, das ich gerade aufgerufen habe.Sobald Sie die PID haben, können Sie den Prozess einfach abbrechen. Es ermöglicht das Erstellen einfacher Skripte zum Beenden eines Prozesses, wenn dieser gerade ausgeführt wird.
quelle
Ein bekanntes Beispiel ist das
stress
Tool. Angenommen, Sie haben Folgendes ausgeführt:und schloss das Terminalfenster. Der Prozess würde weiterhin Ihre Ressourcen aus dem Hintergrund verbrauchen.
Was ich mache:
pgrep
Listet die PIDs des betroffenen Prozesses auf und speichert sie in einer Variablen,x
die dannkill -9
zum Beenden des Prozesses verwendet wird .quelle
im letzten gestoppten Bash-Prozess (Strg-Z) werden Sie töten durch:
oder wenn Sie wählen möchten, verwenden Sie:
jobs
dann:
kill %N
mögen
kill %2
quelle