Č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?
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ů:
kill
, pokud ho někdo chce ukončit.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.
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.
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.