¿Qué es disown?
Un shell como Bash envía una señal de '¡termina!' (SIGHUP) a todos los trabajos que gestionaba cuando la terminal se cierra. `disown` elimina un trabajo específico de la lista de gestión del shell, evitando que termine cuando el shell lo hace.
¿Cuándo usarlo?
- Cuando olvidaste nohup: Se usa cuando has ejecutado un trabajo de larga duración, necesitas irte pero no puedes apagar el trabajo.
- Flujo de trabajo: Se usa en el siguiente orden: Detener mientras se ejecuta (Ctrl+z) -> Cambiar a segundo plano (bg) -> Abandonar la propiedad (disown).
- Comando integrado del shell: Es una función integrada en el shell (Bash, Zsh, etc.), no un programa separado.
Opciones principales (Shell)
Usado sin opciones, se dirige al trabajo más reciente. Para especificar un trabajo en particular, usa el 'Número de Trabajo (Job ID)'.
1. Uso básico y especificación de destino
2. Preservación del estado
3. Ayuda
Comando generado:
Combina los comandos.
Descripción:
`disown` Ejecutando el comando.
Combina las opciones anteriores para ejecutar virtualmente los comandos junto con la IA.
Ejemplos de escenarios de uso (patrones esenciales)
`disown` rara vez se usa solo; más bien, se utiliza en conjunto con `Ctrl+z` y `bg`.
Escenario: ¡Ejecuté una copia de seguridad sin nohup!
Ejecuté backup.sh sin más y me di cuenta de que tardará una hora. Si cierro la terminal, la copia de seguridad se detendrá. Aquí te mostramos cómo rescatarla.
3 pasos para el rescate (Paso a paso)
Introduce los comandos en el teclado en el siguiente orden.
- 1. En la terminal donde se está ejecutando, presiona
Ctrl + zpara pausar el trabajo. - 2. Escribe el comando
bgpara reanudar el trabajo pausado en segundo plano. - 3. Escribe el comando
disownpara desconectar el trabajo del shell.
Separar solo un trabajo específico
disown %2
Separa solo el trabajo número 2, verificado con `jobs`.
Mantener en la lista (-h)
disown -h %1
Hace que el trabajo sea visible al ejecutar `jobs`, pero evita que termine al cerrar la terminal.
Instalación
`disown` es un comando integrado (Built-in) en shells como Bash y Zsh, por lo que no requiere instalación adicional.
No requiere instalación
Si estás usando una terminal de Linux, ya está instalado.
Consejos y advertencias
Consejos útiles
- ID de trabajo vs PID:
disownutiliza el número de trabajo del shell (Job ID, ej: %1), no el ID de proceso (PID, ej: 1234). No olvides anteponer%. - Salida no verificable: Mientras que
nohupcrea un archivonohup.out,disownsepara un proceso ya en ejecución, por lo que su salida puede desaparecer. Preservar la salida requeriría herramientas comogdb, lo que lo hace más complejo. - Método de verificación: Después de
disown, el trabajo desaparece de la listajobs(si no se usó la opción -h). Para verificar si el proceso sigue vivo, debes usarps -ef | grep comando.