it-swarm-eu.dev

K čemu slouží soubory pid a lock?

Často vidím, že programy specifikují soubory pid a lock. A nejsem si úplně jistý, co dělají.

Například při kompilaci nginx:

--pid-path=/var/run/nginx.pid \
--lock-path=/var/lock/nginx.lock \

Může na to někdo vrhnout nějaké světlo?

80
Stann

pID soubory jsou zapsány některými programy, aby zaznamenávaly své ID procesu během jejich spouštění. To má několik účelů:

  • Je to signál pro ostatní procesy a uživatele systému, že daný program běží nebo alespoň úspěšně začal.
  • Umožňuje jednomu psát skript opravdu snadno zkontrolovat, zda je spuštěn, a vydat obyčejný příkaz kill, pokud ho někdo chce ukončit.
  • Je to levný způsob, jak program zjistit, zda předchozí běžící instance nebyla úspěšně ukončena.

Pouhá přítomnost souboru pid nezaručuje, že konkrétní id procesu běží, samozřejmě, takže tato metoda není stoprocentně spolehlivá, ale v mnoha případech „dostatečně dobrá“. Kontrola, zda konkrétní PID existuje v procesní tabulce, není úplně přenosná napříč unixovými operačními systémy, pokud nechcete záviset na obslužném programu ps, který nemusí být žádoucí volat ve všech případech (a věřím, že některé operační systémy podobné unixu implementují ps jinak).

Soubory zámku jsou používány programy k zajištění dvou (dobře chovaných) samostatných instancí programu, které mohou běžet souběžně na jednom systému, nepřistupovat k něčemu jinému současně. Myšlenka je před tím, než program přistupuje ke svému zdroji, zkontroluje přítomnost souboru zámku a pokud soubor zámku existuje, buď dojde k chybě, nebo počká, až zmizí. Pokud neexistuje, program, který chce „získat“ prostředek, vytvoří soubor a další instance, které by se mohly později objevit, budou čekat, až bude tento proces proveden. To samozřejmě předpokládá, že program „získává“ zámek jej ve skutečnosti uvolní a nezapomene smazat soubor zámku.

Funguje to proto, že souborový systém ve všech operačních systémech podobných unixu vynucuje serializace, což znamená, že v daném okamžiku se skutečně stane pouze jedna změna souborového systému. Něco jako zámky s databázemi apod.

90
LawrenceC

Tyto soubory jsou často používány démony, které by měly být v systému spuštěny pouze jednou. Soubor PID obvykle obsahuje identifikační číslo procesu již spuštěného a spuštěného programu, pokud existuje. Při spuštění také vytvoří soubor zámku. Dokud bude soubor zámku existovat, nebude spuštěn další bez zásahu uživatele. Pokud existuje soubor zámku a ID procesu uvedené v souboru pid není spuštěno, je démon považován za „mrtvý“, což znamená, že má být spuštěn, ale pravděpodobně není způsoben selháním nebo nesprávným vypnutím. . To by mohlo u některých programů vyvolat speciální scénář spuštění/restartu. Správným vypnutím odstraníte soubor zámku.

14
Caleb

Soubor PID bude obsahovat ID procesu spuštěného procesu. Toto má různá použití; můžete si ji přečíst a zkontrolovat, že proces stále běží a podniknout příslušné kroky nebo si jej přečíst a proces zabít.

Soubor zámku je s největší pravděpodobností specifický pro konkrétní aplikaci. Zamčené soubory se používají k označení toho, že se používá nějaký prostředek a že proces, který chce přístup, by měl počkat, než bude prostředek uvolněn, než bude pokračovat.

8
user591