Utiliser la console Linux pour travailler en multitâche

Jouer sur les commandes

Lancer une commande en arrière plan

$ it_takes_time.sh &
[1] 3145

Lancer une tache et la mettre en arrière plan

$ it_takes_time.sh
^Z (<-- C'est un CTRL + Z)
[1]+  Stoppé                 ./it_takes_time.sh

Le process étant stoppé, on le place en arrière plan

$ bg %1

On récupère la tâche 1 (PID 3145)

$ fg %1

Il est possible d'avoir tâches mises en arguments à fg ou bg (ex bg %1 %2)

Gestion de plusieurs tâches avec jobs

On lance plusieurs tâches

$ ./it_takes_time1.sh &
[1] 5881
$ ./it_takes_time2.sh &
[2] 5883
$ ./it_takes_time3.sh &
[3] 5886
$ ./it_takes_time4.sh &
[4] 5888

On affiche les tâches en cours

$ jobs
[1]   En cours d'exécution   ./it_takes_time1.sh &
[2]   En cours d'exécution   ./it_takes_time2.sh &
[3]-  En cours d'exécution   ./it_takes_time3.sh &
[4]+  En cours d'exécution   ./it_takes_time4.sh &

Le signe plus (+) indique qu'il sagit de la dernière tâche lancée. Le signe moins (-) indique qu'il sagit de l'avant dernière tâche lancée.

On rappelle l'avant dernière tâche lancée

$ fg -

ou encore

$ fg %3

ou encore en omettant l'argument, ce qui induit qu'on utilise la dernière tâche manipulée

$ fg

On la stoppe avec CTRL + Z, puis on liste les travaux en cours

$ jobs
[1]   En cours d'exécution   ./it_takes_time1.sh &
[2]   En cours d'exécution   ./it_takes_time2.sh &
[3]+  Stoppé                 ./it_takes_time3.sh
[4]-  En cours d'exécution   ./it_takes_time4.sh &

Manipuler les tâches avec kill

On affiche les PID des tâches avec jobs

$ jobs -l
[1]   5881 En cours d'exécution   ./it_takes_time1.sh &
[2]   5883 En cours d'exécution   ./it_takes_time2.sh &
[3]-  5886 En cours d'exécution   ./it_takes_time3.sh &
[4]+  5888 En cours d'exécution   ./it_takes_time4.sh &

Puis on envoit les signaux STOP ou CONT aux processes

$ kill -STOP 5881
$ jobs -l
[1]+   5881 Signal d'arrêt         ./it_takes_time1.sh &
[2]   5883 En cours d'exécution   ./it_takes_time2.sh &
[3]  5886 En cours d'exécution   ./it_takes_time3.sh &
[4]-  5888 En cours d'exécution   ./it_takes_time4.sh &

$ kill -CONT 5881
$ jobs -l
[1]   5881 En cours d'exécution   ./it_takes_time1.sh &
[2]   5883 En cours d'exécution   ./it_takes_time2.sh &
[3]-  5886 En cours d'exécution   ./it_takes_time3.sh &
[4]+  5888 En cours d'exécution   ./it_takes_time4.sh &

On peut aussi utilise le numéro de tâche au lieu d'utiliser le PID.

Supprimer une tâche de la listes des tâches gérable

Pour ne plus pouvoir gérer la tâche %3

$ disown %3
$ jobs -l
[1]   5881 En cours d'exécution   ./it_takes_time1.sh &
[2]-  5883 En cours d'exécution   ./it_takes_time2.sh &
[4]+  5888 En cours d'exécution   ./it_takes_time4.sh &

Multiplexer les terminaux avec tmux

clé | effet —–+—————————– C-b c| Créer une nouvelle fenêtre C-b &| Fermer la fenêtre courante C-b w| Lister les fenêtres C-b ,| Renommer la fenêtre C-b n| Fenêtre suivante (next) C-b p| Fenêtre precédente (previous) C-b ‘number’| Aller à la fenêtre ‘number’ C-b l| Aller à la dernière fenêtre

clé | effet —–+—————————– C-b “| Diviser verticalement le panneau C-b %| Diviser horizontalement le panneau C-b space| Changer la disposition C-b o| Changer de panneaux (other pane) C-b flèche| Se déplacer dans les panneaux C-b !| Promouvoir un panneau en fenêtre C-b x| Fermer le panneau C-b ;| Retourner au panneau récemment utilisé C-b t| Affiche une horloge (appuis sur un touche pour revenir à l'affichage précédent)