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' bashdel gnome-terminal(o de separación some-boring-processde bash y redirigir su salida de alguna parte)? Si solo mato gnome-terminal, bashseré asesinado a voluntad todos sus subprocesos

Respuestas:
Si se
some-boring-processestá ejecutando en su sesión de bash actual:ctrl-zpara darle el aviso de bashbgjobscomandodisown -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
screenveces 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
screentiene sus problemas y no tengo ganas de usarlo para cada sesión de bash en mi vidascreen,tmuxodtach(posiblemente condvtm) son geniales para esto, pero si es algo en lo que no pensaste usar uno de ellos, puedes aprovecharnohup.fuente
screentiene sus problemas y no tengo ganas de usarlo para cada sesión de bash en mi vidanohupfunciona en un proceso en ejecución mediante el uso de la-popción (si está disponible).-popciónnohupen las páginas del manual; en que sistema estastmux, usé la-popción en una caja de Solaris. También tengo vagos recuerdos de haberlo hecho en una caja CentOS mestiza (¿posiblementezshtenga un dispositivo incorporado que lo soporte?), Pero no puedo encontrar ningún documento sobre eso.bashtampocozshen 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
nohupy 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
screencuando 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
disownhacerlo para evitarHUPque se envíe la señal cuando el proceso se cierre.fuente
screentiene 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 denohupestá ejecutando en qué tipo de sistema?-popció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