Exécution de processus après la déconnexion
Parfois, vous avez besoin qu'un processus continue de s'exécuter même après avoir quitté le terminal. La commande nohup
vous permet d'exécuter une commande qui continuera de s'exécuter même après avoir quitté le shell.
Créons un script qui s'exécutera pendant longtemps :
cd ~/project
nano persistent-task.sh
Ajoutez le contenu suivant :
#!/bin/bash
## Ce script s'exécute pendant un très long temps
echo "Démarrage de la tâche persistante à $(date)" > persistent-output.log
for i in {1..100}; do
echo "Itération $i à $(date)" >> persistent-output.log
sleep 10
done
echo "Tâche persistante terminée à $(date)" >> persistent-output.log
Enregistrez et quittez nano, puis rendez le script exécutable :
chmod +x persistent-task.sh
Maintenant, exécutez-le avec nohup
et mettez-le en arrière-plan :
nohup ./persistent-task.sh &
Vous verrez une sortie similaire à :
[1] 5678
nohup: ignoring input and appending output to 'nohup.out'
Cela signifie que le processus s'exécute en arrière-plan et continuera même si vous vous déconnectez. La sortie qui serait normalement affichée dans le terminal est redirigée vers un fichier appelé nohup.out
.
Vous pouvez vérifier si le processus s'exécute :
ps aux | grep persistent-task.sh
Et vous pouvez examiner le fichier de sortie :
cat persistent-output.log
La sortie montre l'heure de démarrage et les itérations de la tâche persistante.
La commande disown
Une autre façon de faire continuer les processus après la déconnexion est d'utiliser la commande disown
. Tout d'abord, exécutez un processus en arrière-plan :
cd ~/project
./persistent-task.sh &
Ensuite, utilisez disown
pour le détacher du terminal :
disown %1
Maintenant, ce processus continuera de s'exécuter même si vous fermez le terminal.
Ces commandes sont essentielles lorsqu'on exécute des tâches sur des serveurs distants où il est nécessaire que les processus continuent après la déconnexion.