Chapitre 5: Administration des systèmes Flashcards
L’administrateur système est la personne responsable
* des serveurs et postes informatique
* au niveau logiciel
Tâches habituelles….
- Installation et désinstallation des logiciels
- Configuration des logiciels
- Mise-à-jour des logiciels
- Supervision des services logiciels
Un programme en cours d’exécution =
- Le programme exécuté (fichier exécutable)
- De l’état et des ressources (mémoire, CPU, etc)
- Un utilisateur (et un groupe)
- Un identifiant = numéro de processus (pid)
- Un processus parent dont il hérite ses caractéristiques
- Un début… et une fin
- D’autres informations utiles à sa bonne gestion
Un processus est un concept important du système d’exploitation
Isolation des processus
Les processus sont isolés les uns des autres
* Un processus est autonome et cohérent
* Plein de processus existent en même temps (multitâche)
* Un processus ne peut pas corrompre un autre processus
(du moins sans respecter les règles)
* Un processus peut collaborer avec d’autres processus
Exemple de collaboration: tubes
$ grep lol /usr/share/dict/french | lolcat
2 processus: grep et lolcat
Commande ps: instantané des processus
Par défaut ps affiche la liste des processus
* De l’utilisateur courant
* Dans le terminal en cours
* Avec peu d’information
Arborescence des processus
Un nouveau processus est créé par un autre processus
* Un créateur est appelé processus parent
* Le premier processus (dit racine) n’a pas de parent
C’est init (ou systemd) de PID=1
* Sous UNIX la relation de parenté est préservée
→ On a une arborescence de processus
Commande pstree vue arborescente des processus (extra)
$ pstree -phT
Options de ps
Trois familles, plein d’options
- Traditionelle (POSIX), avec un tiret « - »
- BSD, sans tiret
- Extensions extra, avec un ou deux tirets « – »
→ Beaucoup de confusion
$ ps -eF
$ ps aux
- -e, -A afficher tous les processus
- -f afficher plus de colonnes
- -F afficher encore plus de colonnes (extra)
- a tous les processus (avec un terminal)
- ax tous les processus (même sans terminal)
- u afficher des colonnes orientées utilisateur
Information des processus
$ ps -F
UID PID PPID C SZ RSS PSR STIME TTY TIME CMD
jean 1435 356 0 3832 2960 7 15:24 pts/0 0:00 ps -F
- UID (et USER): utilisateur du processus
- PID: identifiant du processus
- PPID: identifiant du processus parent
- STIME (et START): date et heure de démarrage
- CMD (et COMMAND): ligne de commande
Suivre en temps réel les processus
Commande top:
processus en temps réel (extra)
* Liste les processus par utilisation processeur
* Interface interactive
* Plein de commandes pour filtrer et trier
Quelques commandes
* q (ou Ctrl+C)
* h
* P
* M
* N
* T
* k
Quelques commandes
* q (ou Ctrl+C) quitter
* h affiche l’aide
* P trier par consommation CPU (défaut)
* M trier par consommation mémoire
* N trier par PID
* T trier par temps CPU total
* k terminer un processus
Services et démons (daemon)
En général / souvent…
- Application qui attend et répond à un événement
- Répond à des requêtes réseau et/ou locales
- Pas invoqué explicitement, ne dépend pas d’un terminal
- Processus démarré automatiquement par init ou systemd
- Isolé dans des utilisateurs dédiés (dit système)
- Nom terminé par d (pour daemon)
- init ou systemd:
- crond:
- dhcpd:
- httpd:
- sshd:
- lpd ou cups:
- gdm:
- mpd:
- init ou systemd: premier processus du système
- crond: planifie des tâches
- dhcpd: configuration TCP/IP automatique des clients
- httpd: sert les ressources HTTP
- sshd: accepte les connexions SSH entrantes
- lpd ou cups: gère les impressions
- gdm: gestionnaire de connexion graphique (Gnome display
manager) - mpd: démon pour jouer de la musique
Exemple: serveur web
* Logiciel qui répond aux requêtes du World Wide Web
* Utilise principalement le protocole HTTP
* Voir chapitre 8 pour les détails
Apache
* Serveur web (HTTP) le plus utilisé 43% en octobre 2019
* Première version en 1995
* Site officiel: https://httpd.apache.org/
* Licence Apache 2.0
Nginx
* Une alternative à Apache, 2e plus utilisé, en croissance (30%)
* Première version en 2004
* Site officiel: https://nginx.org/
* Licence BSD
Paquet (ou paquetage)
Archive incluant…
- des fichiers binaires et textes
- des informations et
- des procédures
nécessaires à l’installation et à la désinstallation d’un logiciel sur un
système d’exploitation.
Contenu d’un paquet…
- fichiers exécutables ou sources
- fichiers de configuration
- documentation
- dépendances logicielles
- scripts d’installation
- scripts de désinstallation
Gestionnaire de paquets
- L’approche recommandée pour installer un logiciel sous Unix
- Installe et gère les programmes et fichiers accessoires
- Gère les versions et les dépendances entre paquets
- Permet de mettre à jour et de désinstaller proprement
- Exemples: apt, dnf, pacman
De nombreux langages de programmation fournissent aussi des
gestionnaires de paquets spécifiques à leurs écosystèmes
Exemples:
- pip: Python
- gem: Ruby
- cargo: Rust
- npm: Node.js (Javascript)
- cabal: Haskell
Démarrage du système
Au démarrage, plusieurs services sont lancés par init (le premier
programme)
Plusieurs gestionnaires de services existent:
init Système V (1983)
* Les services sont gérés par les scripts dans /etc/init.d
* Doivent supporter minimalement les commandes start et stop
* Exemple: /etc/init.d/apache2 pour Apache
Systemd (2010)
* Sur la majorité des distributions Linux modernes
* Centralise la gestion de nombreux comportements
* Les services sont gérés via des fichiers de configuration
* Exemple: /lib/systemd/system/apache2.service
* Plus ou moins rétro-compatible avec init système V
Configuration globale et pour les services
/etc/ contient les fichiers de configuration des services
- Fichiers textes simples facilement éditables
→ permet de configurer/réparer un système minimal - Formats spécifiques aux applications
→ Lisez la documentation
Exemple: /etc/bash.bashrc configuration générale du shell interactif
Pour les utilisateurs
Fichiers de configuration dans le répertoire maison ~
- Directement dans ~ en tant que fichier caché (classique)
- Dans ~/.config (moderne)
Exemple: ~/.bashrc configuration locale du shell interactif
Les fichiers de configurations du shell sont en fait des scripts shell.
- Chaque ligne est une commande shell
- Les commandes sont exécutées dans l’ordre
- Les lignes vides sont ignorées
- Les commentaires sont ignorés (commencent par #)
Noms associés à des valeurs qui affectent l’environnement du shell et
éventuellement celui des commandes exécutées
Quelques exemples:
- HOME:
- PATH:
- PS1:
- PWD:
- HOME: Le répertoire d’accueil de l’utilisateur (utilisé par ~ et cd)
- PATH: La liste des répertoires où chercher les commandes
- PS1: L’invite de commande principale
- PWD: Le répertoire de travail courant (mis à jour par cd)
→ Pour plus de détail, voir chapitre 7
Attention
Toujours protéger avec des guillemets doubles (“)
$ export FOO=”la vie”
$ echo “J’aime $FOO” > “$FOO”
$ cat “$FOO”
Configuration d’Apache
Fichiers et dossiers de configuration
$ ls /etc/apache2
apache2.conf # Configuration globale
ports.conf # Ports sur lesquels écouter
sites -available/ # Hôtes virtuels disponibles
sites -enabled/ # Hôtes virtuels activés
mods-available/ # Modules disponibles
mods-enabled/ # Modules activés
- apache2.conf appelé souvent httpd.conf peut aussi contenir les
directives d’inclusion des autres fichiers et dossiers de
configuration. - La directive Listen permet de spécifier le port et/ou l’addresse
IP par défaut pour accéder au site.
Hôte par défaut
$ cd /etc/apache2/sites -available
$ sudo vim 000-default.conf
Configuration hôte par défaut:
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost >
Redémarrage du serveur
Il faut recharger le serveur web pour que le site web soit accessible
$ sudo service apache2 reload
ou
$ sudo systemctl reload apache2.service