Я бы не помещал 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.