Это - жалоба, которую я получаю от 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
Так как этот демон работает один, systemd не нужно ничто специальное для управления им. Значительно, наличие директивы "PIDFile" предполагает, что это - более сложный сервис и поместит PID в PIDFile на своем собственном.
Решение состоит в том, чтобы удалить строку PIDFile. Теперь systemd обрабатывает его очень хорошо.
Редактирование этого файла здесь делает это для меня.
/usr/lib/systemd/system/opendkim.service
путем изменения PidFile/var/run/opendkim/opendkim.pid на
PidFile/run/opendkim/opendkim.pid
моя платформа является песнями 7
Я зафиксировал его путем определения PidFile
в /etc/opendkim.conf
файл:
PidFile /var/run/opendkim/opendkim.pid
Я думаю, что лучше решить его здесь, чем изменение systemd сценария. Кроме того, systemd рекомендует PIDFile
опция, если Type
опция установлена на forking
, который это, кажется, находится в этом сервисе.
Это PidFile
установка присутствовала в значении по умолчанию /etc/opendkim.conf
файл. Однако я заменил тот файл, в то время как я следовал учебному руководству для конфигурирования OpenDKIM. Таким образом, это - то, где это пошло не так, как надо для меня.
Я решаю эту проблему только путем создания opendkim
папка в /var/run/
и chowned это к opendkim:opendkim. После этого сервис, запущенный правильно и созданный его изодромный с предварением файл.
В моем случае был то, вследствие того, что /var/run
была символьная ссылка на /run
. После изменения PIDFile
путь от /var/run/opendkim/opendkim.pid
в /run/opendkim/opendkim.pid
в opendkim.service
, проблема ушла.