¿Qué es un archivo .pid y qué contiene?

199

Recientemente me encontré con un archivo con la extensión .pid y exploré dentro de él, pero no encontré mucho. La documentación dice:

Un archivo Pid es un archivo que contiene el número de identificación del proceso (pid) que se almacena en una ubicación bien definida del sistema de archivos, lo que permite que otros programas descubran el pid de un script en ejecución.

¿Alguien puede arrojar más luz sobre esto, o guiarme a los detalles de lo que contiene el archivo pid?

ifixthat
fuente

Respuestas:

210

Los archivos pid contienen la identificación del proceso (un número) de un programa dado. Por ejemplo, Apache HTTPD puede escribir su número de proceso principal en un archivo pid, que es un archivo de texto normal, nada más que eso, y luego usar la información allí contenida para detenerse. También puede usar esa información para matar el proceso usted mismo, usandocat filename.pid | xargs kill

Rafael Steil
fuente
44
¿Por qué no buscar el proceso por nombre entonces? ¿Por qué molestarse en mantener archivos .pid cuando solo puede ejecutar "pidof $ process_name" y obtener la ID?
Shnatsel
14
@Shnatsel: porque puede haber dos procesos con ese nombre en ejecución, y necesita saber cuál está a cargo de ese archivo PID. Hay otras razones, más detalles se encuentran aquí: unix.stackexchange.com/questions/12815/…
user4815162342
2
En ese caso, habría 2 archivos pid y se enfrentará al mismo problema que con las búsquedas PID. Por lo tanto, los archivos pid no son buenos y solo complican las cosas en este escenario, así como en cualquier otro escenario que se me ocurra. Sospecho que aparecieron antes que procfs o que se usan como herramienta de portabilidad porque las interfaces de procfs son diferentes, por ejemplo, en Solaris son bastante diferentes de las de Linux.
Shnatsel
3
Solo una cosa: echo filename.pid | xargs killno matará el proceso. Supongo que quisiste decir: echo $(cat filename.pid) | xargs kill o echo <process ID> | xargs kill.
Alexandro de Oliveira
2
@AlexandrodeOliveira ¿Hay alguna ventaja de usar echo y cat en lugar de solo cat filename.pid | xargs kill?
Simon A. Eugster
0

Pidfile contiene pid de un proceso. Es una convención que permite que los procesos de larga ejecución sean más conscientes de sí mismos. El proceso del servidor puede inspeccionarlo para que se detenga, o tener una heurística de que su otra instancia ya se está ejecutando. Los Pidfiles también se pueden usar para eliminar el riesgo de forma manual, p. Ej.pkill -F <some.pid>

Bartlomiej Antosik
fuente
-1

Para comprender los archivos pid, consulte este DOC

Algunas veces hay ciertas aplicaciones que requieren soporte adicional de complementos y utilidades adicionales. Por lo tanto, realiza un seguimiento de estas utilidades y procesos de complementos que ejecutan ID utilizando este archivo pid como referencia.

Es por eso que cada vez que reinicia una aplicación, todos los complementos necesarios y las aplicaciones dependientes deben reiniciarse ya que el archivo pid se volverá obsoleto.

Mithun Sasidharan
fuente
8
Su primer enlace realmente no responde la pregunta.
Brian
55
Si bien el material vinculado puede responder teóricamente a la pregunta, sería preferible incluir aquí las partes esenciales de la respuesta y proporcionar el enlace como referencia.
Toby Speight