wiki:GnuLinuxAdminBaseSystem

Ce chapitre fait partie du cours d'aministration de GNU/Linux.

GNU/Linux - Administration - Services de base

1. Init

Il s'agit du premier processus lancé par Linux, il a toujours le PID (numéro de processus) 1. Il contrôle certains processus vitaux et les redémarre si nécessaire (par exemple les gestionnaires de console). Il assure l'enchainement des séquences de démarrage et d'arrêt de la machine.

Sa configuration est dans /etc/inittab. Ce service étant crucial au bon fonctionnement global du système, il est hautement recommandé de ne pas y toucher sans comprendre très précisément les implications des modifications effectuées.

Il est possible de changer de runlevel (type de séquence de démarrage) à la volée. Ceci est typiquement utilisé pour faire passer un système en single user mode (telinit s, utiliser telinit 2 pour revenir en mode "normal"), mode d'administration spécial où uniquement le strict minimum de services est conservé.

[Oral: les runlevels, les consoles série, les onduleurs, le reset clavier]

2. Cron

Ce service est l'ordonnanceur du système, il permet de déclencher des tâches à des fréquences et des moments précis. Bien que son fichier de configuration soit /etc/crontab, on n'édite jamais celui-ci directement. A la place, on crée des scripts que l'on dépose dans des répertoires évoquant les fréquences à laquelle ces derniers vont être appelés:

  • /etc/cron.daily
  • /etc/cron.weekly
  • /etc/cron.monthly

Le répertoire /etc/cron.d permet de spécifier des fichiers au format cron (man cron pour plus d'informations), ce qui permet de contrôler la fréquence, les moments datés et l'utilisateur Unix de la commande à exécuter.

Cron envoie la sortie standard et d'erreur de ses tâches par mail si elle n'est pas vide (il est donc recommandé de n'automatiser que des programmes discrets, qui ne se plaignent qu'en cas d'erreur; il est également recommandé de correctement configurer la distribution de mail).

Toute modification de configuration (ajout, modification ou retrait de fichier) ne sera pas prise en compte par cron tant que celui-ci n'a pas été prévenu (en général /etc/init.d/cron reload) - sauf quand les tâches sont éditées via la commande crontab -e.

Voir par exemple dans le chapitre suivant /etc/cron.daily/logrotate.

3. Syslog

Ce service recueille la plupart des logs (journaux, événements) des applications - il y a des exceptions commes les logs d'accès Apache. Par défaut il ventile les informations dans divers fichiers dans /var/log selon différents critères. Sa configuration est dans /etc/syslog.conf.

A noter l'existence du companion sysklogd dont le rôle est de recevoir le log du noyau (qui est une application assez particulière), et de les réinjecter dans syslog.

Enfin, comme l'écriture sans fin des logs finirait toujours par remplir le disque, il faut considérer le programme logrotate - qui est lancé régulièrement via cron - et qui sert à limiter la quantité de logs conservées:

  • soit selon une durée maximale, par ex. les 3 derniers mois de logs
  • soit selon une taille maximale, par ex. les 100 derniers MO de logs
  • soit selon ces deux derniers critères

Pour simplifier le travail d'archivage et le rendre plus efficace, logrotate applique les critères à une action de "rotation": si le log courant est trop vieux, trop gros, ou les deux, il est renommé avec un préfixe numérique incrémental, et compressé. Si le total des logs archivés dépasse à son tour une taille ou une durée maximale, le plus vieux logs archivé est supprimé.

Il est très classique de voir un serveur tomber en panne car son disque a été enitèrement rempli par des logs. Les règles sont les suivantes:

  • les configurations par défaut Debian ont été soigneusement choisies, ne les modifiez qu'en réfléchissant bien!
  • pour les logiciels tiers, faites-leur utiliser syslog si possible (vous profitez ainsi de l'infrastructure existante), sinon posez-vous bien la question de la rotation et de la conservation de ses logs

[Oral: syslog via le réseau]

4. Inetd/Xinetd?

Le superdémon est toujours présent, et en général activé. De nombreux services peuvent être configurés en standalone (gestion réseau par leurs propres moyens) ou inetd (gestion réseau déferrée à inetd). Si on adopte le superdémon amélioré xinetd, ceci peut être particulièrement intéressant, car xinetd permet un réglage générique et souple du comportement réseau de l'application: nombre maximum de processus, nombre maximum de connexions par seconde, blacklists, contrôle de la charge, chroot et environnement non privilégiés, etc.

5. Autres services

Vous rencontrerez très probablement d'autres services, eux aussi omniprésents:

  • [k----]: les processus dont le nom est entre crochets (et en général commençant par la lettre "k", avec un numéro de processus bas) sont appelés des threads kernels. Il s'agit de programmes secondaires s'exécutant dans le contexte du noyau, et sur lesquels vous n'avez aucun contrôle direct, vous pouvez seulement consulter leur état.
  • udev: uniquement avec Linux 2.6, celui-ci gère le répertoire /dev automatiquement en fonction des périphériques détectés (y compris branchés à la volée), et coopère avec hotplug pour la configuration dynamique de ces périphériques.
  • portmap: c'est le serveur de RPC (Remote Procedure Call) d'Unix, il assure seulement le multiplexage entre les applications (en lui-même il ne fournit pas d'autres services qu'un annuaire d'applications). Il est traditionnellemen utilisé par les clients et serveurs NFS (dont le protocole repose sur RPC).
  • getty: il s'agit du gestionnaire de console virtuelle, le programme qui réagit au titillement du clavier et assure l'affichage, le défilement, etc sur l'écran, et lance le programme login afin que vous puissiez vous logger et obtenir un shell. Il y a un programme par console virtuelle (touches Alt+F1 à F6 pour les obtenir), en général 6 au total.
  • acpid: ce démon contrôle la communication entre votre système et le BIOS ACPI de votre ordinateur. Cette communication est principalement utilisée par les laptops pour les événements de fermeture d'écran, de signalisation de batterie, ventilation, température, etc. Il est en général facultatif sur un serveur classique.
Last modified 14 years ago Last modified on Sep 3, 2006, 1:34:13 AM