La mayoría de las veces cuando uno se conecta a un servidor remoto a través de ssh, e iniciamos un shell script de algun trabajo
y este toma un largo tiempo en dar los resultados o simplemente ejecutamos un comando, el resultado puede demorar, y por ende
la conexion se pierde con el servidor, el o los procesos abortan o se mueren ya que no estamos activos en el servidor remoto.
Para solucionar este pequeño problema, si no se está seguro de cuando se termina el trabajo, entonces es mejor salir dejando el proceso
se ejecute en segundo plano.
Sin embargo, si salir del sistema, el trabajo se detuvo. ¿Qué hacer?. Para ello existe un comando que ejecuta comandos despues de salirse del interprete de comandos (shell) y este se llama nohup.
Comando nohup
La respuesta es sencilla, con el comando nohup el cual permite ejecutar comandos/procesos o shell script que puede seguir funcionando en segundo plano después de salir de un shell:
Sintaxis nohup:
nohup command-name &
Dónde,
- nombre-comando: Es el nombre del script de shell o nombre del comando. Se pueden pasar argumentos de comandos o un shell script.
- &: Nohup no ejecuta automáticamente el comando en segundo plano, debe hacerlo explícitamente, poniendo al final de la línea de comandos un &.
Ejemplos del comando nohup.
1) Ingresar al servidor remoto
$ ssh user@remote.server.com
2)Ejecutar script llamado pullftp.sh
# nohup pullftp.sh &
Escriba exit o presione CTRL + D de salida desde un servidor remoto.
# exit
3)Buscar todos los programas y scripts con el bit setuid en ON, y de enter:
# nohup find / -xdev -type f -perm +u=s -print > out.txt &
Escriba exit o presione CTRL + D de salida desde un servidor remoto.
# exit
Comando nohup
La respuesta es sencilla, con el comando nohup el cual permite ejecutar comandos/procesos o shell script que puede seguir funcionando en segundo plano después de salir de un shell:
Sintaxis nohup:
nohup command-name &
Dónde,
- nombre-comando: Es el nombre del script de shell o nombre del comando. Se pueden pasar argumentos de comandos o un shell script.
- &: Nohup no ejecuta automáticamente el comando en segundo plano, debe hacerlo explícitamente, poniendo al final de la línea de comandos un &.
Ejemplos del comando nohup.
1) Ingresar al servidor remoto
$ ssh user@remote.server.com
2)Ejecutar script llamado pullftp.sh
# nohup pullftp.sh &
Escriba exit o presione CTRL + D de salida desde un servidor remoto.
# exit
3)Buscar todos los programas y scripts con el bit setuid en ON, y de enter:
# nohup find / -xdev -type f -perm +u=s -print > out.txt &
Escriba exit o presione CTRL + D de salida desde un servidor remoto.
# exit
Tenga en cuenta que nohup no cambia la programación de la prioridad del comando; use el comando nice para esto:
# nohup nice -n -5 ls / > out.txt &
Como se puede ver nohup mantiene los procesos que se ejecutan después de que uno salga del servidor.
Lea la página de ayuda del comando nohup para obtener más información.
Note que el comando nohup esta disponile en Solaris/BSD/Linux/UNIX.