Chapitre 4.6 - Jobs et Tâches en Arrière-Plan
Objectifs d'Apprentissage
À la fin de ce chapitre, vous serez capable de:
- Démarrer des processus en arrière-plan
- Gérer les jobs avec jobs, fg, bg
- Utiliser nohup pour processus persistants
- Comprendre screen et tmux
- Gérer les processus après déconnexion
Processus en Arrière-Plan
Démarrage avec &
# Processus en arrière-plan
commande &
# Exemple
sleep 60 &
tail -f /var/log/app.log &
# Voir le PID
echo $! # PID du dernier processus en arrière-plan
Redirection
# Rediriger sortie
commande > output.log 2>&1 &
# Ignorer sortie
commande > /dev/null 2>&1 &
# Exemple
long_script.sh > script.log 2>&1 &
Gestion des Jobs
jobs - Voir les Jobs
# Liste des jobs
jobs
# Avec PIDs
jobs -l
# Jobs terminés aussi
jobs -a
# Format:
# [1] + running sleep 60 &
# [2] - running tail -f log &
# Numéro, état, commande
fg - Avant-Plan
# Dernier job en avant-plan
fg
# Job spécifique
fg %1
fg %2
fg %nom
# Avec Ctrl+Z, le processus est suspendu
# Puis fg le remet en avant-plan
bg - Arrière-Plan
# Dernier job suspendu en arrière-plan
bg
# Job spécifique
bg %1
bg %2
nohup - Ignorer SIGHUP
Problème
Quand vous vous déconnectez, le shell envoie SIGHUP à tous ses processus enfants, les tuant.
Solution: nohup
# Ignorer SIGHUP
nohup commande &
# Avec redirection
nohup commande > output.log 2>&1 &
# Le fichier nohup.out est créé automatiquement
# si pas de redirection
Caractéristiques:
- Processus continue après déconnexion
- Sortie dans
nohup.out(par défaut) - Peut être redirigée
screen - Sessions Persistantes
Installation
sudo apt install screen # Ubuntu/Debian
sudo yum install screen # Red Hat/CentOS
Utilisation de Base
# Démarrer une session
screen
screen -S nom_session # Avec nom
# Détacher: Ctrl+A puis D
# Reconnecter: screen -r
# Reconnecter session nommée: screen -r nom_session
# Lister sessions
screen -ls
# Tuer session
screen -X -S nom_session quit
Commandes screen (Ctrl+A)
Ctrl+A puis:
d # Détacher
c # Nouvelle fenêtre
n # Fenêtre suivante
p # Fenêtre précédente
" # Liste des fenêtres
? # Aide
tmux - Terminal Multiplexeur Moderne
Installation
sudo apt install tmux # Ubuntu/Debian
sudo yum install tmux # Red Hat/CentOS
Utilisation de Base
# Démarrer session
tmux
tmux new -s nom_session
# Détacher: Ctrl+B puis D
# Reconnecter: tmux attach
# Reconnecter session: tmux attach -t nom_session
# Lister sessions
tmux ls
# Tuer session
tmux kill-session -t nom_session
Commandes tmux (Ctrl+B)
Ctrl+B puis:
d # Détacher
c # Nouvelle fenêtre
n # Fenêtre suivante
p # Fenêtre précédente
% # Split vertical
" # Split horizontal
? # Aide
Comparaison
| Outil | Usage | Avantages |
|---|---|---|
& | Arrière-plan simple | Simple, rapide |
nohup | Processus persistants | Continue après déconnexion |
screen | Sessions terminal | Multiple fenêtres, détachable |
tmux | Terminal moderne | Plus de fonctionnalités que screen |
Exemples Pratiques
Scénario 1: Script Long
# Démarrer en arrière-plan avec nohup
nohup long_script.sh > script.log 2>&1 &
# Se déconnecter
# Le script continue
Scénario 2: Session de Travail
# Démarrer screen
screen -S travail
# Lancer plusieurs commandes
# Détacher: Ctrl+A D
# Reconnecter plus tard
screen -r travail
Scénario 3: Monitoring Continu
# Dans screen/tmux
watch -n 1 'ps aux --sort=-%cpu | head'
# Détacher et reconnecter quand nécessaire
Résumé
Dans ce chapitre, vous avez appris:
Arrière-plan: commande & pour démarrer en arrière-plan
Jobs: jobs, fg, bg pour gérer les jobs
nohup: Ignorer SIGHUP, processus persistants
screen: Sessions terminal détachables
tmux: Terminal multiplexeur moderne
Pratique: Choisir selon besoins (simple vs sessions)
Prochaines Étapes
Module 5: Utilisateurs et Permissions
Module 6: Scripting Shell
Chapitre créé le: Décembre 2024