229 votes

Qu'est-ce qu'un fichier .pid et que contient-il?

Récemment, je suis tombé sur un fichier avec l'extension .pid et j'ai regardé à l'intérieur mais je n'ai rien trouvé de significatif. La documentation dit :

Un fichier de pid est un fichier contenant le numéro d'identification du processus (pid) qui est stocké à un emplacement bien défini du système de fichiers, permettant ainsi à d'autres programmes de découvrir le pid d'un script en cours d'exécution.

Est-ce que quelqu'un peut éclairer davantage sur cela ou me guider vers les détails de ce qui est contenu dans le fichier de pid ?

243voto

Rafael Steil Points 1677

Les fichiers pid contiennent l'identifiant de processus (un nombre) d'un programme donné. Par exemple, Apache HTTPD peut écrire son numéro de processus principal dans un fichier pid - qui est un simple fichier texte, rien de plus que cela - et ultérieurement utiliser les informations qui y sont contenues pour s'arrêter. Vous pouvez également utiliser ces informations pour tuer le processus vous-même, en utilisant cat filename.pid | xargs kill

1 votes

Merci beaucoup pour le point car j'ai également trouvé le même exemple sur mon système, contenant uniquement des identifiants de processus. Il peut donc être spécifique à l'application, donc je peux aussi basiquement l'utiliser pour mon usage personnel sous Linux, n'est-ce pas?

0 votes

Oui, c'est correct. Il est spécifique à l'application, uniquement pour cette machine. Toutes les applications ne stockent pas de fichiers pid, mais il est très courant de le trouver à travers le système.

8 votes

Pourquoi ne pas chercher le processus par nom alors ? Pourquoi s'embêter à maintenir les fichiers .pid quand vous pouvez simplement exécuter "pidof $process_name" et obtenir l'ID ?

0voto

Carlos Lint Points 1

Pas sûr que ce soient les seules raisons, mais voici ma perforation :

En fonction de la manière dont vous écrivez un script shell pour tuer le processus souhaité, vous pourriez finir par tuer le PID de kill avant qu'il ne tue votre cible, prenons par exemple mondémon :

kill -9 `ps ax | grep mydaemon | awk '{ print $1 }'`

A) Tuer en envoyant le signal SIGPIPE Dans un système Linux 32 bits, le PID est généralement un entier sur 15 bits, les débordements se produisent souvent, il y a une assez grande chance que les PIDs du grep ou awk apparaissent avant celui de mon démon. Dans les systèmes 64 bits, les numéros de PID sont généralement sur 22 bits, il est plus de 100 fois moins probable que cela se produise, mais reste assez faisable.

En tuant l'un de vos pipes, vous recevrez un signal SIGPIPE et en général cela signifie également la mort, donc kill serait tué avant de tuer mon démon, rendant la tentative de kill un échec.

B) Tuer d'autres PIDs De plus, imaginons que vous aviez vi /etc/mydaemon/mydaemon.conf en cours d'exécution, ce PID pourrait également être tué, sans parler des processus d'autres utilisateurs étant donné que vous émettez très probablement une telle commande en tant que root.

C) C'est un simple verrou de type unix -> Pas de code/daemon supplémentaire requis. Les fichiers PID offrent un moyen assez simple de créer des verrous gérables par l'utilisateur pour vous empêcher de lancer involontairement un démon deux fois.

0voto

Le fichier Pidfile contient le pid d'un processus. C'est une convention permettant aux processus de longue durée d'être plus auto-conscients. Le processus du serveur peut le vérifier pour s'arrêter lui-même, ou avoir une heuristique indiquant que son autre instance est déjà en cours d'exécution. Les Pidfiles peuvent également être utilisés pour tuer facilement manuellement le risque, par exemple pkill -F

-2voto

Mithun Sasidharan Points 5589

Pour comprendre les fichiers pid, veuillez consulter ce DOC

Parfois, certaines applications nécessitent un support supplémentaire de plugins et d'utilitaires. Ainsi, elle garde une trace de ces utilitaires et des identifiants de processus de plugins en cours d'exécution en utilisant ce fichier pid comme référence.

C'est pourquoi chaque fois que vous redémarrez une application, tous les plugins nécessaires et les applications dépendantes doivent être redémarrés, car le fichier pid deviendra obsolète.

8 votes

Votre premier lien ne répond pas vraiment à la question.

5 votes

Bien que le matériel lié puisse théoriquement répondre à la question, il serait préférable d'inclure les parties essentielles de la réponse ici et de fournir le lien pour référence.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X