50% de descuento en todos los planes, por tiempo limitado. Desde $2.48/mo
8 min restantes
Servidores y SO

Cómo funciona el comando nohup en Linux: sintaxis, casos de uso y ejemplos

Ada Lovegood By Ada Lovegood 8 min de lectura Actualizado el 14 de jul. de 2024
comando nohup

Si desarrollas en Linux, sabes lo importante que es mantener la consistencia y fiabilidad de tus sesiones. Los procesos de larga duración en Linux deben continuar ejecutándose incluso después de cerrar la sesión. Por suerte, Linux cuenta con un comando diseñado para esto. El comando nohup te permite mantener comandos ejecutándose en segundo plano sin interrupciones. Así evitas la pérdida de datos y ahorras tiempo valioso. Esta guía cubre todo lo que necesitas saber sobre el comando nohup en Linux: su sintaxis y opciones, ejemplos prácticos y cómo resolver los errores más comunes.

Entendiendo la sintaxis de nohup en Linux

El comando nohup es sencillo de usar. Te permite ejecutar comandos o scripts en segundo plano y garantiza que sigan corriendo aunque cierres la sesión del terminal. Así es como se usa:

nohup [command] [arguments] &

Debes reemplazar [command] con el comando o script que quieras ejecutar. Y [argument] representa los argumentos u opciones que requiere el comando. El símbolo & envía el comando para que se ejecute en segundo plano. Veamos un ejemplo:

nohup myscript.sh &

En este ejemplo, myscript.sh es un script de bash que seguirá ejecutándose aunque cierres el terminal. La salida se redirigirá a un archivo llamado nohup.out por defecto, salvo que indiques otra ruta.

Opciones de nohup

Aunque nohup no tiene muchas opciones propias, aprender a combinarlo con distintos comandos y técnicas de redirección puede sacarle mucho más partido. Primero, veamos cómo obtener información sobre el comando nohup:

nohup –-help 
nohup --version

Estos dos comandos muestran el mensaje de ayuda y la versión de nohup, con información útil sobre su uso.

Ejecutar un proceso con el comando nohup

Para ejecutar un proceso con nohup, puedes seguir la misma estructura que expliqué en la sección anterior:

nohup [command]

Si quieres ejecutar un proceso en segundo plano, simplemente añade & al final de tu comando.

Ejecutar varios procesos en segundo plano con el comando nohup

¿Y si quieres ejecutar más de un proceso en segundo plano con nohup?

nohup bash -c '[command A] && [command B]' &

Sustituye [command A] y [command B] con los comandos que quieras ejecutar en segundo plano. Imagina que quieres primero actualizar los paquetes del sistema y luego eliminar archivos innecesarios, todo ello usando nohup:

nohup bash -c 'sudo apt-get update && sudo apt-get autoremove -y' &

En este ejemplo, nohup permite que tanto el proceso de actualización como el de limpieza continúen ejecutándose en segundo plano, de modo que las tareas de mantenimiento del sistema se completan sin necesidad de mantener el terminal abierto.

Redirigir la salida personalizada

La salida de este proceso se redirigirá a nohup.out por defecto. ¿Pero qué pasa si quieres recibir la salida en otra ruta? Así puedes hacerlo:

nohup [command] > [/path/to/new/output.txt]

Recuerda reemplazar los valores en [] con el comando y la ruta de archivo que necesites.

Combinar nohup con otros comandos

nohup se puede combinar con otros comandos y tuberías para crear cadenas de comandos potentes. Veamos un ejemplo:

nohup find / -name "*.log" | xargs grep "ERROR" > error_logs.txt 2>&1 &

Aquí, el comando busca se usa para buscar archivos de registro y grep se usa para buscar el término "ERROR". La salida combinada se redirige a error_logs.txt.

En esta sección cubrimos las opciones y casos de uso más comunes del comando nohup. Al dominar estas instrucciones podrás usar nohup de forma efectiva para ejecutar procesos Linux en segundo plano.

Errores comunes y solución de problemas

Usar el comando nohup es generalmente sencillo, pero es posible que encuentres algunos errores comunes durante el proceso. Entender estos errores y saber cómo resolverlos te ahorrará tiempo y dolores de cabeza. Veamos cuáles son y cómo abordarlos:

Permiso denegado

Este error ocurre cuando el script o comando que intentas ejecutar no tiene permiso de ejecución. El error se muestra así: nohup: failed to run command 'myscript.sh': Permission denied

Para solucionar este problema, asegúrate de que el script o comando tenga los permisos correctos. Puedes añadir el permiso de ejecución con chmod comando:

chmod +x myscript.sh 
nohup ./myscript.sh &

Comando no encontrado

Este error ocurre si el comando o script no se encuentra en la ubicación indicada o no está disponible en tu PATH. El error se muestra así: nohup: failed to run command 'myscript.sh': No such file or directory

Para resolver este error, comprueba que el comando o script existe y está en el directorio correcto. Puede que necesites proporcionar la ruta absoluta al script:

nohup /path/to/myscript.sh &

Asegúrate también de que el comando está instalado y disponible en tu PATH.

Sin salida

A veces puede que no veas ninguna salida en el terminal ni en el archivo de salida. Si el comando genera salida pero no la ves, es posible que esté siendo redirigida a una ruta distinta a la predeterminada, o que haya un problema con los permisos del archivo. Para solucionarlo, especifica el archivo de salida de forma explícita y asegúrate de que la redirección es correcta:

nohup myscript.sh > output.log 2>&1 &

Por ejemplo, este comando redirige tanto la salida estándar como el error estándar a un archivo llamado output.log.

El script no se ejecuta en segundo plano

A veces el script o comando parece estar ejecutándose, pero no en segundo plano. La razón suele ser simple: puede que hayas olvidado añadir el símbolo & al final del comando para ejecutarlo en segundo plano. La solución es igualmente simple: asegúrate de haberlo añadido y listo.

Proceso bloqueado o que no responde

Un proceso iniciado con nohup puede bloquearse o dejar de responder. Esto puede ocurrir si el proceso está esperando una entrada o si hay problemas con los recursos a los que intenta acceder. Existen dos soluciones posibles:

  • Comprobar si requiere entrada: Asegúrate de que el comando no requiere ninguna entrada interactiva.
  • Problemas de recursos: Verifica que el comando tenga acceso a los recursos necesarios (por ejemplo, archivos, red).

Sobreescribir nohup.out

Si estás ejecutando varios procesos en segundo plano con el comando nohup, podrías sobrescribir sin querer el archivo nohup.out Para evitar este problema, puedes especificar una ruta distinta para cada proceso. Así, cada proceso tiene su propio archivo de salida y la ruta predeterminada no se sobreescribe.

Conociendo los errores más comunes de nohup y sus soluciones, podrás usar el comando sin ningún problema.

Conclusión

El comando nohup es una herramienta muy útil para cualquier usuario de Linux que necesite ejecutar procesos en segundo plano, ya que garantiza que continúen funcionando incluso después de cerrar sesión. En esta guía cubrimos la sintaxis básica, exploramos distintas opciones y repasamos los errores más frecuentes junto con sus soluciones. Dominar el comando nohup te permite gestionar tareas de larga duración de forma eficiente, mejorando tu productividad y tus habilidades de administración del sistema.

Si eres desarrollador de Linux y quieres sacar el máximo partido a tu experiencia con Linux, considera pasarte a un Linux VPSfiable. Nuestro servicio VPS en la nube ofrece soporte 24/7 y una garantía de disponibilidad del 99,95 %, lo que significa que tus aplicaciones funcionan sin interrupciones en todo momento y puedes obtener ayuda a cualquier hora. Con una infraestructura sólida y recursos confiables, nuestro VPS está diseñado para cubrir las necesidades de los programadores de Linux. Además, puedes tener tu distribución de Linux favorita preinstalada, lo que agiliza la configuración inicial. Lleva tus proyectos de Linux al siguiente nivel con un VPS que te da la potencia y la flexibilidad que necesitas.

Preguntas frecuentes

¿Cuál es la diferencia entre nohup y &?

nohup impide que un proceso se termine cuando el usuario cierra sesión, mientras que & ejecuta un proceso en segundo plano. Usar nohup garantiza que el proceso continúe tras cerrar sesión, y combinarlo con & permite que se ejecute en segundo plano.

¿Para qué sirve nohup?

nohup se usa para garantizar que un comando o script siga ejecutándose incluso después de que el usuario cierre sesión o se cierre el terminal. Es fundamental para procesos de larga duración que deben mantenerse activos sin intervención del usuario.

¿Qué es el archivo nohup out?

El nohup.out es el archivo de salida predeterminado al que nohup redirige la salida estándar y el error estándar de un comando. Si no se especifica ningún otro archivo de salida, el resultado del comando se guarda en nohup.out en el directorio actual.

Compartir

Más del blog

Sigue leyendo.

Mejores aplicaciones autoalojadas que puedes usar con Cosmos Cloud, imagen de portada con paneles de apps alrededor de un panel de Cosmos.
Servidores y SO

Las mejores aplicaciones autoalojadas para usar con Cosmos Cloud: archivos, multimedia, contraseñas, automatización y mucho más

Maybe ya tienes Cosmos Cloud en marcha y quieres saber qué aplicaciones encajan bien con él, o quizás aún no te has decidido por Cosmos y solo quieres ver si se adapta a tu flujo de trabajo

Nick PlataNick Plata 16 min de lectura
Portainer vs Cosmos Cloud para gestionar aplicaciones Docker: portada con diagrama de configuración híbrida y bloques de operaciones vs acceso en neón.
Servidores y SO

Portainer vs Cosmos Cloud: cuál encaja mejor para gestionar aplicaciones Docker

Si ya conoces Docker y solo quieres la forma más limpia de gestionar una pila de aplicaciones en crecimiento, aquí va la respuesta directa sobre Portainer vs Cosmos Cloud. Portainer es la mejor opción para el contro

Nick PlataNick Plata 14 min de lectura
Gráfico de Cosmos Cloud vs CasaOS vs Umbrel con tres rutas de autoalojamiento dentro de una red cloud abstracta.
Servidores y SO

Cosmos Cloud vs CasaOS vs Umbrel: ¿cuál encaja con tu configuración?

La respuesta corta: CasaOS sigue siendo el punto de partida más sencillo, Umbrel ofrece la experiencia más cuidada y seleccionada, y Cosmos Cloud tiene más sentido cuando necesitas un control más fino sobre el domi

Nick PlataNick Plata 11 min de lectura

¿Listo para desplegar? Desde 2,48 $/mes.

Cloud independiente, desde 2008. AMD EPYC, NVMe, 40 Gbps. 14 días de garantía de devolución.