El comando nohup ("no colgar") evita que un proceso finalice cuando el usuario cierra la sesión. Por ejemplo, si un administrador inicia una secuencia de comandos de copia de seguridad y luego cierra la sesión del sistema, la secuencia de comandos dejará de ejecutarse. Al colocar el comando nohup delante del comando normal, la secuencia de comandos continuaría incluso después de que el administrador cerrara la sesión.
Sintaxis
La sintaxis del comando nohup es:
# nohup {command/script}
Si encuentra el siguiente error mientras ejecuta el comando nohup:
nohup: command not found
puede intentar instalar el siguiente paquete según su elección de distribución:
Distribución | Comando |
---|---|
OS X | instalación de preparación de coreutils |
Debian | apt-get install coreutils |
Ubuntu | apt-get install coreutils |
Alpino | apk agregar coreutils |
Arco Linux | pacman -S coreutils |
Kali Linux | apt-get install coreutils |
Cent OS | yum instalar coreutils |
Fedora | dnf instalar coreutils |
Raspbian | apt-get install coreutils |
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 .