Как написано в заголовке, где я должен позволить скрипту инициализации написать файл pid? Есть ли какие-нибудь стандартные пути, которые я должен выбрать вместо /var /run?
Может ли /tmp быть хорошим местом для хранения или в этом есть недостатки?
Вкратце: вы можете хранить его где угодно (скажем, /tmp
или /var/tmp
), но /var/run
является предпочтительным стандартом.
/var/run
- это стандарт иерархии файловой системы:
Этот каталог содержит данные системной информации, описывающие систему с момента ее загрузки. Файлы в этом каталоге должны быть очищены (удалены или усечены соответствующим образом) в начале процесса загрузки. Программы могут иметь подкаталог /var /run; это рекомендуется для программ, которые используют более одного файла времени выполнения. [сноска 37]
И желательной особенностью является то, что большинство дистрибутивов очищают его автоматически (в отличие от /tmp
который не очищается при загрузке в некоторых дистрибутивах) - это позволяет избежать устаревших pid-файлов:
Нормальное расположение для pidfiles - /var /run. Большинство юниоров очищает этот каталог при загрузке; в Ubuntu это достигается путем /var / запуска файловой системы в памяти (tmpfs).
Это ваш выбор, где хранить его, но я бы пошел со стандартом.
Если у вас нет доступа к /var/run
, вам следует сохранить файл pid в домашнем каталоге пользователя, например, ~/.my_app.pid
.
Если вам нужен не-root доступ для записи в /var/run
, то обратите внимание, что в /var/run/user
есть подкаталоги для отдельных пользователей. Вам просто нужно получить UID текущего пользователя:
/var/run/user/[$uid]