La utilidad nohup ejecuta una línea de comando de modo que el comando sigue ejecutándose después de cerrar la sesión. En otras palabras, nohup hace que un proceso ignore una señal SIGHUP. Dependiendo de cómo esté configurado el shell local, un proceso iniciado sin nohup y ejecutándose en segundo plano podría cancelarse cuando cierre la sesión.
Sintaxis para ejecutar el comando nohup
La sintaxis básica del comando para ejecutar un comando nohup es la siguiente:
# nohup command_with_options &
Cualquier resultado de su trabajo será redirigido a un archivo llamado "nohup.out", a menos que especifique lo contrario con
# nohup command > myout.file 2>&1
que envía toda la salida al archivo myout.file.
Guardando la salida del comando nohup
Si no redirige la salida de un comando que ejecuta usando nohup, tanto la salida estándar como el error estándar se envían al archivo llamado nohup.out. en el directorio de trabajo. Si no tiene permiso de escritura para el directorio de trabajo, nohup envía la salida a ~/nohup.out .
También puede enviar la salida a cualquier otro archivo especificado por usted como se muestra arriba en la sintaxis del comando.
Ejemplos
1. Ejecutar nohup sin especificar un archivo de salida
Hagamos un ejemplo y probemos que realmente continúa funcionando después de que haya cerrado la sesión. Iniciaremos un script llamado script.sh. El contenido del guión es el siguiente:
# cat script.sh #!/bin/sh while(true) do echo "Hello World!" sleep 10 done
Ejecutemos el script en backgroupd con el comando nohup:
# nohup script.sh & [1] 179 $ nohup: appending output to `nohup.out`
Como puede ver arriba, no hemos especificado un archivo de salida. Por lo tanto, la salida estándar y el error estándar van por defecto al archivo nohup.out en el directorio desde donde se invocó el script. También el número 179 Especificó el ID de proceso (PID) del trabajo. Este PID se puede verificar en la salida del comando "ps -ef" como se muestra a continuación.
Ahora salga del shell, vuelva a iniciar sesión y ejecute el siguiente comando:
$ ps x | grep script.sh 179 ? S N 0:01 sh /root/script.sh 506 p2 S 0:00 grep script.sh
El guión sigue funcionando. Utilice “ps-ef | grep ps1” si su sistema no es compatible con ps x. También puede consultar el archivo de salida nohup.out para obtener más confirmación.
# cat nohup.out Hello World! Hello World! Hello World! Hello World! ...NOTA :si ejecuta otro comando usando nohup, la salida se agrega al archivo nohup.out existente. Tenga cuidado al ejecutar varios comandos desde el mismo directorio, ya que todos los resultados se envían al mismo archivo nohup.out, lo que puede resultar confuso.
Ejecutar nohup especificando un archivo de salida
Ahora la secuencia de comandos anterior también se puede ejecutar con el comando nohup y especificar un archivo de salida personalizado como se muestra a continuación:
# nohup script.sh > /tmp/script.out 2>&1 [1] 14235
Conclusión
Si está ejecutando un proceso y no cree que se completará cuando cierre la sesión del día, use el comando nohup. Nohup continuará procesando cuando salga de su cuenta. Nohup significa sin colgar .