“Les jobs” sont une fonctionnalité disponible sur linux permettant d’avoir plusieurs processus ouverts dans un même terminal. Nous allons voir comment faire cela à travers un exemple:

Lorsque nous tapons la commande ls dans le terminal, le processus du shell sur lequel nous tapons nos commandes va s’endormir, et va laisser place au processus ls écrire dans le terminal. Une fois que le processus ls a fini de s’exécuter, il va prévenir le shell afin qu’il puisse reprendre le contrôle du terminal.

Mettre un programme en arrière plan

Prenons un terminal avec vi (un éditeur de texte) ouvert. Nous pouvons faire le raccourci CTRL + z pour le mettre en pause.

Affichage après un CTRL + z:

[1]+ Stopped (signal) vi hello

Ici, vi est mis en pause en arrière-plan.

Remettre un job au premier plan

Pour pouvoir remettre vi au premier plan, il suffit de faire la commande:

Terminal window
fg

Tada, nous pouvons retrouver vi !

La liste des jobs est donnée grâce à cette commande:

Terminal window
jobs

Voici ce que peut donner cette commande:

[3]+ Stopped (signal) vi hello3
[2]- Stopped (signal) vi hello2
[1] Stopped (signal) vi hello

Dans cet exemple, nous avons 3 jobs.

L’esperluette (”&”)

L’esperluette, ou ”&”, peut être utilisée afin de garder un processus ouvert même en arrière-plan.

Par exemple:

Terminal window
sleep 3600 &

Ici, notre programme “sh” et “sleep” tournent en même temps. (Ils ne sont pas en sommeil). En tapant la commande jobs, voici ce que l’on peut voir:

[3]+ Stopped (signal) vi hello3
[2]- Stopped (signal) vi hello2
[1] Stopped (signal) vi hello
[4] Running sleep 3600

Stopper un processus

Ici, le processus sleep décompte. Nous pouvons le terminer avec la commande:

# kill -[signal] %[nombre]
kill -STOP %4

“%4” indique que nous voulons terminer le quatrième job. (linux remplace le numéro du job par le numéro du processus).

Voici ce que nous avons:

[4]+ Stopped (signal) sleep 3600
[3]- Stopped (signal) vi hello3
[2] Stopped (signal) vi hello2
[1] Stopped (signal) vi hello

Relancer un processus

Si nous voulons relancer en tâche de fond “sleep”, nous avons la commande “bg”:

Terminal window
bg %4

Et voilà le résulat:

[3]+ Stopped (signal) vi hello3
[2]- Stopped (signal) vi hello2
[1] Stopped (signal) vi hello
[4] Running sleep 3600

Tuer complètement un processus

Nous pouvons bien sûr tuer complètement le processus “sleep” avec:

Terminal window
kill %4

Et le résultat:

[3]+ Stopped (signal) vi hello3
[2]- Stopped (signal) vi hello2
[1] Stopped (signal) vi hello
[4] Terminated sleep 3600

Quelques raccourcis

Nous remarquons aussi un ”+” et un ”-” devant les numéros. Le ”+” indique que le job 3 est le dernier processus ouvert. Le ”-” indique que le job 2 est l’avant-dernier processus ouvert.

Par exemple, si nous voulons appliquer la commande “bg” sur le dernier job (avec un +), nous avons 3 solutions:

Terminal window
# Solution 1 - Séléctionne le dernier élément
bg
# Solution 2 - Séléctionne l'élément avec le "+"
bg %+
# Solution 3 - Séléctionne l'élément numéro 2
bg %2

Laisser un processus vivant même après la fermeture du terminal

La commande “disown” permet de laisser un processus ouvert même après la fermeture du terminal (donc aucun terminal ne sera propriétaire du processus)

Exemple:

Terminal window
disown %[nombre]
disown %4

Et voilà, c’est la fin de cette introduction. Nous avons vu que linux gère très bien le fait de mettre des processus en arrière-plan sans pour autant les couper. Maintenant, vous ne serez plus obligé de couper un processus pour copier / coller une information dans votre terminal !


Articles recommandés