Voici la plainte que je reçois de systemd:
"opendkim.service: Can't open PID file /var/run/opendkim/opendkim.pid"
Comme on le voit ici:
systemctl status opendkim.service
met cela:
● 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.
Si je démarre le démon à la main, ça marche. Cela semble concerner systemd.
Autre informations:
#ls -ld /var/run/opendkim/
drwxr-xr-x 2 opendkim opendkim 40 Feb 11 04:25 /var/run/opendkim/
La seule ligne sur opendkim.conf:
UserID opendkim:opendkim
Le fichier de service opendkim par défaut, à partir de/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
Puisque ce démon fonctionne seul, systemd n'a besoin de rien de spécial pour le gérer. Surtout, avoir une directive "PIDFile" suggère que c'est un service plus compliqué, et mettra un PID dans le PIDFile de son propre chef.
La solution consiste à supprimer la ligne PIDFile. Maintenant, systemd le gère très bien.
Je l'ai corrigé en spécifiant le PidFile
dans le /etc/opendkim.conf
fichier:
PidFile /var/run/opendkim/opendkim.pid
Je pense qu'il vaut mieux le résoudre ici que de modifier le script systemd. En outre, systemd recommande l'option PIDFile
si l'option Type
est définie sur forking
, ce qui semble être dans ce service.
Ce paramètre PidFile
était présent dans la valeur par défaut /etc/opendkim.conf
fichier. Cependant, j'ai remplacé ce fichier pendant que je suivais un tutoriel pour configurer OpenDKIM. C'est donc là que ça s'est mal passé pour moi.
Dans mon cas, c'était dû au fait que /var/run
était un lien symbolique vers /run
. Après avoir modifié le chemin PIDFile
de /var/run/opendkim/opendkim.pid
dans /run/opendkim/opendkim.pid
dans opendkim.service
, le problème a disparu.
La modification de ce fichier ici le fait pour moi.
/usr/lib/systemd/system/opendkim.service
en remplaçant PidFile /var/run/opendkim/opendkim.pid par
PidFile /run/opendkim/opendkim.pid
ma plateforme est centos 7
Je résout ce problème en créant simplement le dossier opendkim
dans /var/run/
et l'a réprimandé à opendkim: opendkim. Après cela, le service a démarré correctement et a créé son fichier pid.