Linux — utilisation avancée et administration · Étape 20

Configure l’environnement, la connexion et l’arrêt

Distingue login shell et shell interactif, place les variables au bon niveau, inspecte les sessions et prépare un arrêt sans couper le laboratoire.

Durée indicative · ~1 h 30Niveau intermédiairePrérequis conseillé · Leçon 19 — diagnostic systemd et journalctlPratique · TP
L’idée reçue

« Toute variable doit être placée dans .bashrc. »

.bashrc cible surtout les shells Bash interactifs non-login. Une variable de session, une politique système et un alias interactif n’ont pas le même emplacement.

01Cartographie les fichiers d’environnement

printf 'shell=%s
' "$SHELL"
shopt -q login_shell && echo login-shell || echo non-login-shell
case $- in *i*) echo interactive ;; *) echo non-interactive ;; esac
ls -l /etc/environment /etc/profile 2>/dev/null || true
find /etc/profile.d -maxdepth 1 -type f -printf '%f
' 2>/dev/null | sort | sed -n '1,30p'
ls -la "$HOME" | grep -E 'profile|bashrc|bash_profile' || true
Portée
Emplacement courant
Usage
système
/etc/environment
variables simples, pas de logique shell
login
/etc/profile, /.profile
PATH et environnement de session
Bash interactif
/.bashrc
alias, prompt et fonctions
service systemd
Environment, EnvironmentFile
environnement explicite du service

02Teste les copies du laboratoire

export LAB="/tmp/soria-linux-systemd-$USER"
bash --noprofile --norc -c 'source "$1"; printf "SORIA_ENV=%s
" "$SORIA_ENV"' bash "$LAB/home/profile.sample"

bash --noprofile --norc -i -c 'source "$1"; printf "SORIA_INTERACTIVE=%s
" "$SORIA_INTERACTIVE"' bash "$LAB/home/bashrc.sample"

Les fichiers réels du compte ne sont pas modifiés. Le test isole l’effet de chaque source.

03Évite les duplications de PATH

path_add_once() {
case ":$PATH:" in
  *":$1:"*) ;;
  *) PATH="$1:$PATH" ;;
esac
}

path_add_once "$HOME/.local/bin"
path_add_once "$HOME/.local/bin"
printf '%s
' "$PATH" | tr ':' '
' | nl -ba
Un fichier sourcé plusieurs fois ne doit pas multiplier la même entrée. Les modifications de PATH doivent être idempotentes.

04Inspecte les connexions

who
w
loginctl list-sessions 2>/dev/null || true
loginctl show-session self -p Name -p User -p State -p Remote -p Type -p Class 2>/dev/null || true
last -a | sed -n '1,12p'
last -x | sed -n '1,12p'

who et w montrent les sessions courantes. loginctl expose la session selon systemd-logind. last -x ajoute les boots, shutdowns et changements de runlevel enregistrés.

05Vérifie les inhibitors et travaux actifs

systemd-inhibit --list 2>/dev/null || true
systemctl list-jobs
systemctl --failed
shutdown --show 2>/dev/null || true

Avant un arrêt, vérifie sessions actives, sauvegardes, transactions de paquets, services en échec, jobs systemd et inhibitors.

06Simule une maintenance planifiée

Au lieu de programmer un arrêt réel, crée un timer utilisateur inoffensif puis annule-le :

systemd-run --user --on-active=2min --unit=soria-maintenance-reminder /usr/bin/printf 'maintenance window reached
'

systemctl --user list-timers soria-maintenance-reminder.timer
systemctl --user stop soria-maintenance-reminder.timer
systemctl --user reset-failed soria-maintenance-reminder.service soria-maintenance-reminder.timer 2>/dev/null || true
Cette simulation entraîne planification, vérification et annulation sans redémarrer ni arrêter la machine.

07Documente les commandes réelles sans les exécuter

printf '%s
' 'sudo shutdown -r +10 "Maintenance planifiée"' 'sudo shutdown -c' 'sudo systemctl reboot' 'sudo systemctl poweroff'

Ces commandes sont seulement affichées. Sur une VM dédiée, une procédure réelle doit annoncer la maintenance, vérifier les sessions, synchroniser les écritures, programmer l’arrêt, confirmer le timer et conserver un accès console.

08Nettoie le laboratoire

./module4-systemd-boot-lab.sh validate
./module4-systemd-boot-lab.sh reset
Challenge autonome

Rédige une procédure de maintenance

Inclue annonce, inventaire des sessions, vérification des sauvegardes et jobs, inhibitors, services en échec, fenêtre, commande prévue, annulation, accès console, tests après retour et journal d’exploitation.

Ce que tu retiens

L’environnement doit être placé selon sa portée. Un arrêt est une opération d’exploitation : il se prépare, s’annonce, se vérifie, peut être annulé et doit disposer d’une voie de récupération.

Ta progression

Chargement de l’état… Se connecter pour synchroniser.