Frage Wie kann ich einen gestoppten Job in Linux fortsetzen?


Wie kann ich einen gestoppten Job in Linux fortsetzen? Ich benutzte Emacs und traf versehentlich ctrl-z, was mich zur Konsole zurückbrachte. Ich kann es sehen, wenn ich "Jobs" tippe

[*****]$ jobs
[1]+  Stopped                 emacs test_queue.cpp

290
2018-04-08 09:38


Ursprung


Dies ist ein ziemlich normaler Arbeitsablauf für Vim, wenn Sie Ihre Befehle in Ihrer Bash-Historie behalten wollen, dann treffen Sie Ctrl-z Geben Sie Ihre Befehle ein und fahren Sie dann fort. Natürlich können Sie Befehle ausführen, ohne Vim über das Internet zu verlassen :! ed Befehl - icc97


Antworten:


Der Befehl fg ist was du verwenden willst. Sie können auch eine Jobnummer angeben, wenn mehr als eine angehaltene Jobs vorhanden sind.


328
2018-04-08 09:39



Als Referenz ist fg "Vordergrund". Sie können den Job auch im Hintergrund mit "bg" fortsetzen. - Sirex


Die allgemeinen Jobsteuerungsbefehle in Linux sind:

  • Arbeitsplätze - listet die aktuellen Jobs auf
  • fg - Setzen Sie den nächsten Job in der Warteschlange fort
  • fg% [Nummer] - Job fortsetzen [Nummer]
  • bg - Schieben Sie den nächsten Job in der Warteschlange in den Hintergrund
  • bg% [Nummer] - Schieben Sie den Job [Nummer] in den Hintergrund
  • Kill% [Anzahl] - Töte den Job mit der Nummer [Nummer]
  • kill - [Signal]% [Anzahl] - Senden Sie das Signal [Signal] an die Jobnummer [Nummer]
  • enter% [Nummer] - den Prozess verwerfen (es wird kein Terminal mehr Eigentümer sein), so dass der Befehl auch nach dem Schließen des Terminals aktiv ist.

Das sind so ziemlich alle. Notieren Sie sich den% vor der Jobnummer in den Befehlen - das ist es, was kill sagt, dass Sie über Jobs und nicht über Prozesse sprechen.


227
2018-04-08 11:55



Ich vermeide "Kill% 1", weil es als "Kill 1" zu verstehen ist wirklich sehr schlecht :) - barrycarter
@ Barrycarter Das ist sehr wahr. Normalerweise mache ich ein fg und ein Ctrl-C ;) - Majenko
@barry: Deshalb ignoriert init in Upstart standardmäßig SIG {TERM, KILL}. - Hello71
Und natürlich "niemals als Wurzel laufen";) - barrycarter


Sie können auch eingeben %<process_name>; h. du drückst Strg-Z in Emacs, dann kannst du tippen %emacs in der Konsole und bringe es zurück in den Vordergrund.


44
2017-08-26 21:04



Sehr gut zu wissen - ZAD-Man


Nur um die anderen Antworten hinzuzufügen, bash lässt Sie das überspringen fg wenn Sie eine Auftragsnummer angeben.

Zum Beispiel sind diese gleichwertig und nehmen den letzten Job wieder auf:

%
%%
fg
fg %

Diese nehmen Job # 4 wieder auf:

%4
fg 4

28
2018-04-08 14:03



Während das irgendwie cool ist, finde ich es immer noch einfacher zu tippen fg als %. - rr-
% ist großartig, danke! Als Touch-Typist finde ich fg sehr irritierend (gleicher Finger). Aber dann ist es so cd. - Gauthier
Und Sie können es im Hintergrund mit beiden starten bg % oder nur % &. - Wildcard


Wenn Sie es nicht vom aktuellen Terminal aus gestartet haben, verwenden Sie ps aux | grep <process name> um die Prozessnummer (PID) zu finden, dann setze sie fort mit:

kill -SIGCONT <pid>

12
2018-02-04 19:49



Dies funktioniert auch, wenn Sie einen gestoppten Prozess ablehnen - mabraham