Linux - альтернативные места, где хранить файл pid вместо / var / run

21

Как написано в заголовке, где я должен позволить скрипту инициализации написать файл pid? Есть ли какие-нибудь стандартные пути, которые я должен выбрать вместо / var / run?

Может ли / tmp быть хорошим местом для хранения или в этом есть недостатки?

Murko
источник
6
Что не так с / var / run?
arved
Этот вопрос переполнения стека является актуальным: stackoverflow.com/q/5173636/1071869
Ренан
единственная неправильная вещь в / var / run заключается в том, что у меня нет прав на запись с моим пользователем в нее ..
Murko
2
@Murko тогда вы должны сохранить файл pid в домашнем каталоге пользователя.
Ренан

Ответы:

22

Короче говоря : вы можете хранить его где угодно (скажем, /tmpили /var/tmp), но /var/runэто предпочтительный стандарт.

/var/runтакое стандарт иерархии файловой системы :

Этот каталог содержит данные системной информации, описывающие систему с момента ее загрузки. Файлы в этом каталоге должны быть очищены (удалены или усечены соответствующим образом) в начале процесса загрузки. Программы могут иметь подкаталог / var / run; это рекомендуется для программ, которые используют более одного файла времени выполнения. [сноска 37]

И желательной особенностью является то, что большинство дистрибутивов очищают его автоматически (в отличие от того, /tmpкоторый не очищается при загрузке в некоторых дистрибутивах) - это позволяет избежать устаревших pid-файлов:

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

Это ваш выбор, где хранить его, но я бы пошел со стандартом.

Если у вас нет доступа к /var/run, вы должны хранить PID - файл в домашнем каталоге пользователя, например ~/.my_app.pid.

Ренан
источник
9

Если /var/runвам нужен не-root доступ для записи , обратите внимание, что /var/run/userдля отдельных пользователей есть подкаталоги . Вам просто нужно получить UID текущего пользователя:

/var/run/user/[$uid]

DWK
источник