Назад | Перейти на главную страницу

Падение systemd не может создать файл PID

У меня есть дроп-ин для 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'