¿Cuál es la función del comando nohup?

18

Soy un novato en Ubuntu. Aprendí un comando

nohup [command] - ejecuta <command> inmune a la señal de colgado

No puedo entender el significado de " inmune a la señal de bloqueo ". ¿De qué tipo de señal está hablando? Y cuéntame cómo usar este comando con un ejemplo.

    
pregunta coding_ninza 12.01.2018 - 13:52

2 respuestas

34

Consideremos que ha abierto un editor de texto gedit desde un terminal y está trabajando en él. Si cierra el terminal antes de cerrar gedit , el gedit también se cierra tan pronto como cierre el terminal. Entonces, ¿qué está pasando aquí? El gedit se ejecuta como un proceso secundario debajo del terminal. Cuando cierra el terminal, se envía una señal de bloqueo ( SIGHUP ) al proceso que mata el proceso secundario.

Por otro lado, si desea que su hijo procese (aquí gedit ) para seguir funcionando incluso después de cerrar el terminal principal, querría que su proceso fuera inmune a la señal de colgado. De modo que cerrar el terminal no cierre el proceso secundario. nohup hace exactamente este trabajo.

nohup no desconecta un comando de la terminal , hace que la secuencia de comandos ignore SIGHUP y redirecciona stdout / stderr a un archivo nohup.out, para que el comando pueda continuar ejecutándose en segundo plano después de cerrar la sesión. Si cierra el shell / terminal o cierra sesión, su comando ya no es hijo de ese shell. Pertenece al proceso init. Si busca en pstree , verá que ahora pertenece al proceso 1 (init). Eso no se puede volver a poner en primer plano porque el primer plano ya no existe.

    
respondido por el souravc 12.01.2018 - 14:11
16

Además de lo que escribió @sourvac, este es un legado de Back In The Day cuando las personas iniciaban sesión a través de terminales tontos de solo texto, a menudo a través del módem (el original, analógico a 110 baudios): el "colgar" literalmente está "colgando" hasta el teléfono ".

Un pid que es inmune a la señal de colgado seguirá funcionando incluso después de cerrar la sesión y colgar el teléfono . Esto fue muy útil en las computadoras lentas cuando los trabajos se ejecutaban durante horas y horas, y no podía simplemente permanecer conectado (alguien más necesitaba usar la terminal, necesitaba usar el teléfono, estática en el línea podría "bzzt" la conexión, etc.).

    
respondido por el RonJohn 12.01.2018 - 15:14

Lea otras preguntas en las etiquetas