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.
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
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
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
Liens
- Utiliser la commande PS pour lister les processus sur Linux avec des exemples
- VMStat : Mesures de performance Linux
- Top : lister les processus sur Linux
- Commande PS : lister les processus sur Linux
- Utiliser la commande Kill, Killall, pkill pour arrêter un processus sur Linux
- Comment utiliser les commandes nice et renice sur Linux pour définir des priorités de processus
- Comment trouver et tuer un processus Zombie sur Linux (Defunct)
- 6 exemples d’utilisation de la commande Kill sur Linux
- Qu’est-ce que le load average sur Linux
- Mesurer le débit et lister les connexions réseaux sur Linux
- La mémoire sur Linux : comment ça marche
L’article La commande disown Linux : utilisations et exemples est apparu en premier sur malekal.com.
0 Commentaires