Aller au contenu principal

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​

OutilUsageAvantages
&Arrière-plan simpleSimple, rapide
nohupProcessus persistantsContinue après déconnexion
screenSessions terminalMultiple fenêtres, détachable
tmuxTerminal modernePlus 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