Linux - Maîtriser les commandes et appels système
À propos de ce cours
Table des matières
- Notions de base
- Compléments de C, commandes & shell
- Administration système
- Appels systèmes
- Linux temps réel
Programme du cours
Objectifs d'apprentissage
- Maîtriser les commandes Linux essentielles pour la gestion des fichiers, processus et permissions.
- Comprendre les mécanismes des appels systèmes (syscalls) et leur utilisation en programmation C.
- Apprendre à configurer et administrer un système Linux (utilisateurs, réseaux, services).
- Développer des scripts shell avancés pour automatiser des tâches système.
- Explorer les spécificités de Linux temps réel et ses applications embarquées.
Public cible
Ce cours s'adresse aux administrateurs système débutants, développeurs C/Unix, et ingénieurs logiciel souhaitant approfondir leur maîtrise de Linux. Des bases en ligne de commande et une familiarité avec un langage de programmation (idéalement C) sont recommandées.
Notions de base
Introduction à l'architecture Linux, systèmes de fichiers (ext4, XFS), et hiérarchie FHS. Manipulation des fichiers via commandes (ls, cp, rm, chmod). Gestion des processus (ps, top, kill) et redirections E/S (>, |). Configuration de l'environnement utilisateur (bashrc, profil).
Compléments de C, commandes & shell
Combinaison de C et shell : compilation avec gcc, scripts makefile. Fonctions shell avancées (boucles, conditions, grep/sed/awk). Gestion des signaux (SIGINT, SIGKILL). Intégration de binaires C dans des pipelines shell. Bonnes pratiques de scripting (débogage avec -x, vérification d'erreurs).
Administration système
Gestion des utilisateurs (useradd, passwd) et groupes. Configuration réseau (ifconfig, netstat, iptables). Supervision (journalctl, syslog). Planification de tâches (cron, at). Installation de paquets (apt/yum/dnf). Sauvegardes (tar, rsync) et gestion des logs.
Appels systèmes
Fonctionnement des syscalls (open, read, write, fork). Accès bas niveau aux fichiers (descripteurs). Gestion de la mémoire (mmap, brk). Communication inter-processus (pipes, sockets). Sécurité des appels (droits setuid). Exemples en C avec errno pour la gestion d'erreurs.
Linux temps réel
Présentation des noyaux temps réel (PREEMPT_RT). Contraintes temporelles et latences. Outils de mesure (cyclictest). Priorités processus (chrt, nice). Développement d'applications embarquées critiques. Cas pratiques avec Raspberry Pi ou BeagleBone.
Méthodologie
Cours combinant théorie (30%) et TP (70%). Environnements virtualisés (QEMU, Docker) pour les exercices. Projet final : création d'un mini-service système avec gestion de logs et API shell. Accès à des ressources en ligne (manpages, kernel.org).