¿Por qué ejecutar un comando de shell de Linux con '&'?
Para recuperar su solicitud de inmediato y ejecutar el proceso en segundo plano.
¿Cuáles son las funciones de ellos?
nohup permite que el proceso en segundo plano continúe ejecutándose incluso después de que el usuario cierre sesión (o salga del shell de inicio).
> & redirige tanto la salida estándar como el error estándar al archivo de registro.
Y ejecuta todo en segundo plano, devolviéndole su solicitud de inmediato.
Explicación:
Cada proceso de Linux abre tres canales de E / S, una entrada "stdin", una salida estándar "stdout" y una salida de error estándar "stderr". Se pueden usar para binario, pero tradicionalmente son texto. Cuando la mayoría de los programas ven el cierre estándar, salen (el programador puede cambiarlo).
Cuando el shell padre sale, stdin se cierra en los hijos y (a menudo, generalmente) los hijos también salen. Además, los niños reciben una señal de software, SIGHUP, que indica que el usuario ha "colgado" (anteriormente, el módem) y el valor predeterminado aquí es salir también. (Tenga en cuenta que un programador puede cambiar todo esto al escribir el programa).
Entonces, lo que nohup hace es darle al proceso del niño un entorno de E / S separado, atando los entresijos a algo que no está atado al caparazón principal y protegiendo al niño de la señal SIGHUP. Una vez que el usuario se desconecta, verá el proceso de fondo nohup propiedad de init (proceso 1), no el shell del usuario.
Sin embargo nohup
, no puede hacer el trabajo por completo si el proceso se ejecuta en primer plano, por lo que &
se utiliza para ejecutar el programa en segundo plano, donde felizmente puede seguir ejecutándose con o sin un usuario conectado.