Lorsque vous vous déconnectez d’une session Linux, le système envoie un signal HUP (hangup) à tous les processus actifs associés au terminal. Ce signal indique aux processus de se terminer.
Mais lorsque l’on administre un système Linux, il peut parfois être nécessaire d’exécuter des commandes en arrière-plan.
Par exemple, car on a besoin de libérer le terminal pour exécuter une seconde commande.
Dans d’autres cas, lorsque l’on prend la main à distance par SSH, il peut être nécessaire que l’exécuter d’un script continue après la fermeture de la session.
Dans ce tutoriel, je vous donne plusieurs solutions pour lancer des commandes en arrière plan sur Linux.
Comment exécuter des commandes et processus en arrière-plan sur Linux
Avec le caractère &
Ajoutez l’esperluette à la fin d’une commande pour placer la commande en arrière-plan.
Voici un exemple où on télécharger un fichier en arrière-plan avec wget :
wget https://exemple.com/grosfichier.zip &
[1] 21348
La sortie “[1] 21348” indique que le processus de téléchargement s’exécute en arrière-plan avec un ID de travail de “1” et un PID de “21348”.
Ensuite, pour lister les processus exécutés en arrière-plan, utilisez la commande jobs :
jobs -l
Enfin, la commande fg permet de rappeler le processus :
fg <job-id>
Toutefois, cela ne suffit pas, si vous souhaitez que l’exécution du processus perdure après l’arrêt du terminal ou de la session.
En d’autres termes, si vous vous déconnectez de votre terminal, tous les travaux en cours seront interrompus.
Pour éviter cela, vous pouvez passer l’option -h à la commande disown. Cette option marque chaque jobID pour que le SIGHUP ne soit pas envoyé au job si l’interpréteur de commandes reçoit un SIGHUP. La syntaxe est la suivante :
disown -h <job-id>
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
Avec la commande Nohup
La commande nohup de Linux est un outil puissant qui vous permet d’exécuter vos processus en arrière-plan. Elle est extrêmement utile lorsque vous souhaitez exécuter un processus qui prend beaucoup de temps et que vous ne voulez pas occuper votre terminal ou votre session pendant toute cette durée.
nohup wget https://exemple.com/largefile.zip &
Avec Screen
La commande screen est un gestionnaire de fenêtres plein écran qui multiplexe un terminal physique entre plusieurs processus. Elle vous permet d’exécuter plusieurs sessions de terminal dans une même fenêtre et de passer de l’une à l’autre sans effort.
Voici comment démarrer une nouvelle session nommée ‘nom_session” avec la commande screen :
screen -S nom_session
Pour reprendre la session, utilisez l’option -r en indiquant le nom de la session :
screen -r nom_session
Avec Tmux
Tmux, abréviation de “terminal multiplexer”, est une autre commande qui vous permet d’exécuter plusieurs sessions de terminal dans une seule fenêtre. Elle est similaire à screen, mais offre plus de fonctionnalités et une interface plus moderne.
tmux new -s ma_session
Dans cet exemple, nous démarrons une nouvelle session tmux nommée ‘ma_session’. La sortie “[detached (from session ma_session)]” indique que la session est en cours d’exécution en arrière-plan.
Pour s’attacher à la session, utilisez la commande attach :
tmux attach -t ma_session
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 Linux : exécuter des commandes en arrière-plan est apparu en premier sur malekal.com.
0 Commentaires