close
Unix, Linux & Tips

Les tribulations d'un admin sys

Travail

Commande en arrière plan ?

Image par sin won jang de Pixabay

Lors de l’administration d’un serveur (qu’il soit Aix, Solaris ou Linux), certaines commandes peuvent prendre plus de temps que prévu pour leurs exécution.

Que se passe-t-il en cas de déconnexion de la session? L’arrêt d’un script en cours peut entraîner un problème d’intégrité des données (ex : base de données en cours de modification, création de file-system en cours, etc…)

Pour remédier à ce genre de problèmes, il existe une solution au niveau OS qui est le lancement de la commande en arrière plan.

Lancement en arrière plan

Pour effectuer le lancement d’une commande en arrière plan, il est nécessaire d’ajouter le caractère & à la fin de la commande. Toutefois, pour éviter que la commande ne soit tuée lors d’une déconnexion, il faut rajouter l’instruction nohup au début de celle-ci.

Par exemple :

Remarque : Si nous vérifions les processus à l’aide de la commande ps, nous verrons que la commande sleep est en cours d’exécution.

Bascule en arrière plan

Comme expliqué dans l’introduction de l’article, il peut arriver qu’une commande prenne du temps (ex : import d’un dump Oracle) et que l’administrateur n’ait pas lancé la commande en nohup. Dans ce cas là, il est encore possible de basculer la commande en arrière plan, pour qu’elle continue sont exécution.

Pour se faire, il suffit d’interrompre la commande avec la combinaison de touche Ctrl+Z et de la relancer en arrière plan, à l’aide de la commande bg.

  • Lancement de la commande

  • Vérification des jobs

Remarque : Nous remarquons qu’actuellement, aucun job n’est présent sur le serveur.

  • Interruption de l’exécution

  • Vérification des jobs

Remarque : Nous remarquons que le job que nous venons d’arrêter est maintenant présent sur le serveur.

  • Bascule en arrière plan

  • Vérification des jobs

Remarque : Le job est maintenant actif en arrière plan sur le serveur.

Bascule en arrière plan avec nohup

Une fois le job basculé en arrière plan, il est intéressant pour nous de le basculer en nohup. Pour se faire, il suffit d’utiliser la commande nohup avec l’argument -p suivi du PID de la commande.

  • Récupération du PID de la commande

  • Bascule en mode nohup

Remarque : Sous Linux, plus particulièrement, sous bash, il est nécessaire d’utiliser la commande disown avec l’option -h suivi du PID.

Exemple :

Tags : backgroundbgdisownjobsnohup
Emmanuel V.

The author Emmanuel V.

Leave a Response

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.