a veces ejecuto una aplicación en el terminal gnome, pero de repente tengo que reiniciar gnome o algo así. Supongo que la respuesta a la pregunta también es útil, entonces quiero desconectarme de SSH donde algo está sucediendo.
El árbol terminal de Gnome se ve así:
gnome-terminal
bash
some-boring-process
¿Puedo 'de desconexión' bash
del gnome-terminal
(o de separación some-boring-process
de bash y redirigir su salida de alguna parte)? Si solo mato gnome-terminal
, bash
seré asesinado a voluntad todos sus subprocesos
Respuestas:
Si se
some-boring-process
está ejecutando en su sesión de bash actual:ctrl-z
para darle el aviso de bashbg
jobs
comandodisown -h %1
(sustituya el número de trabajo real allí).Eso no hace nada para redirigir la salida; debe pensar en eso cuando inicie su proceso aburrido. [Editar] Parece que hay una manera de redirigirlo https://gist.github.com/782263
Pero en serio, mira en la pantalla. Tengo shells en un servidor remoto que se han estado ejecutando durante meses.
fuente
screen
veces ya estoy usando , aunque tiene sus problemas y no quiero usarlo para cada sesión de bash en mi vidabash: bg: current: no such job
?Esto es exactamente para lo que fueron creados screen y tmux . Ejecuta el shell dentro de la sesión screen / tmux, y puede desconectarse / reconectarse a voluntad. También puede tener múltiples sesiones de shell ejecutándose dentro de un gnome-terminal.
fuente
screen
tiene sus problemas y no tengo ganas de usarlo para cada sesión de bash en mi vidascreen
,tmux
odtach
(posiblemente condvtm
) son geniales para esto, pero si es algo en lo que no pensaste usar uno de ellos, puedes aprovecharnohup
.fuente
screen
tiene sus problemas y no tengo ganas de usarlo para cada sesión de bash en mi vidanohup
funciona en un proceso en ejecución mediante el uso de la-p
opción (si está disponible).-p
opciónnohup
en las páginas del manual; en que sistema estastmux
, usé la-p
opción en una caja de Solaris. También tengo vagos recuerdos de haberlo hecho en una caja CentOS mestiza (¿posiblementezsh
tenga un dispositivo incorporado que lo soporte?), Pero no puedo encontrar ningún documento sobre eso.bash
tampocozsh
en mi sistema Ubuntu Linux proporcionarnohup
.Si desea seguir interactuando con el proceso secundario en lugar de simplemente hacerlo en segundo plano y continuar, en realidad hay un programa llamado retty que es una prueba de concepto para "robar" un proceso de su tty actual y volver a conectarlo al el actual.
Sin embargo, hace algunas cosas horribles, como pegar un código de ensamblaje en la pila de la aplicación adjunta. Y ese código no se ha actualizado para x86_64.
Hay otro programa que adopta un enfoque tal vez mejor, congelando el proceso en el espacio de usuario a un archivo, desde el cual luego se puede restaurar (posiblemente en otro tty). Esto es crioideo , y ese proyecto también parece haberse detenido en el fase de prueba de concepto, y no funciona con Linux moderno tal como está el código. Ah bueno.
Solo pensé que esto debería estar aquí para completar. Si no te importa recurrir al vudú horrible, esto está dentro del ámbito de la posibilidad, al menos, la posibilidad teórica.
fuente
Si enciendo algo que quiero terminar sin importar qué (salvo el reinicio del sistema), lo uso
nohup
y lo ejecuto en segundo plano. A diferencia de la pantalla y similares, no puede volver a conectar los procesos. Sin embargo, al desviar la redirección a otra parte, se puede encontrar cualquier salidanohup.out
.Lo uso
screen
cuando quiero poder cambiar terminales para un proceso. Como comenzar un proceso desde el hogar / trabajo y cambiar al otro. Como cualquier otra salida de sesión de terminal, eventualmente se desplazará desde la parte superior del búfer.EDITAR: si ya ha iniciado el proceso, puede
disown
hacerlo para evitarHUP
que se envíe la señal cuando el proceso se cierre.fuente
screen
tiene sus problemas y no tengo ganas de usarlo para cada sesión de bash en mi vidaPuede hacer que un proceso (PID) no reciba una señal HUP cuando finaliza la sesión del terminal. Use el siguiente comando:
fuente
nohup: invalid option -- 'p'
. ¿Qué versión denohup
está ejecutando en qué tipo de sistema?-p
opción en Linux, por lo que esta respuesta es específica de Solaris y AIX. Sin embargo, es bueno saberloEste script separa el proceso hijo del padre y lo asigna al proceso init :
fuente