Alguna confusión sobre nohup

Situación1

mando

  1. find / -name "*.conf"
  2. Ctrl + Z para pausar el proceso

Situacion2

— hola.sh —

#! / bin / bash
/ bin / sleep 5000

mando
./hello.sh &

Situación3

mando
nohup ./hello.sh &

finalmente
mando

pstree | less pstree | less para obtener la información de los procesos.

 |-sshd-+-sshd | |-sshd---bash | `-sshd---bash-+-find | |-2*[hello.sh---sleep] | |-less | `-pstree 

entonces salgo del ssh

Obtengo la información de pstree en otro ssh

 init-| |-2*[hello.sh---sleep] 

pregunta

  1. ¿Por qué ejecuto hello.sh y uso nohup para suspender hello.sh , el resultado será el mismo?
  2. ¿Por qué el proceso de find no aparece como el proceso hello.sh ? Cuando se eliminó el proceso padre, el proceso init tendrá el proceso huérfano.
  3. ¿Es necesario usar nohup si quiero un proceso en segundo plano?

    No entiendo completamente tu pregunta, pero intentaré explicar el uso de nohup :

    Desde la página de manual man nohup :

    nohup – ejecuta un comando inmune a los cuelgues, con salida a un no-tty

    Por lo tanto, nohup desconecta los flujos de entrada y salida estándar del terminal ( /dev/null convierte en entrada, la salida va al archivo nohup.out ) y también protege la aplicación de SIGHUP señales SIGHUP (señal de SIGHUP ). Esto le permite terminar el proceso de shell desde el que inició el comando nohup -ed sin matar este proceso hijo.


    Una forma similar de evitar la eliminación de un proceso cuando finaliza el shell primario es disown :

     my_command & disown 

    Esto ejecuta my_command en segundo plano y lo niega del proceso principal, pero sin realizar ninguna redirección de E / S. Efectivamente, hace que el comando sea un proceso independiente, ya no es un proceso secundario del shell primario.


    Cuando solo desea ejecutar un proceso en segundo plano, pero no desea rechazarlo del shell actual (para que se elimine cuando finalice el proceso principal), puede omitir nohup o disown y solo usar Bash’s & :

     my_command &