Wie kann ich die Terminalfunktionalität wieder aufnehmen, nachdem der Befehl "suspend" ausgegeben wurde?


8

Ich habe suspendmein Terminal eingegeben und die Ausführung unterbrochen.

Wie komme ich zur normalen Terminalfunktion zurück? Ich habe versucht, Ctrl+ C, Ctrl+ D, Ctrl+ Q( wie hier vorgeschlagen ) und Ctrl+ Z, aber keine dieser Arbeiten. Natürlich kann ich das Terminal schließen und ein neues öffnen, aber gibt es keine Möglichkeit, die Terminalfunktionalität wieder aufzunehmen?

Ich verwende Ubuntu GNOME 16.04 mit der Standard-Shell (Bash).


Entschuldigung, das frage ich hier, aber was ist der Zweck dieses Befehls?
pa4080

1
Um die Ausführung eines Skripts zu beenden und später fortzusetzen;)
Rinzwind

Antworten:


10

Von Ihrem Link:

bis es ein SIGCONT-Signal empfängt.

Das wäre also so kill -SIGCONT {pid}

  • killall -CONT bash würde alles wieder aufnehmen.
  • kill -18 {pid} wäre das gleiche.
  • und so ist kill -s CONT {pid}

Laut dieser Liste sollte es control-z sein, aber Sie müssen control-z verwenden, um den Prozess zu stoppen:

18 - SIGCONT - Resume process, ctrl-Z (2nd)
19 - SIGSTOP - Pause the process / free command line, ctrl-Z (1st)

Sie benötigen die {pid} der Shell-Sitzung, die im Terminal ausgeführt wird


Und es gibt auch Jobsteuerungsbefehle :

fg, bg

The fg command switches a job running in the background into the foreground. 
The bg command restarts a suspended job, and runs it in the background. 
If no job number is specified, then the fg or bg command acts 
upon the currently running job.

Es sollte auch Strg + Q sein, aber das funktioniert aus irgendeinem Grund nicht. Ich gehe davon aus, dass die Shell, da sie angehalten ist, Strg + Q (SIGCONT) nicht von der angehaltenen Sitzung empfangen kann. Es funktioniert, wenn Sie, wie Sie sagen, verwenden, kill -SIGCONT PIDaber ich kann keinen einfachen Weg finden, um die PID der angehaltenen Sitzung zu erhalten, wenn viele Terminals geöffnet sind.
Terdon

Das funktioniert nicht. Ich habe ps aux | verwendet grep Begriff, um die PID des Terminals zu erhalten, versuchte alle 3 Varianten von SIGCONT, aber keine funktionierte. Als ich gerade pid getötet habe, wurde das Terminal geschlossen, also hatte ich die richtige pid.
Cerberus

@Cerberus Sie möchten, dass die PID der Shell-Sitzung im Terminal ausgeführt wird, nicht des Terminals selbst. Wenn Sie nur ein offenes Terminal haben, sollte es leicht zu finden sein pgrep bash. Wenn nicht, pstree -psuchen Sie dort die PID des Terminals und sehen Sie sich die PIDs seiner untergeordneten Elemente an. Eine davon sollte Ihre Bash-Sitzung sein.
Terdon

Ich muss mindestens zwei Terminalsitzungen im Szenario haben, eine, die angehalten ist, und die andere, von der aus SIGCONT gesendet werden soll.
Cerberus

1
SIGCONT wird normalerweise ignoriert. Warum also nicht einfach schießen killall -CONT bash? :-)
Jonas Schäfer
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.