LINUX:Fichier contenant le numéro de processus

De WIKI sur Linux (ADB)
Aller à la navigation Aller à la recherche

retour au menu de Systemd


But

A chaque programme lancé est attribué un numéro unique (PID) (Process Identification). S'il est lancé deux fois, il en aura deux différents. Il est courant de retrouver ce numéro dans un fichier pour les services.

Une pratique courante sous Unix est de tuer ou de recharger un processus via la commande "kill" utilisée fréquemment dans les fichiers de configuration des services.

Au démarrage du système Linux deux programmes sont lancés l'un pour l'interaction avec le matériel (PID=2) (kthreadd) et l'autre qui lancera tous les autres processus utiles à l'utilisation du système (PID=1) (systemd). Le PPID (Parent Process Identification) donne pour chaque processus lancé, le n° du processus qui l'a lancé. En remontant à la tête, on arrive à un de ces deux PID (1 ou 2) qui ont un PPID=0. Il ne faut pas les tuer sinon c'est comme si vous sciez la branche sur laquelle vous êtes assis. Normalement ils sont protégés. (Je n'ai pas essayé.)


Emplacement

Usuellement ce fichier est créé dans le répertoire "/run" ou dans un sous-répertoire.

Si on y regarde de plus près, on remarque que "/run" est un "file system" créé dynamiquement en mémoire; ce qui signifie que si on arrête la machine, tout son contenu est perdu, effacé. Il faut donc recréer son contenu à chaque démarrage.


Service

Cette tâche est effectuée par le programme "systemd-tmpfiles" qui est notamment lancé une fois au démarrage de la machine via le service "systemd-tmpfiles-setup.service". Il ne concerne pas seulement l'arborescence sous le répertoire "/run" mais également d'autres fichiers nécessaires au bon fonctionnement du système.

Un autre service existe, dédié aux fichiers de "/dev": "systemd-tmpfiles-setup-dev.service".

Un troisième service se charge du nettoyage journalier: "systemd-tmpfiles-clean.timer".


Configuration

Ses fichiers de configuration se retrouvent dans les répertoires "/usr/lib/tmpfiles.d" ou "/etc/tmpfiles.d"; ils ont l’extension ".conf".

Chaque fichier comprend une ou plusieurs lignes, chacune dédiée à une tâche. Chaque ligne est constituée de sept colonnes:

  • Type de fichier ("f" pour fichier, "D" pour répertoire, "L" pour lien symbolique,...)
  • Chemin (ou Path)
  • Privilèges (ou Mode) comme on l'utilise avec la commande "chmod" en mode numérique
  • Utilisateur propriétaire
  • Groupe propriétaire
  • Age de la dernière modification dans un but de nettoyage
  • Argument (optionnel): nécessaire par exemple pour la création de liens symboliques

Une absence de valeur est signalée par un tiret ("-"). Voyez les Mans Pages pour plus de détails.


Exemple

J'ai été confronté à ce problème sous Ubuntu. J'utilisais une application WEB "NagioSQL" qui permet de configurer le logiciel de surveillance réseau "Nagios". Il avait besoin du fichier "/run/nagios/nagios.pid" défini dans la configuration de Nagios via l'option "lock_file". Mais problème, le répertoire "/run/nagios" n'existe pas. Et donc ce fichier ne pouvait être créé.

J'ai donc créé le fichier "/usr/lib/tmpfiles.d/nagios.conf" dont voici le contenu:


D /run/nagios 0755 nagios nagios -

On crée le répertoire "/run/nagios" appartenant à l'utilisateur/groupe "nagios/nagios" qui exécute le service Nagios avec les privilèges "0755".




retour au menu de Systemd