2011-04-08 09:38:29 +0000 2011-04-08 09:38:29 +0000
353
353

Wie kann ich eine unterbrochene Arbeit unter Linux wieder aufnehmen?

Wie kann ich eine unterbrochene Arbeit unter Linux wieder aufnehmen? Ich benutzte emacs und drückte versehentlich ctrl-z, was mich zurück auf die Konsole schoss. Ich kann es sehen, wenn ich ‘jobs’ eingebe

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

Antworten (5)

404
404
404
2011-04-08 09:39:38 +0000

Der Befehl fg ist das, was Sie verwenden möchten. Sie können ihm auch eine Auftragsnummer geben, wenn es mehr als einen gestoppten Auftrag gibt.

268
268
268
2011-04-08 11:55:01 +0000

Die allgemeinen Jobsteuerungsbefehle unter Linux sind:

  • jobs - listet die aktuellen Jobs auf
  • fg - setzt den nächsten Job in der Warteschlange fort
  • fg %[Anzahl] - setzt Job [Anzahl] fort
  • bg - schiebt den nächsten Job in der Warteschlange in den Hintergrund
  • bg %[Anzahl] - Schieben Sie den Job [Nummer] in den Hintergrund
  • Töte %[Nummer] - Töte den Job mit der Nummer [Nummer]
  • Töte -[Signal] %[Nummer] - Sende das Signal [Signal] an Job-Nummer [Nummer]
  • Verzichte %[Nummer] - Verzichte auf den Prozess (kein Terminal wird mehr Besitzer sein), so dass der Befehl auch nach dem Schließen des Terminals erhalten bleibt.

Das sind so ziemlich alle. Beachten Sie den % vor der Auftragsnummer in den Befehlen - das ist es, was kill sagt, dass es sich um Aufträge und nicht um Prozesse handelt.

48
48
48
2013-08-26 21:04:40 +0000

Sie können auch %<process_name> eingeben; d.h., Sie drücken Strg-Z in Emacs, dann können Sie %emacs in die Konsole eingeben und es wieder in den Vordergrund bringen.

34
34
34
2011-04-08 14:03:36 +0000

Um einfach zu den anderen Antworten hinzuzufügen, können Sie mit bash die fg überspringen, wenn Sie eine Stellennummer angeben.

Diese sind z.B. gleichwertig und nehmen die letzte Stelle wieder auf:

%
%%
fg
fg %

Diese nehmen die Stelle #4 wieder auf:

%4
fg 4
23
23
23
2016-02-04 19:49:59 +0000

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

kill -SIGCONT <pid>

(Trotz des Namens ist kill einfach ein Werkzeug, um ein Signal an den Prozess zu senden, damit die Prozesse miteinander kommunizieren können. Ein “Kill-Signal” ist nur eines von vielen Standardsignalen).)

Bonus-Tipp: Das erste Zeichen des Prozessnamens mit [] umbrechen, um zu verhindern, dass der Befehl grep selbst in den Ergebnissen auftaucht. z.B. um den Prozess emacs zu finden, verwenden Sie ps aux | grep [e]macs