Este es mi entendimiento sobre el uso de &, disowny nohup:
<command>: Se ejecuta el proceso dentro de la corriente de la Terminalbashejemplo, en el primer plano (es decir, el proceso se muestra como unbashtrabajo de primer plano ystdin,stdoutystderrtodavía están unidos a la terminal ); no es inmune a los ahorcados ;<command> &: Se ejecuta el proceso dentro de la corriente de la Terminalbashejemplo, en el fondo (es decir, el proceso se muestra como unbashtrabajo en segundo plano ystdin,stdoutystderrtodavía están unidos a la terminal ); no es inmune a los ahorcados ;<command> & disown: Ejecuta el proceso dentro de la corriente del terminalbashejemplo, en el fondo , pero el proceso se separa de lasbashlista de 's puestos de trabajo' (es decir, el proceso no aparece como unabashtarea en segundo plano / fondo ystdin,stdoutystderrtodavía se une al terminal ); inmune a las colgaduras ;nohup <command> & disown: Ejecuta el proceso dentro de la corriente del terminalbashejemplo, en el fondo , pero el proceso se separa de lasbashlista de 's puestos de trabajo' (es decir, el proceso no aparece como unabashtarea en segundo plano / fondo ystdin,stdoutystderrson no todavía ligada a la terminal ) ; inmune a las colgaduras ;
Por lo tanto, aparte de nohup <command> & disownbloquear stdiny redirigir stdouty stderrque nohup.outpor defecto, me parece como que se puede considerar totalmente equivalente a <command> & disown.
¿Es correcto todo lo anterior? ¿Alguna idea falsa?

bashinstancia principal no matará el procesoRespuestas:
Tu comprensión es básicamente correcta. Ambos
disownynohupse utilizan para permitirle salir de una sesión de shell en ejecución sin detener los trabajos en ejecución. Algunas aclaraciones:No hay razón para correr
nohup command & disown,nohupya lo rechazaré por ti.nohupestá definido por POSIX mientrasdisownque no lo está . Esto significa que mientras muchas conchas (por ejemplobash,zsh,ksh) tienen, otros (por ejemplotcsh,csh,dashysh) no tendrán la misma.disownse puede usar después de que se haya lanzado un comando, mientrasnohupque se debe usar antes.Por lo que puedo decir, el efecto real de los dos comandos es el mismo. Cada uno tiene características que el otro carece (ver
help disownyman nohup) pero su función básica es la misma, sí.Para una discusión mucho más detallada de estas herramientas y las diferencias entre ellas, eche un vistazo a las respuestas aquí:
disown -hynohuptrabajar efectivamente igual?fuente
Nohupydisownno son lo mismo y usar ambos comandos juntos NO es redundante. Vea esta respuesta para una descripción detalladaSus puntos primero a tercero parecen estar bien, aunque
stdin, stdout and stderr are still bound to the terminalno es una noción correcta.stdinsiempre está vinculado a la terminal en el sentido de que siempre ingresaría el nombre del archivo a un comando a través de la terminal o de las formas que utilizan la terminal.stdout and stderr are still bound to the terminalesta bien.Tienes
stdin, stdout and stderr are not still bound to the terminalen el cuarto punto que no es correcto como se menciona en mi párrafo anterior. También aquí está utilizando/dev/nullcomo archivo de entrada paracommand, por ejemplo, si el comando escat, lo está utilizando comocat /dev/null.El comando en su 5to punto no se puso correctamente, usted usó
nohup <command> & disown, mientras que el uso de unonohupudisownotro no es necesario. Sus propósitos son los mismos (ignorar elSIGHUP) pero funcionan de una manera un poco diferente. Entonces el comando se puede simplificar comonohup <command> &.fuente