accueil > Gestion des processus > disown

disown : Abandonner la propriété d'une tâche en cours d'exécution (quand nohup a été oublié)

Supprime une tâche déjà en cours d'exécution de la liste des tâches du shell actuel, la protégeant ainsi d'une terminaison (SIGHUP) même si le terminal est fermé ou si l'utilisateur se déconnecte. Généralement utilisé lorsque vous avez accidentellement exécuté une commande sans `nohup`.

Qu'est-ce que disown ?

Un shell comme Bash envoie un signal 'Terminer !' (SIGHUP) à toutes les tâches qu'il gère lorsque le terminal est fermé. `disown` permet de retirer une tâche spécifique de la liste de gestion du shell, l'empêchant ainsi de se terminer avec le shell.

Quand l'utiliser ?

  • Lorsque vous avez oublié nohup: Utilisé lorsque vous avez lancé une tâche longue sans `nohup`, que vous devez quitter le travail mais que la tâche ne doit pas être interrompue.
  • Flux de travail: S'utilise dans l'ordre suivant : Suspendre l'exécution (Ctrl+z) -> Passer en arrière-plan (bg) -> Abandonner la propriété (disown).
  • Commande intégrée au shell: Ce n'est pas un programme séparé, mais une fonctionnalité intégrée au shell (Bash, Zsh, etc.).

Options principales (Shell)

Utilisé sans option, il cible la tâche la plus récente. Pour spécifier une tâche particulière, utilisez son 'numéro de tâche (Job ID)'.

1. Utilisation de base et ciblage

2. Préservation de l'état

3. Aide

Commande générée :

Essayez de combiner les commandes.

Description:

`disown` Exécute la commande.

Essayez d'exécuter virtuellement les commandes avec l'IA en combinant les options ci-dessus.

Exemples de scénarios d'utilisation (modèles essentiels)

`disown` est rarement utilisé seul, il est généralement employé en combinaison avec `Ctrl+z` et `bg`.

Scénario : j'ai lancé une sauvegarde sans nohup !

J'ai exécuté `backup.sh` et cela prend une heure. Si je ferme le terminal, la sauvegarde s'arrêtera. Voici comment la 'sauver'.

3 étapes pour la 'sauver' (Pas à pas)

Suivez les étapes ci-dessous sur votre clavier :

  • 1. Appuyez sur `Ctrl + z` dans le terminal en cours d'exécution pour suspendre la tâche.
  • 2. Entrez la commande `bg` pour relancer la tâche suspendue en arrière-plan.
  • 3. Entrez la commande `disown` pour rompre la connexion avec le shell.

Détacher uniquement une tâche spécifique

disown %2

Détache uniquement la tâche numéro 2, vérifiée avec `jobs`.

Garder dans la liste (-h)

disown -h %1

La tâche reste visible avec la commande `jobs`, mais ne sera pas tuée si le terminal est fermé.

Installation

`disown` est une commande intégrée (Built-in) aux shells comme Bash et Zsh, donc aucune installation séparée n'est nécessaire.

Installation non requise

Si vous utilisez un terminal Linux, il est déjà installé.

Conseils & Précautions

Conseils utiles

  • ID de tâche vs PID: `disown` utilise le numéro de tâche du shell (Job ID, ex: %1) et non l'ID de processus (PID, ex: 1234). N'oubliez pas d'ajouter le `%`.
  • Impossible de vérifier la sortie: `nohup` crée un fichier `nohup.out`, mais `disown` détache une tâche déjà en cours d'exécution, ce qui peut entraîner la perte de sa sortie. Préserver la sortie nécessite des outils plus complexes comme `gdb`.
  • Méthode de vérification: Après `disown`, la tâche disparaît de la liste `jobs` (si l'option `-h` n'est pas utilisée). Pour vérifier si le processus est toujours en vie, utilisez `ps -ef | grep [commande]`.

commandes associées

Des commandes fonctionnellement similaires ou souvent utilisées ensemble.



Commandes de la même catégorie