Должен ли мой pid-файл находиться в / var / run? - PullRequest
69 голосов
/ 03 марта 2011

Я спрашиваю в обоих контекстах: технически и стилистически.

Может ли мое приложение / демон хранить pid-файл в /opt/my_app/run/?

Разве это очень плохо?

Мне нужно вот что: мой демон запускается под определенным пользователем, и разработчик должен mkdir новый каталог в /var/run, chown и chgrp, чтобы запустить мой демон. Кажется, проще сохранить локальный pid-файл (для демона).

Ответы [ 4 ]

96 голосов
/ 03 марта 2011

Я бы не помещал pid-файл в каталог установки приложения, такой как /opt/my_app/whatever.Этот каталог может быть смонтирован только для чтения, может использоваться несколькими компьютерами, может отслеживаться демоном, который рассматривает любое изменение там как возможную попытку взлома…

Обычное расположение для pid-файлов - /var/run.Большинство юниоров очищает этот каталог при загрузке;в Ubuntu это достигается с помощью /var/run файловой системы в памяти (tmpfs).

Если вы запускаете своего демона из скрипта, работающего от имени пользователя root, создайте подкаталог /var/run/gmooredaemon и поместите его впользователь, запускающий демон, перед su обращением к пользователю и запуском демона.

Во многих современных системах Linux, если вы запускаете демон из скрипта или программы запуска, которая не работает от имени пользователя root, вы можете поместитьpid-файл в /run/user/$UID, который для каждого пользователя эквивалентен традиционному /var/run.Обратите внимание, что корневая часть модуля запуска или загрузочного скрипта, работающего от имени пользователя root, должна создать каталог (для пользователя-пользователя каталог создается при входе пользователя в систему).

В противном случае выберите местоположениев /tmp или /var/tmp, но это создает дополнительную сложность, поскольку имя pid-файла не может быть однозначно определено, если оно находится в каталоге, доступном для записи в мире.

В любом случае, сделайте это легко (командная строкаопция, плюс, возможно, опция времени компиляции) для дистрибьютора или администратора для изменения местоположения файла pid.

9 голосов
/ 03 марта 2011

/ opt используется для установки «автономных» приложений, так что здесь все в порядке. Использование /opt/my_app/etc/ для конфигурационных файлов, /opt/my_app/log/ для журналов и т. Д. - обычная практика для такого рода приложений.

Здесь вы можете распространять свои приложения в виде файла TGZ вместо того, чтобы поддерживать пакет для каждого менеджера пакетов (по крайней мере, DEB, так как вы пометили ubuntu). Я бы порекомендовал это для внутренних приложений или ситуаций, когда у вас есть большой контроль над окружающей средой. Причина заключается в том, что не имеет смысла, если сейф стоит больше, чем вы вкладываете внутрь (работа, необходимая для упаковки приложения, не должна затмевать усилия, необходимые для написания приложения).

8 голосов
/ 03 марта 2011

Расположение файла pid должно быть настраиваемым. / var / run является стандартным для файлов pid, так же, как / var / log является стандартным для журналов. Но ваш демон должен позволить вам перезаписать этот параметр в некотором конфигурационном файле.

6 голосов
/ 08 мая 2013

Другое соглашение, если вы не запускаете скрипт от имени root, это поместить pid-файл в ~/.my_app/my_app.pid. Это проще, но в то же время безопасно, поскольку домашний каталог не доступен для записи.

...