Was ist eine PID-Datei und was enthält sie?

198

Ich bin kürzlich auf eine Datei mit der Erweiterung .pid gestoßen und habe sie darin untersucht, aber nicht viel gefunden. Die Dokumentation sagt:

Eine Pid-Datei ist eine Datei, die die Prozessidentifikationsnummer (PID) enthält, die an einem genau definierten Ort des Dateisystems gespeichert ist, sodass andere Programme die PID eines laufenden Skripts ermitteln können.

Kann jemand mehr Licht ins Dunkel bringen oder mich zu Einzelheiten darüber führen, was in der PID-Datei enthalten ist?

ifixthat
quelle

Antworten:

209

Die PID-Dateien enthalten die Prozess-ID (eine Nummer) eines bestimmten Programms. Beispielsweise kann Apache HTTPD seine Hauptprozessnummer in eine PID-Datei schreiben - dies ist eine normale Textdatei, nichts weiter als das - und später die dort enthaltenen Informationen verwenden, um sich selbst zu stoppen. Sie können diese Informationen auch verwenden, um den Prozess selbst zu beendencat filename.pid | xargs kill

Rafael Steil
quelle
4
Warum suchen Sie den Prozess dann nicht nach Namen? Warum sollten Sie sich mit der Pflege von .pid-Dateien beschäftigen, wenn Sie einfach "pidof $ process_name" ausführen und die ID erhalten können?
Shnatsel
14
@Shnatsel: Da möglicherweise zwei Prozesse mit diesem Namen ausgeführt werden und Sie wissen müssen, welcher für diese PID-Datei verantwortlich ist. Es gibt andere Gründe, weitere Details finden Sie hier: unix.stackexchange.com/questions/12815/…
user4815162342
2
In diesem Fall gibt es 2 PID-Dateien und Sie haben das gleiche Problem wie bei PID-Suchvorgängen. Pidfiles sind also nicht gut und komplizieren nur die Dinge in diesem Szenario sowie in jedem anderen Szenario, das ich mir vorstellen kann. Ich vermute, dass sie entweder vor procfs erschienen sind oder als Portabilitätswerkzeug verwendet werden, da sich die procfs-Schnittstellen unter z. B. Solaris erheblich von denen unter Linux unterscheiden.
Shnatsel
3
Nur eine Sache: echo filename.pid | xargs killwird den Prozess nicht beenden. Ich denke du meintest: echo $(cat filename.pid) | xargs kill oder echo <process ID> | xargs kill.
Alexandro de Oliveira
2
@AlexandrodeOliveira Gibt es einen Vorteil der Verwendung von Echo und Katze anstelle von nur cat filename.pid | xargs kill?
Simon A. Eugster
-1

Informationen zum Verständnis von PID-Dateien finden Sie in diesem DOC

Manchmal gibt es bestimmte Anwendungen, die zusätzliche Unterstützung für zusätzliche Plugins und Dienstprogramme erfordern. Daher werden diese Dienstprogramme und Plug-in-Prozesse, in denen IDs ausgeführt werden, anhand dieser PID-Datei als Referenz verfolgt.

Aus diesem Grund müssen beim Neustart einer Anwendung alle erforderlichen Plugins und abhängigen Apps neu gestartet werden, da die PID-Datei veraltet ist.

Mithun Sasidharan
quelle
8
Ihr erster Link beantwortet die Frage nicht wirklich.
Brian
5
Während das verknüpfte Material theoretisch die Frage beantworten kann, wäre es vorzuziehen , die wesentlichen Teile der Antwort hier aufzunehmen und den Link als Referenz bereitzustellen.
Toby Speight