Blog ENI : Toute la veille numérique !
🐠 -25€ dès 75€ 
+ 7 jours d'accès à la Bibliothèque Numérique ENI. Cliquez ici
Accès illimité 24h/24 à tous nos livres & vidéos ! 
Découvrez la Bibliothèque Numérique ENI. Cliquez ici
  1. Livres et vidéos
  2. Ubuntu
  3. Tâches d'administration
Extrait - Ubuntu Administration d'un système Linux (7e édition)
Extraits du livre
Ubuntu Administration d'un système Linux (7e édition) Revenir à la page d'achat du livre

Tâches d'administration

Surveillance et performances

1. Surveillance des processus

Vous avez déjà vu dans le chapitre Utiliser la ligne de commandes comment contrôler les processus depuis le shell. Bien que la commande ps retourne beaucoup d’informations, il existe d’autres moyens pour obtenir des informations.

a. Les différents états d’un processus

Durant sa vie (temps entre le lancement et l’arrêt), un processus peut passer par divers états :

  • Exécution en mode utilisateur (user mode).

  • Exécution en mode noyau (kernel mode).

  • En attente E/S (waiting).

  • Endormi (sleeping).

  • Prêt à l’exécution (runnable).

  • Endormi dans le swap (mémoire virtuelle).

  • Nouveau processus.

  • Fin de processus (zombie).

Vous pouvez voir l’état d’un processus avec la commande ps -l, colonne S. Il y a deux processus dans l’exemple ci-après. L’état S (sleeping) indique que le processus dort, l’état R (running), que le processus est en train de fonctionner.

$ ps -l 
F S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN    TTY     TIME CMD 
4 S  1000   961   803  13 80   0 -  2067 do_wait tty1 00:00:00 bash 
0 R  1000   970   961   0 80   0 -  2199 -       tty1 00:00:00 ps 

Vous pouvez sélectionner des colonnes avec le paramètre -o comme dans l’exemple ci-dessous. Affichage de la liste des processus de eni avec leur pid, leur état et la commande :

$ ps -u eni -o pid,state,command 
    PID S COMMAND 
   2168 S /lib/systemd/systemd --user 
   2169...

Surveillance avec les journaux

1. Consignation des événements

Ubuntu consigne les événements de son activité par l’intermédiaire de deux services généraux : rsyslogd et klogd. La commande ps ef | grep logd montre (parmi d’autres lignes) les deux processus en cours. Le second est le processus grep.

# ps -ef|grep logd 
syslog    598    1 0 20:31 ?      00:00:00 rsyslogd -c5 
root     5804 2506 0 22:57 pts/2  00:00:00 grep --color=auto logd 

Les fichiers journaux se trouvent dans le répertoire /var/log :

Ce répertoire comporte plusieurs autres journaux car, pour des raisons de lisibilité, les consignations se rapportant à d’autres services font l’objet d’un ou de plusieurs fichiers séparés. Ainsi, au lieu de « fouiller » dans le fichier syslog, l’administrateur accède directement aux informations de l’application.

Ceci se gère par la configuration dans le fichier /etc/rsyslog.d/50-default.conf dont voici un extrait :

#  Default rules for rsyslog. 
#  
#                       For more information see rsyslog.conf(5) 
and /etc/rsyslog.conf  
 
#  
# First some standard log files.  Log by facility. 
#  
auth,authpriv.*                   /var/log/auth.log 
*.*;auth,authpriv.none           -/var/log/syslog 
#cron.*                           /var/log/cron.log ...

Planification des tâches

Ubuntu propose trois outils de programmation de tâches correspondant à trois sortes de tâches à réaliser :

  • cron : ce service exécute un travail (ou plus) à des horaires précis suivant un intervalle de temps défini (présent sur Ubuntu Server et Desktop par défaut). 

  • anacron : ce démon exécute un travail (ou plus) après un laps de temps déterminé (présent sur Ubuntu Desktop par défaut, à installer pour Ubuntu Server).

  • at : ce service exécute un travail donné à un moment donné, et ce, une seule fois (installable via apt install at).

L’utilitaire de base reste pour l’administrateur le service cron, mais Ubuntu démarre cron et anacron par défaut.

1. cron

a. Fonctionnement de cron

Le service cron travaille à partir du fichier /etc/crontab ou des fichiers /etc/cron.d/* qui contiennent les entrées correspondant aux répertoires respectifs et contenant les scripts à exécuter :

  • pour les heures : /etc/cron.hourly

  • pour les jours : /etc/cron.daily

  • pour les semaines : /etc/cron.weekly

  • pour les mois : /etc/cron.monthly

Exemple de fichier /etc/crontab

# /etc/crontab: system-wide crontab 
# Unlike any other crontab you don't have to run the `crontab' 
# command to install the new version when you edit this file 
# and files in /etc/cron.d. These files also have username fields, 
# that none of the other crontabs do. 
 
SHELL=/bin/sh 
# You can also override PATH, but by default, newer versions inherit it 
from the environment 
#PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin 
# Example of job definition: 
# .---------------- minute (0 - 59) 
# |  .------------- hour (0...

Archivage et sauvegarde

La sauvegarde des données fait partie intégrante du travail de l’administrateur système. La question n’est pas de savoir pourquoi sauvegarder mais quand, comment et quoi sauvegarder. Corollaire de la pratique des sauvegardes : il faut apprendre à manipuler les archives.

1. Principes de la sauvegarde de données

Il faut distinguer les différentes méthodes : la méthode dite incrémentielle s’applique à sauvegarder les fichiers modifiés (ou susceptibles de l’avoir été) depuis la dernière sauvegarde. Cette pratique suffit dans de nombreux cas, mais ce n’est pas la seule : on peut envisager une sauvegarde complète à intervalles réguliers.

En fait, pour une meilleure efficacité, on utilise trois méthodes en même temps :

  • La sauvegarde complète (C), qui, comme son nom l’indique, sauvegarde toutes les données à un instant T.

  • La sauvegarde incrémentielle (I), qui ne sauvegarde que les données modifiées depuis la dernière sauvegarde complète.

  • La sauvegarde différentielle (D), qui ne sauvegarde que les données modifiées depuis la dernière sauvegarde (qu’importe son type).

Les unités de temps généralement utilisées sont le jour, la semaine et le mois. Voici un exemple de cycle de sauvegarde :

Dim

Lun

Mar

Mer

Jeu

Ven

Sam

Semaine 1

C

D

D

I

D

D

D

Semaine 2

C

D

D

I

D

D

D

Semaine 3

C

D

D

I

D

D

D

Semaine 4

C

D

D

I

D

D

D

Et en utilisant, bien entendu, des supports de sauvegarde différents.

2. Commandes et outils de sauvegarde

Les exemples portent sur la sauvegarde du répertoire des utilisateurs, /home.

a. La commande tar (tape archiver)

Cet utilitaire lit les fichiers et les enregistre de façon séquentielle dans le fichier...

Interventions sur le noyau

1. Présentation

Dans la très grande majorité des cas, vous n’aurez pas besoin de manipuler les paramètres du noyau ou de compiler un nouveau noyau. Mais la tâche de l’administrateur est aussi d’adapter les paramètres du noyau au fonctionnement optimal du système.

Comme le rappelle souvent son créateur Linus Torvalds, le champ de définition de Linux se circonscrit au noyau (kernel) et non, comme malheureusement l’usage populaire le fait, à une distribution. Maintenu par une communauté de développeurs (et avec pour « patron » incontesté, son créateur) en licence GNU, le noyau gère les ressources physiques puis logiques d’un système informatique.

Le système Linux Ubuntu est conforme à la norme POSIX, cette API (bibliothèque logicielle ou interface) régissant les demandes de services des processus au noyau. Le noyau Linux est dit modulaire car il gère de façon dynamique les pilotes de périphériques en fonction des besoins.

Les sources officielles du noyau sont téléchargeables sur le site web officiel du noyau : https://www.kernel.org

Pour connaître la version du noyau de votre distribution Ubuntu, saisissez la commande suivante :

# uname -r  
5.15.0-52-generic 

Le numéro tient compte d’une version majeure (5.15 et d’une révision concernant la correction d’erreurs ou l’ajout de fonctionnalités (ici 0). Le dernier chiffre (52) indique une variation dans la configuration ; vous pouvez parfaitement définir votre propre variation en cas de compilation différente du noyau.

2. /proc et /sys

Les répertoires /proc et /sys sont des pseudo-systèmes de fichiers. Ils sont virtuels et n’occupent aucune...

Mise en pratique

1. Consommation de ressources

Questions

1/ Que constatez-vous sur la copie d’écran suivante ?

images/08RI01N.png

2/ Quelle action pourrait causer une telle charge du système ?

3/ Est-ce qu’ajouter de la mémoire au système améliorerait le comportement de la machine ?

4/ Vous semble-t-il raisonnable de lancer un nouveau processus consommateur en CPU ? Et en mémoire ? Et en I/O ?

5/ S’il s’agit d’une situation récurrente et normale en termes d’exploitation, quelles pourraient être les solutions pour améliorer les performances ?

6/ Comment feriez-vous pour identifier le processus responsable de cette charge ?

Réponses

1/ La commande vmstat 2 2 produit deux lignes de résultat. La première reprend des valeurs statistiques depuis le démarrage du système et nous indique une charge CPU très faible en moyenne (id = 98).

La seconde ligne en revanche indique une charge forte (id=0), une faible charge en temps user (us=3), forte en système (sy=31) et très forte en wait IO (wa=66).

On peut donc déduire de ces deux lignes que globalement le système est peu chargé mais que récemment un processus gourmand en temps système et provoquant beaucoup d’attente I/O (en réalité d’attente sur interruption système) a été lancé.

2/ A priori le processus responsable de cette charge réalise des accès disque très importants en lecture ou en écriture.

3/ Non, l’effet serait négligeable.

4/ La colonne wa=66 nous indique que 66 % du temps processeur est passé à attendre. On pourrait donc sans risque lancer des processus qui consomment du temps CPU mais pas d’I/O. De même pour la mémoire, la colonne free montre peu de variations et le système...