Einen Job in Ubuntu erledigen

22

Dies ist wahrscheinlich eine häufig gestellte Frage, aber ich konnte keine gute Dokumentation finden.

Ich habe Jobs auf meinem System ausgeführt:

foo@fooBox:~/tmp$ jobs
[1]+  Stopped                 foo bar baz

Wie kann ich diesen Prozess beenden? Ich habe verschiedene Befehle ausprobiert kill 1, aber es hat nicht funktioniert.

Nick Heiner
quelle
alternativ $ fg [enter] [ctrl-c]: p
bubu
@bubu: Das funktioniert nicht bei einigen Programmen, die es erwischen SIGINT, wie zum Beispiel vim.
Wuffers
@ Mark Szymanski Ich wusste, ich wusste: p
bubu

Antworten:

32

Sie können die von @fideli vorgeschlagene Methode oder den folgenden killBefehl verwenden:

kill %1

Dadurch wird der erste angehaltene Befehl beendet. Sie können auch eine Liste mit angehaltenen Befehlen finden:

jobs

und es wird eine Ausgabe wie die folgende liefern:

[1]+  Stopped                 yes

Wenn Sie mehrere gestoppte Aufträge haben, ist die Nummer in Klammern ( [1]) die Auftragsnummer, die Sie nach %dem killBefehl eingeben.

Wuffers
quelle
Das ist toll! Etwas Neues gelernt kill.
Fideli
1
Wie komme ich diese bekommen -bash: kill: (3593) - Operation not permitted. Wenn ich es mit sudo benutze, bekomme ich daskill: %1: invalid process id
CMCDragonkai
1
@CMCDragonkai Sie haben eine Situation erlebt, in der der von Ihnen ausgeführte Befehl jetzt einem anderen Benutzer gehört, weil Sie ihn verwendet haben sudo, sodass Sie ihn nicht beenden können. Wenn Sie jedoch mit ausgeführt killwerden sudo, haben Sie keinen Zugriff mehr auf die Jobliste Ihres Benutzers (versuchen Sie es rennen um sudo jobszu sehen was ich meine). Führen Sie stattdessen einfach den Befehl aus, da Sie jetzt die PID haben sudo kill 3593.
Morloch
Wie kann ein Hintergrundprozess einem anderen Benutzer gehören?
CMCDragonkai
6

Wenn Sie ausführen ps ax, wird eine Liste aller ausgeführten Prozesse angezeigt. Suchen Sie nach der Person, die Sie töten möchten, und notieren Sie sich die Nummer in der PIDSpalte. Angenommen, die Nummer war 10203, würden Sie dann ausführen:

kill 10203

Sie können auch ausführen ps ax | grep foo, um das genaue Programm zu finden, nach dem Sie suchen. Schließlich können Sie Folgendes ausführen:

killall foo

alle Instanzen von töten foo.

Fideli
quelle