2011-05-09 35 views
5

Tengo un proceso detenido en Linux en un terminal determinado. Ahora estoy en otra terminal. ¿Cómo empiezo ese proceso? ¿Qué señal de muerte enviaría? Poseo ese proceso.Cómo iniciar un proceso detenido en Linux

+0

Pertenece a http://unix.stackexchange.com. – hammar

Respuesta

8

Puede emitir un kill -CONT pid, que hará lo que desee siempre y cuando la otra sesión del terminal aún esté activa. Si la otra sesión está muerta, puede que no tenga dónde colocar la salida.

+0

+1 ¡Para dar una respuesta correcta en mi lugar, mi demasiado precipitada e incorrecta! – idz

+0

Voy a intentar esto. Gracias. – abc

4

Además de la respuesta de @ Dave, hay un advanced method para redirigir los descriptores de archivos de entrada y salida de un programa en ejecución usando GDB.

Un ejemplo FreeBSD para una secuencia de comandos shell arbitrario con PID 4711:

> gdb /bin/sh 4711 
... 
Attaching to program: /bin/sh, process 4711 
... 
(gdb) p close(1) 
$1 = 0 
(gdb) p creat("/tmp/testout.txt",0644) 
$2 = 1 
(gdb) p close(2) 
$3 = 0 
(gdb) p dup2(1,2) 
$4 = 2 

EDITAR - explicación: Esto cierra gestor de archivo 1, a continuación, se abre un archivo, que reutiliza 1. A continuación se cierra FILEHANDLE 2 y duplicados Filehandle 1 a 2.

Ahora este proceso 'stdout y stderr van al archivo indicado y son legibles desde allí. Si se requiere stdin, necesita p close(0) y luego adjuntar un archivo de entrada o PIPE o smth.

Por el momento, no pude encontrar un método para remotamente disown este proceso desde el terminal de control, lo que significa que cuando el terminal sale, este proceso recibe la señal SIGHUP.

Nota: Si tiene u obtiene acceso al otro terminal, puede disown -a para que este proceso continúe ejecutándose después de que se cierre el terminal.

+0

Esa es una buena parte de la tecnología. No había pensado en utilizar el depurador para redirigir STDOUT. –

Cuestiones relacionadas