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

199

J'ai récemment rencontré un fichier avec l'extension .pid et exploré à l'intérieur, mais je n'ai pas trouvé grand-chose. La documentation dit:

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

Quelqu'un peut-il nous éclairer davantage ou me guider vers les détails de ce qui est contenu dans le fichier pid?

ifixthat
la source

Réponses:

210

Les fichiers pid contiennent l'ID 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 fichier texte normal, rien de plus - et utiliser plus tard les informations qu'il contient pour s'arrêter. Vous pouvez également utiliser ces informations pour tuer le processus vous-même, en utilisantcat filename.pid | xargs kill

Rafael Steil
la source
4
Pourquoi ne pas alors rechercher le processus par son nom? Pourquoi s'embêter à gérer des fichiers .pid alors que vous pouvez simplement lancer "pidof $ process_name" et obtenir l'ID?
Shnatsel
14
@Shnatsel: car il peut y avoir deux processus avec ce nom en cours d'exécution, et vous devez savoir lequel est en charge de ce fichier PID. Il y a d'autres raisons, plus de détails se trouvent ici: unix.stackexchange.com/questions/12815/…
user4815162342
2
Dans ce cas, il y aurait 2 fichiers pid et vous rencontrez le même problème qu'avec les recherches PID. Donc, les pidfiles ne servent à rien et ne font que compliquer les choses dans ce scénario ainsi que dans tout autre scénario auquel je peux penser. Je soupçonne qu'ils sont apparus avant procfs ou qu'ils sont utilisés comme outil de portabilité car les interfaces procfs sont différentes sur Solaris, par exemple, sont assez différentes de celles sur Linux.
Shnatsel
3
Une seule chose: echo filename.pid | xargs killne tuera pas le processus. Je suppose que vous vouliez dire: echo $(cat filename.pid) | xargs kill ou echo <process ID> | xargs kill.
Alexandro de Oliveira
2
@AlexandrodeOliveira Y a-t-il un avantage à utiliser echo et cat au lieu de juste cat filename.pid | xargs kill?
Simon A. Eugster
0

Pidfile contient le pid d'un processus. Il s'agit d'une convention permettant aux processus de longue durée d'être plus conscients d'eux-mêmes. Le processus serveur peut l'inspecter pour s'arrêter lui-même, ou avoir l'heuristique que son autre instance est déjà en cours d'exécution. Les fichiers Pid peuvent également être utilisés pour éliminer manuellement les risques de manière conventuelle, par exemplepkill -F <some.pid>

Bartlomiej Antosik
la source
-1

Pour comprendre les fichiers pid, reportez-vous à ce DOC

Parfois, certaines applications nécessitent une prise en charge supplémentaire de plugins et d'utilitaires supplémentaires. Il garde donc la trace de ces utilitaires et plugins exécutant des identifiants utilisant ce fichier pid pour référence.

C'est pourquoi chaque fois que vous redémarrez une application, tous les plug-ins nécessaires et les applications dépendantes doivent être redémarrés car le fichier pid deviendra périmé.

Mithun Sasidharan
la source
8
Votre premier lien ne répond pas vraiment à la question.
Brian
5
Bien que le matériel lié puisse théoriquement répondre à la question, il serait préférable d'inclure ici les parties essentielles de la réponse et de fournir le lien de référence.
Toby Speight