J’ai récemment mis à jour mon article sur Rsync pour rapatrier quelques fichiers du serveur vers mon NAS Synology et me suis demandé comment je pouvais faire pour ouvrir un terminal, lancer un Rsync qui va sûrement me prendre des heures et fermer le terminal sans que cela interrompe la sauvegarde.
Voici quelques pistes pour lancer une commande en arrière-plan avec BASH.
Créer un sous-shell
On crée un sous-shell (subshell) en lançant la commande avec des parenthèses. Le signe & (ampersand) est nécessaire, tout comme la commande exit qui permet de quitter proprement le terminal sans terminer le processus :
(sleep 100) & exit
Code language: PHP (php)
On ouvre un autre terminal et on vérifie que notre tâche est toujours en cours :
ps aux | grep sleep
Utiliser disown
Une autre manière de faire est d’utiliser disown :
sleep 60 & disown
Le système attribue un numéro de processus à notre tâche. On peut alors fermer le terminal comme un barbare, la tâche reste en cours :
ps aux | grep sleep
A garder sous le coude.
Rencontrez-vous des défis avec votre site WordPress ou WooCommerce? Laissez-moi les résoudre pour vous.
Y’a aussi avec screen, qui permet de créer des terminaux “virtuels”:
screen -S rsync
*on lace rsync etc*
Pour revenir au terminal principal : ctrl+a, d
Et pour revenir sur rsync : screen -r rsync
Merci Angristan pour l’alternative avec
screen
!