Ticker

6/recent/ticker-posts

Ad Code

Responsive Advertisement

La commande disown Linux : utilisations et exemples

Dans un tutoriel précédent, je présentais différentes commandes Linux (jobs, fg, …) afin de pouvoir exécuter des processus en arrière-plan.
Mais à la fermeture du terminal, un signal SIGHUP (Signal Hang UP) est envoyé pour terminer tous les processus du shell.
C’est là qu’intervient la commande disown qui permet de marquer un travail et donc un processus afin de ne pas lui envoyer ce SIGHUP pour qu’il puisse continuer à s’exécuter une fois le shell fermé.
De plus, elle permet aussi de retirer chaque des travaux spécifiques de la table des tâches actives.

Dans ce tutoriel, je vous montre comment utiliser la commande disown de Linux.

Comment utiliser la commande disown

Quelle est la syntaxe de la commande disown

Voici la syntaxe :

disown <options> <job-id>

Où :

  • <options> : Il existe plusieurs options, mais la plus courante est “-h”, qui indique au shell de ne pas envoyer de HUP (HangUP) lorsque le shell parent se termine.
  • <job-id> : L’identifiant du travail (job) que vous souhaitez dissocier du shell. Vous pouvez trouver l’identifiant du travail en utilisant la commande “jobs” dans le shell.

Comment utiliser la commande disown

Comment continuer à exécuter un travail après avoir quitté une invite shell en arrière-plan

Quelques rappels rapides concernant l’exécution de commandes sur Linux.
Pour lancer une commande qui s’exécute en arrière plan, ajoutez le caractère & à la fin de la commande.
Par exemple pour lancer le téléchargement d’un fichier avec wget en arrière-plan et l’ouverture d’un fichier avec vim :

wget -O /dev/null -q http://bouygues.testdebit.info/10G.iso&
[1] 226923
vim /tmp/univers.txt &
[2] 226940

Pour lister les travaux en cours, utilisez la commande jobs :

jobs -l
[1]- 226923 En cours d'exécution   wget -O /dev/null -q http://bouygues.testdebit.info/10G.iso &
[2]+ 226940 Arrêté (via la sortie sur tty)        vim /tmp/univers.txt
  • La commande wget est indiquée par “-“, ce qui signifie qu’elle deviendra la tâche active si la commande vim est interrompue
  • La commande vim est désignée par “+”, ce qui signifie qu’il s’agit d’une tâche active

Seulement, si vous fermez le terminal ou la session SSH, l’exécution de la commande s’arrête aussi car le système envoie un signal pour terminer toutes les commandes rattachées au shell.
C’est là que la commande disown entre en jeu car elle permet de dissocier un processus du shell. Ainsi, si vous fermez le shell, son exécution continue.

Lorsque vous quittez le terminal de votre système, tous les travaux en cours sont automatiquement interrompus. Pour éviter cela, utilisez la commande disown avec l’option -h :

disown -h <%jobID>

Dans notre exemple, nous voulons que la commande wget continue à fonctionner en arrière-plan. Pour éviter qu’elle ne se termine à la sortie, utilisez la commande suivante :

disown -h %1
Comment continuer à exécuter un travail après avoir quitté une invite shell en arrière-plan sur Linux

Tous les travaux pour lesquels vous avez utilisé la commande disown -h continueront de fonctionner.

Autre exemple, imaginons que vous souhaitez exécuter une mise à jour du système avec apt-get en root en arrière-plan et qui ne s’arrête pas si la session se termine.
Voici les commandes à utiliser :

sudo -i # Pour devenir root
apt-get upgrade &> /root/system.update.log & # Mise à jour du système avec redirection de la sortie dans un fichier
disown -h # Marquer apt-get pour que SIGHUP ne soit pas envoyé à la sortie
exit # On quitte le shell root

Supprimer tous les travaux en cours avec la commande disown

Sans aucune option, chaque jobID est supprimé de la table des jobs actifs, c’est-à-dire que l’interpréteur de commandes bash utilise sa notion du job en cours qui est affiché par le symbole + dans la commande jobs -l :

disown

Pour supprimer tous les travaux en cours d’exécution, utilisez l’option -r :

disown -r
Supprimer tous les travaux en cours avec la commande disown

Pour supprimer tous les travaux, utilisez l’option -a :

disown -a

Suppression de travaux spécifiques

Pour supprimer un travail spécifique du tableau des travaux, utilisez la commande disown avec l’identifiant de travail approprié. L’ID du travail est indiqué entre parenthèses dans le tableau des travaux :

Dans notre exemple, si nous voulons supprimer la commande vim, nous devons utiliser la commande disown sur le job 2 :

disown %2

L’article La commande disown Linux : utilisations et exemples est apparu en premier sur malekal.com.

Enregistrer un commentaire

0 Commentaires