Inicio > Gestión de procesos > disown

disown: Abandonar la propiedad de un trabajo en ejecución (cuando olvidaste nohup)

Elimina un trabajo ya en ejecución de la lista de trabajos del shell actual, protegiéndolo de terminar (SIGHUP) incluso si cierras la terminal o cierras sesión. Se usa comúnmente cuando accidentalmente ejecutas un comando sin `nohup`.

¿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 + z` para pausar el trabajo.
  • 2. Escribe el comando `bg` para reanudar el trabajo pausado en segundo plano.
  • 3. Escribe el comando `disown` para 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: `disown` utiliza 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 `nohup` crea un archivo `nohup.out`, `disown` separa un proceso ya en ejecución, por lo que su salida puede desaparecer. Preservar la salida requeriría herramientas como `gdb`, lo que lo hace más complejo.
  • Método de verificación: Después de `disown`, el trabajo desaparece de la lista `jobs` (si no se usó la opción -h). Para verificar si el proceso sigue vivo, debes usar `ps -ef | grep comando`.

comandos relacionados

Son comandos que son funcionalmente similares o que se usan juntos con frecuencia.



Comandos de la misma categoría