it-swarm.com.de

Wie kann ich einen angehaltenen Job unter Linux fortsetzen?

Wie kann ich einen angehaltenen Job unter Linux fortsetzen? Ich habe Emacs benutzt und aus Versehen Strg-Z gedrückt, wodurch ich zurück zur Konsole geschossen bin. Ich kann es sehen, wenn ich "jobs" eingebe

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

Den Befehl fg möchten Sie verwenden. Sie können ihm auch eine Auftragsnummer geben, wenn mehr als ein Auftrag gestoppt wurde.

357
Ilkka

Die allgemeinen Jobsteuerungsbefehle unter Linux lauten:

  • jobs - listet die aktuellen Jobs auf
  • fg - setze den nächsten Job in der Warteschlange fort
  • fg% [Nummer] - Job fortsetzen [Nummer]
  • bg - Schiebe den nächsten Job in der Warteschlange in den Hintergrund
  • BG% [Nummer] - Schieben Sie den Job [Nummer] in den Hintergrund
  • Kill% [Nummer] - Kill den Job nummeriert [Nummer]
  • kill - [signal]% [number] - Sende das signal [signal] an job number [number]
  • disown% [number] - lehne den Prozess ab (kein Terminal mehr ist Eigentümer), sodass der Befehl auch nach dem Schließen des Terminals noch aktiv ist.

Das sind so ziemlich alle. Notieren Sie sich die% vor der Auftragsnummer in den Befehlen - dies ist der Hinweis darauf, dass Sie von Aufträgen und nicht von Prozessen sprechen.

250
Majenko

Sie können auch %<process_name> eingeben; Sie drücken in Emacs die Tastenkombination Strg-Z, geben dann in der Konsole %emacs ein und bringen ihn wieder in den Vordergrund.

47
NickD

Um die anderen Antworten zu ergänzen, können Sie mit bash die fg überspringen, wenn Sie eine Auftragsnummer angeben.

Diese sind beispielsweise gleichwertig und nehmen den letzten Job wieder auf:

%
%%
fg
fg %

Diese setzen Job # 4 fort:

%4
fg 4
31
grawity

Wenn Sie es nicht über das aktuelle Terminal gestartet haben, verwenden Sie ps aux | grep <process name>, um die Prozessnummer (pid) zu ermitteln, 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 Prozesse miteinander kommunizieren können. Ein "Kill-Signal" ist nur eines von vielen Standardsignalen.)

Bonus-Tipp: Um zu verhindern, dass der Befehl grep selbst in den Ergebnissen angezeigt wird, setzen Sie [] in das erste Zeichen des Prozessnamens. z.B. Verwenden Sie ps aux | grep [e]macs, um emacs zu finden.

18
mahemoff