¿Cómo reanudar la funcionalidad del terminal después de emitir el comando "suspender"?


8

Escribí suspenden mi terminal y suspendió la ejecución.

¿Cómo vuelvo al funcionamiento normal de la terminal? He intentado Ctrl+ C, Ctrl+ D, Ctrl+ Q( como se sugiere aquí ) y Ctrl+ Z, pero ninguno de estos funciona. Por supuesto, puedo cerrar el terminal y abrir uno nuevo, pero ¿no hay forma de "reanudar" la funcionalidad del terminal?

Estoy ejecutando Ubuntu GNOME 16.04, con shell predeterminado (bash).


Lo siento, estoy preguntando aquí, pero ¿cuál es el propósito de este comando?
pa4080

1
Para dejar de ejecutar un script y que continúe más tarde;)
Rinzwind

Respuestas:


10

Desde tu enlace:

hasta que reciba una señal SIGCONT.

Entonces eso sería kill -SIGCONT {pid}

  • killall -CONT bash Reanudaría todo.
  • kill -18 {pid} Sería lo mismo.
  • y tambien kill -s CONT {pid}

De acuerdo con esta lista , debería ser control-z pero debe usar control-z para detener el proceso:

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

Necesita el {pid} de la sesión de shell que se ejecuta en el terminal


Y también hay comandos de control de trabajo :

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.

También debería ser Ctrl + Q, pero eso no funciona por alguna razón. Supongo que debido a que el shell está suspendido, no puede recibir Ctrl + Q (SIGCONT) de la sesión suspendida. Funciona si, como usted dice, usa, kill -SIGCONT PIDpero no puedo encontrar una manera simple de obtener el PID de la sesión suspendida cuando tengo muchos terminales abiertos.
terdon

Esto no esta funcionando. Usé ps aux | El término grep para obtener el pid del terminal, probó las 3 variaciones de SIGCONT pero ninguna funcionó. Cuando acabo de matar pid, el terminal se cerró, así que tuve el pid correcto.
Cerberus

@Cerberus desea que el PID de la sesión de shell se ejecute en el terminal, no del terminal en sí. Si solo tiene un terminal abierto, debería ser fácil encontrarlo pgrep bash. Si no, use pstree -p, encuentre el PID de la terminal allí y mire los PID de sus hijos, uno de los cuales debería ser su sesión bash.
terdon

Necesitaré tener dos sesiones de terminal al menos en el escenario, una que esté suspendida y otra desde la que enviar SIGCONT.
Cerberus

1
SIGCONT normalmente se ignora, entonces ¿por qué no simplemente disparar killall -CONT bash? :-)
Jonas Schäfer
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.