У меня есть дроп-ин для systemd-machined на пути /etc/systemd/system/systemd-machined.service.d/10-machined-pid-file.conf
. когда я бегу systemctl status systemd-machined
Я вижу линии
Drop-In: /etc/systemd/system/systemd-machined.service.d
└─10-machined-pid-file.conf
Однако я не вижу PID-файла в / var / run /. Что основано на моем подключении:
[Serivce]
PIDFile=/var/run/machined.pid
Я считаю, что при создании этого файла PID не должно быть никаких проблем. Что-то мне не хватает?
В PIDFile=
настройка не Создайте файл PID. Это еще предстоит сделать самой службе, как и в течение последних 40 лет. Скорее, эта опция сообщает systemd, где найти существующий файл PID (если он есть). В большинстве случаев это не требуется, поскольку systemd будет хранить службы в своих собственных контрольных группах и не нуждается в файле PID для их отслеживания. Однако systemd будет Удалить файл PID при выходе из службы, если служба не может очистить после себя.
Из документация:
Принимает абсолютное имя файла, указывающее на PID-файл этого демона. Использование этой опции рекомендуется для сервисов, где
Type=
установлен наforking
. systemd прочитает PID основного процесса демона после запуска службы. systemd не будет записывать в настроенный здесь файл, хотя он удалит файл после завершения работы службы, если он все еще существует.
К сожалению, systemd не будет создавать PID-файл для службы без разветвления, даже если вы укажете PIDFile=
строка в файле модуля службы. Но вы можете обмануть ExecStartPost=
строка, например:
ExecStartPost=/bin/sh -c 'umask 022; pgrep YOURSERVICE > /var/run/YOURSERVICE.pid'