« LINUX:Fichier contenant le numéro de processus » : différence entre les versions

De WIKI sur Linux (ADB)
Aller à la navigation Aller à la recherche
Aucun résumé des modifications
Aucun résumé des modifications
Ligne 4 : Ligne 4 :
__FORCETOC__
__FORCETOC__
=But=
=But=
A chaque programme lancé est attribué un numéro unique (PID). 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.
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 deux programmes sont lancés l'un pour l'interaction avec le matériel (PID=2) et l'autre qui lancera tous les autres processus utiles à l'utilisation du système (PID=1). 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. 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é.)




Ligne 14 : Ligne 18 :


=Service=
=Service=
Cette tâche est effectuée par le programme "systemd-tmpfiles" qui est notamment lancé une fois au démarrage 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.
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".
 
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".




Ligne 22 : Ligne 29 :


Chaque fichier comprend une ou plusieurs lignes, chacune dédiée à une tâche. Chaque ligne est constituée de sept colonnes:
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,...)
* Type de fichier ("f" pour fichier, "D" pour répertoire, "L" pour lien symbolique,...)
* Chemin (ou Path)
* Chemin (ou Path)
* Privilèges (ou Mode) comme on l'utilise avec la commande "chmod" en mode numérique
* Privilèges (ou Mode) comme on l'utilise avec la commande "chmod" en mode numérique
Ligne 34 : Ligne 41 :


=Exemple=
=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.  
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:
J'ai donc créé le fichier "/usr/lib/tmpfiles.d/nagios.conf" dont voici le contenu:
----
----
D /run/nagios 0755 nagios nagios -
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".
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".

Version du 1 août 2022 à 13:37


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 deux programmes sont lancés l'un pour l'interaction avec le matériel (PID=2) et l'autre qui lancera tous les autres processus utiles à l'utilisation du système (PID=1). 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. 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, tous 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 le répertoire "/usr/lib/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