Programme en tache de fond

Esperluette et nohup: lancer un processus en arrière-plan

L’esperluette (&) permet de lancer une commande en arrière plan. La commande s'exécutera tant que l'on ne ferme pas la console. On dit que le processus est "attaché" à la console.

$ cp gros_fichier.avi gros_fichier_copie.avi &
[1] 16504

[1] : c'est le numéro du processus en arrière-plan pour cette console.

16504 : c'est le numéro d'identification du processus, le PID quoi.

Si on veut que le processus continue même si la console est fermée, il faut lancer la commande via nohup:

/!\ nohup ne bascule pas automatiquement la commande exécutée en arrière-plan. Il faut le réclamer explicitement en ajoutant un "&" à la fin de la ligne de commande./!\

$ nohup cp source/ destination/&
nohup: les entrées sont ignorées et la sortie est ajoutée à «nohup.out»
exit

/!\ Noter le "exit" qu'il faut taper pour quitter la console tout en préservant la commande en arrière-plan.

ctrl-z : faire une pause

Une commande à été lancée sans penser à rajouter "&" à la fin? don't panic

[ctrl]+[z]

[1]+  Stopped                 cp gros_fichier.avi copie_gros_fichier.avi

Le processus est maintenant dans un état de pause, on le relancera en arrière plan comme ça

$ bg
[1]+  cp gros_fichier.avi copie_gros_fichier.avi &

jobs : connaître les processus qui tournent en arrière-plan

$ jobs
[1]+ En cours d'exécution  cp gros_fichier.avi copie_gros_fichier.avi &

fg : reprendre un processus au premier plan

Si 1 seul processus tourne en arrière-plan la commande fg se suffit à elle même

$ fg

Si par contre plusieurs processus ont été lancés en arrière-plan il faudra indiquer son id (pas son PID)

$ fg %2
^