Nunca sé cuándo es el mejor momento para usar nohup y el & al final del comando.
Nohup hace que un programa ignore la señal HUP, lo que permite que se ejecute después de que el terminal actual esté cerrado / el usuario haya cerrado sesión. Nohup no envía el programa a segundo plano.
& al final del comando está relacionado con el control de trabajo de shell, lo que permite al usuario continuar trabajando en la sesión de shell actual.
Por lo general, nohup y & se combinan para iniciar el programa que se ejecuta después del cierre de sesión del usuario y permite continuar el trabajo en la sesión de shell actual.
Normalmente, &
cuando quiero ejecutar en segundo plano, utilizo un comando que no tardará mucho en ejecutarse, o uno en el que realmente no me importará si el programa se termina si me desconecto inesperadamente de una sesión.
xcalc &
rdesktop 1.2.3.4 &
./this_only_takes_a_few_seconds_but_i_want_my_shell_back.py &
Cuando trabajo a través de una VPN o una conexión remota poco fiable, tiendo a usar nohup
para ejecutar cualquier cosa que tarde un tiempo en ejecutarse. Al ejecutar importaciones de datos grandes en un host remoto, por ejemplo, es posible que desee usar nohup
para asegurarse de que desconectarse no tendrá que comenzar de nuevo cuando se vuelva a conectar.
nohup ./do_data_load.py mydatafile.txt &
También se usa cuando un desarrollador no damoniza adecuadamente un servicio, por lo que debe usarlo nohup
para asegurarse de que no se elimine cuando cierre la sesión.
nohup sillyd &
Si olvida usarlo nohup
cuando ejecuta algo como los dos últimos ejemplos, puede usar bash o zsh incorporado disown
para el mismo efecto.
$ sillyd &
[1] 12345 # Whoops!
$ disown %1
Es bastante raro usarlo nohup
sin él &
, ya que no puedes volver a conectarte a la sesión de nohup'd si estás desconectado. Esto prácticamente elimina su utilidad para los comandos interactivos. En el caso de que tenga un comando interactivo que desee conservar durante las sesiones o evitar desconexiones complicadas, puede usarlo screen
. El poder de fuego de una screen
sesión totalmente armada y operativa está más allá del alcance de esta publicación, por lo que debe verificarlo con más detalle .
byobu
que agrega algunas características agradables a la pantalla. Está disponible en la mayoría de los repositorios aptos y en los repositorios EPEL para Red Hat.nohup: cerrar sesión usuario actual, el proceso no se detendrá
&: con este símbolo, no habrá salida en el terminal actual, el proceso se ejecutará en segundo plano
fuente