Czy mój pidfile musi znajdować się w /var/run?

Pytam w obu kontekstach: technicznie i stylistycznie.

Czy moja aplikacja / Demon może przechowywać pidfile w /opt/my_app/run/?

Czy to bardzo źle?

Moja potrzeba jest taka: mój Demon działa pod konkretnym użytkownikiem, a wykonawca musi mkdir nowy katalog w /var/run, chown i chgrp, aby mój Demon działał. Wydaje siÄ ™ Ĺ ' atwiej utrzymaÄ ‡ pidfile lokalnie (do demona).

Author: Mateusz Piotrowski, 2011-03-02

4 answers

Nie umieszczałbym pliku pidfile w katalogu instalacyjnym aplikacji, takim jak /opt/my_app/whatever. Katalog ten może być montowany tylko do odczytu, może być współdzielony między maszynami, może być obserwowany przez demona, który traktuje wszelkie zmiany tam jako możliwą próbę włamania ...

Normalną lokalizacją pidfiles jest /var/run. Większość unices wyczyści ten katalog podczas rozruchu; w Ubuntu jest to osiągane przez /var/run system plików w pamięci (tmpfs).

Jeśli uruchomisz demona ze skryptu, który jest uruchomiony jako root, niech utworzy podkatalog /var/run/gmooredaemon i przekaże go użytkownikowi uruchamiającemu demona przed su ing użytkownikowi i uruchomieniem demona.

Na wielu nowoczesnych systemach linuksowych, jeśli uruchomisz demona ze skryptu lub Launchera, który nie działa jako root, możesz umieścić plik PID w /run/user/$UID, który jest odpowiednikiem tradycyjnego /var/run dla każdego użytkownika. Zauważ, że główna część Launchera lub skrypt startowy działający jako root musi utworzyć katalog (dla ludzkiego użytkownika katalog jest tworzony kiedy użytkownik się loguje).

W przeciwnym razie wybierz lokalizację pod /tmp lub /var/tmp, ale wprowadza to dodatkową złożoność, ponieważ nazwa pliku pid nie może być jednoznacznie określona, jeśli znajduje się w katalogu z możliwością zapisu na świecie.

W każdym razie, ułatw sobie (opcja wiersza poleceń, Plus być może opcja kompilacji) dla dystrybutora lub administratora, aby zmienić lokalizację pidfile.

 104
Author: Gilles 'SO- stop being evil',
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-05-18 21:02:13

Lokalizacja pliku pid powinna być konfigurowalna. /var / run jest standardem dla plików pid, tak samo jak /var/log jest standardem dla dzienników. Ale twój Demon powinien pozwolić ci nadpisać to ustawienie w jakimś pliku konfiguracyjnym.

 9
Author: Costi Ciudatu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-03-02 21:24:56

/opt jest używany do instalowania "samodzielnych" aplikacji, więc nie ma tu nic złego. Używanie /opt/my_app/etc/ dla plików konfiguracyjnych, /opt/my_app/log/ dla logów i tak dalej-powszechna praktyka w tego typu aplikacjach.

Dzięki temu możesz dystrybuować swoje aplikacje jako plik TGZ, zamiast utrzymywać pakiet dla każdego menedżera pakietów(przynajmniej DEB, odkąd oznaczyłeś ubuntu). Polecam to do zastosowań wewnętrznych lub sytuacji, w których masz wielką kontrolę nad środowiskiem. Rozumowanie jest takie, że nie ma sensu, jeśli sejf kosztuje więcej niż to, co wkładasz do środka (praca wymagana do spakowania aplikacji nie powinna przyćmić wysiłku wymaganego do napisania aplikacji).

 9
Author: Paulo Scardine,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-03-07 06:13:23

Inną konwencją, jeśli nie uruchamiasz skryptu jako root, jest umieszczenie pliku PID w ~/.my_app/my_app.pid. Jest to prostsze, a jednocześnie bezpieczne, ponieważ katalog domowy nie jest zapisywalny na całym świecie.

 6
Author: pestrella,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-05-08 16:25:18