LINUX.ORG.RU

systemd[1]: Can't open PID file /var/run/opendkim/opendkim.pid (yet?) after start

 , , ,


0

1

CentOS 7, после установки opendkim и старта сервиса появляется такая строчка в логе. Есть абсолютно аналогичная проблема с dovecot, далее буду писать только про opendkim.

Лог:

Sep 03 15:15:57 jupi.vbezhenar.com systemd[1]: Starting DomainKeys Identified Mail (DKIM) Milter...
Sep 03 15:15:57 jupi.vbezhenar.com systemd[1]: Can't open PID file /var/run/opendkim/opendkim.pid (yet?) after start: No such file or directory
Sep 03 15:15:57 jupi.vbezhenar.com opendkim[16313]: OpenDKIM Filter v2.11.0 starting (args: -x /etc/opendkim.conf -P /var/run/opendkim/opendkim.pid)
Sep 03 15:15:57 jupi.vbezhenar.com systemd[1]: Started DomainKeys Identified Mail (DKIM) Milter.

Файл сервиса:

[Unit]
Description=DomainKeys Identified Mail (DKIM) Milter
Documentation=man:opendkim(8) man:opendkim.conf(5) man:opendkim-genkey(8) man:opendkim-genzone(8) man:opendkim-testadsp(8) man:opendkim-testkey http://www.opendkim.org/docs.html
After=network.target nss-lookup.target syslog.target

[Service]
Type=forking
PIDFile=/var/run/opendkim/opendkim.pid
EnvironmentFile=-/etc/sysconfig/opendkim
ExecStart=/usr/sbin/opendkim $OPTIONS
ExecReload=/bin/kill -USR1 $MAINPID
User=opendkim
Group=opendkim

[Install]
WantedBy=multi-user.target

На самом деле opendkim создаёт там pid, всё нормально. Да и сервис в принципе стартует, но мне всё равно не нравится лишняя ругань в логе, хочется её убрать. Я так понимаю, суть проблемы в том, что systemd запускает демона, тот тут же форкается и только потом создаёт PID-файл. А systemd уже в этот момент его пытается проверять и не находит.

На данный момент проблему решил созданием файла /etc/systemd/system/opendkim.service.d/postexec-sleep.conf следующего содержания:

[Service]
ExecStartPost=/usr/bin/sleep 1

Но это как-то тупо. Есть ли способ получше?

★★★★★

Поставить систему с OpenRC, Runit или еще какой системой запуска. Void, Devuan, Antix например.

anonymous
()

У тебя сервис запускается не от рута. Может быть, ошибка связана с тем, что пользователь не имеет прав на создание файлов и директорий в /var/run?

anonymous
()
Ответ на: комментарий от anonymous

Нет, проблемы в этом нет. Каталог /var/run/opendkim принадлежит пользователю opendkim и pid-файл там создаётся нормально.

[root@jupi postfix]# ls -la /var/run/opendkim
total 0
drwxrwxr-x.  2 opendkim opendkim  40 Sep  3 16:00 .
drwxr-xr-x. 28 root     root     840 Sep  3 15:29 ..
[root@jupi postfix]# systemctl start opendkim.service
[root@jupi postfix]# ls -la /var/run/opendkim
total 4
drwxrwxr-x.  2 opendkim opendkim  80 Sep  3 16:01 .
drwxr-xr-x. 28 root     root     840 Sep  3 15:29 ..
-rw-r--r--.  1 opendkim opendkim   6 Sep  3 16:01 opendkim.pid
srwxrwx---.  1 opendkim opendkim   0 Sep  3 16:01 opendkim.sock
[root@jupi postfix]# cat /var/run/opendkim/opendkim.pid
16673
[root@jupi postfix]# ps aux|grep 16673
opendkim 16673  0.0  0.2 111816  2524 ?        Ssl  16:01   0:00 /usr/sbin/opendkim -x /etc/opendkim.conf -P /var/run/opendkim/opendkim.pid
Legioner ★★★★★
() автор топика
Последнее исправление: Legioner (всего исправлений: 1)
Ответ на: комментарий от Legioner

Идей нет. Если только указать путь к pid-файлу напрямую через /run, так как /var/run обычно ссылка на /run.

anonymous
()

Но это как-то тупо. Есть ли способ получше?

Я не знаю кто такой opendkim, но я бы запускал его с опцией -f, а всю возню с pid-файлом выкинул за ненадобностью.

debugger ★★★★★
()
Последнее исправление: debugger (всего исправлений: 1)

Я так понимаю, суть проблемы в том, что systemd запускает демона, тот тут же форкается и только потом создаёт PID-файл. А systemd уже в этот момент его пытается проверять и не находит.

+1
Видел такое на нескольких разных юнитах в RHEL7.

bigbit ★★★★★
()

Забей на PID-файл.

Есть ли способ получше?

Способ получше — это пофиксить opendkim.

intelfx ★★★★★
()
Ответ на: комментарий от ass

Не может божественный systemd генерировать проблемы.

А если я напишу (int *)NULL = 0; и программа упадёт с сегфолтом, это тоже называется «компилятор Си генерирует проблемы»?

Мне так, для протокола.

intelfx ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.