Nejsem si jistý, jestli to jsou jediné důvody, ale tady je moje cvičení:
V závislosti na způsobu, jakým napíšete shellscript pro zabití požadovaného procesu, můžete nakonec zabít zabíjející PID dříve, než zabije váš cíl, vezměme mydaemon například:
kill -9 `ps ax | grep mydaemon | awk '{ print $1 }'`
A) SIGPIPE-ing killV 32bitovém linuxovém PID je obvykle 15bitové celé číslo, často dochází k přetečení, existuje poměrně velká šance, že se PID grep nebo awk objeví dříve než PID mydaemon . V 64bitových PID jsou čísla obvykle 22bitová, je to více než 100x méně pravděpodobné, že se to stane, ale stále je to docela reálné.
Zabitím jedné z vašich dýmek získáte SIGPIPE a obvykle to znamená také smrt, proto zabijte by byl zabit před zabitím mydaemona pokus o zabití selže.
B) Zabíjení dalších PID Řekněme také, že jste měli vi /etc/mydaemon/mydaemon.conf Pokud běží dohromady, může být PID také zabit, nemluvě o procesech ostatních uživatelů, protože takový příkaz byste s velkou pravděpodobností zadávali jako root.
C) Je to jednoduchý zámek podobný unixu -> Nevyžaduje se žádný další kód/démon. PidFiles představují poměrně jednoduchý způsob, jak vytvořit uživatelem ovladatelné zámky, které vám zabrání dvakrát neúmyslně spustit démona.
Soubory pid obsahují id procesu (číslo) daného programu. Například Apache HTTPD může zapsat své hlavní číslo procesu do souboru pid - což je běžný textový soubor, nic víc - a později použít informace v něm obsažené, aby se zastavil. Tyto informace můžete také použít k ukončení procesu sami pomocí cat filename.pid | xargs kill