Opendkim не запускается: не удается открыть файл PID?
Это жалоба, которую я получаю от systemd:
"opendkim.service: Can't open PID file /var/run/opendkim/opendkim.pid"
Как видно здесь:
systemctl status opendkim.service
выдает это:
● opendkim.service - OpenDKIM DomainKeys Identified Mail (DKIM) Milter
Loaded: loaded (/lib/systemd/system/opendkim.service; enabled; vendor preset: enabled)
Active: deactivating (stop-sigterm) (Result: timeout)
Docs: 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
Process: 8217 ExecStart=/usr/sbin/opendkim -x /etc/opendkim.conf (code=exited, status=0/SUCCESS)
Tasks: 6 (limit: 2361)
CGroup: /system.slice/opendkim.service
└─8226 /usr/sbin/opendkim -x /etc/opendkim.conf
Feb 11 04:56:48 hacksaw.org systemd[1]: Starting OpenDKIM DomainKeys Identified Mail (DKIM) Milter...
Feb 11 04:56:48 hacksaw.org systemd[1]: opendkim.service: Can't open PID file /var/run/opendkim/opendkim.pid (yet?) after start: No such file or directory
Feb 11 04:56:48 hacksaw.org opendkim[8226]: OpenDKIM Filter v2.11.0 starting (args: -x /etc/opendkim.conf)
Feb 11 04:58:18 hacksaw.org systemd[1]: opendkim.service: Start operation timed out. Terminating.
Если я запускаю демон вручную, он уходит. Это похоже на systemd.
Другие данные:
#ls -ld /var/run/opendkim/
drwxr-xr-x 2 opendkim opendkim 40 Feb 11 04:25 /var/run/opendkim/
Единственная строка в opendkim.conf:
UserID opendkim:opendkim
Файл службы opendkim по умолчанию из /lib/systemd/service:
[Unit]
Description=OpenDKIM 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
[Service]
Type=forking
PIDFile=/var/run/opendkim/opendkim.pid
UMask=0007
ExecStart=/usr/sbin/opendkim -x /etc/opendkim.conf
Restart=on-failure
ExecReload=/bin/kill -USR1 $MAINPID
[Install]
WantedBy=multi-user.target
3 ответа
Поскольку этот демон работает один, systemd не нужно ничего особенного для управления им. Важно отметить, что наличие директивы "PIDFile" говорит о том, что это более сложный сервис, и он самостоятельно помещает PID в PIDFile.
Решение состоит в том, чтобы удалить строку PIDFile. Теперь systemd справляется с этим просто отлично.
Я исправил это, указав PidFile
в /etc/opendkim.conf
файл:
PidFile /var/run/opendkim/opendkim.pid
Я думаю, что лучше решить это здесь, чем модифицировать скрипт systemd. Кроме того, systemd рекомендует PIDFile
вариант, если Type
опция установлена в forking
, который, кажется, в этом сервисе.
это PidFile
настройка присутствовала по умолчанию /etc/opendkim.conf
файл. Тем не менее, я заменил его, пока следовал руководству по настройке OpenDKIM. Так вот, где это пошло не так для меня.
В моем случае это было связано с тем, что /var/run
была символической ссылкой на /run
, После изменения PIDFile
путь от /var/run/opendkim/opendkim.pid
в /run/opendkim/opendkim.pid
в opendkim.service
проблема ушла.
Редактирование этого файла делает это за меня.
/usr/lib/systemd/system/opendkim.service
изменив PidFile /var/run/opendkim/opendkim.pid на
PidFile /run/opendkim/opendkim.pid
моя платформа - centos 7
Я исправил эту проблему, отредактировав файл systemctl следующим образом:
nano /etc/systemd/system/multi-user.target.wants/opendkim.service
[Service]
PIDFile=/var/run/opendkim/opendkim.pid
ExecStartPost=/bin/sh -c 'chown opendkim:opendkim /var/run/opendkim/opendkim.pid'
Он установит правильное разрешение для файла opendkim.pid перед запуском службы. Это причина, по которой opendkim сказал: "Нет такого файла или каталога". Файл недоступен для службы opendkim.
Я решаю эту проблему, просто создав opendkim
папка в /var/run/
и покушал его на опендким: опендким. После этого сервис запустился корректно и создал свой pid-файл.