Si ^ Z de un proceso, se "detiene". ¿Cómo vuelves a entrar?


83

Accidentalmente "detuve" mi telnetproceso. Ahora no puedo "volver" a entrar en él, ni puedo matarlo (no responderá kill 92929, donde 92929 es el processid).

Entonces, mi pregunta es, si tiene un proceso detenido en la línea de comando de Linux, ¿cómo puede volver a activarlo o eliminarlo sin tener que recurrir kill -9?

Respuestas:


92

La forma más fácil es correr fgpara ponerlo en primer plano:

$ help fg
fg: fg [job_spec]
    Move job to the foreground.

    Place the job identified by JOB_SPEC in the foreground, making it the
    current job.  If JOB_SPEC is not present, the shell's notion of the
    current job is used.

    Exit Status:
    Status of command placed in foreground, or failure if an error occurs.

Alternativamente, puede ejecutar bgpara que continúe en segundo plano:

$ help bg
bg: bg [job_spec ...]
    Move jobs to the background.

    Place the jobs identified by each JOB_SPEC in the background, as if they
    had been started with `&'.  If JOB_SPEC is not present, the shell's notion
    of the current job is used.

    Exit Status:
    Returns success unless job control is not enabled or an error occurs.

Si acaba de acertar Ctrl Z, entonces para recuperar el trabajo, simplemente ejecute fgsin argumentos.


¡¡Gracias!! Supongo que este es el eq de Alt + Tab. ¿Sabes lo que pasó tan pronto como lo hice fg telnet? Decía Terminated, presumiblemente b / c de mi killcmd anterior .
bobobobo

@bobobobo presumiblemente, sí. De todos modos, el fgno necesita ningún argumento. Si acaba de golpear ^Z, ejecute fgen la misma terminal y le devolverá el primer trabajo.
terdon

48

Puede usar jobspara enumerar el proceso suspendido. Toma el ejemplo. Comience con un proceso:

$ sleep 3000  

Luego suspende el proceso:

^Z
[1]+  Stopped                 sleep 3000

Puedes enumerar el proceso:

$ jobs
[1]+  Stopped                 sleep 3000

y traerlo de vuelta al primer plano:

$ fg %1
sleep 3000

El %1corresponde a la [1]lista con el jobscomando.


19

Debería poder reiniciar un proceso suspendido utilizando el killcomando para enviar al proceso la señal CONTINUAR, desde la línea de comandos, por lo tanto:

kill -CONT 92929

1
Esto hará que reanude la operación, pero que no se ponga en primer plano.
bahamat

1
@bahamat Sí, bastante cierto. Todavía sería necesario fgdentro de la terminal original. Me gusta -STOP y -CONT programas de GUI para ahorrar recursos, pero de todos modos se están ejecutando efectivamente en segundo plano.
Geeb

En caso de sleepque sea killel proceso que no es lo que quieres ...;)
Timo
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.