使用 systemctl 时,named 不会启动

使用 systemctl 时,named 不会启动

我无法在 Fedora 18 Raspberry Pi spin 上开始使用 systemd。它开始,然后几分钟后出现超时并且失败。如果我手动运行named.service中的命令,named就会正常启动。我不知道 systemctl 正在寻找的超时是什么或者它在哪里被调用。我已经阅读了 、 systemd 和其他人的手册页systemctl,我将继续研究这一点,但如果有人有任何指示,那就太好了。

systemctl status named.service输出:

named.service - Berkeley Internet Name Domain (DNS)
          Loaded: loaded (/usr/lib/systemd/system/named.service; disabled)
          Active: failed (Result: timeout) since Tue 2013-01-29 14:36:41 EST; 35min ago
         Process: 4189 ExecStart=/usr/sbin/named -u named $OPTIONS (code=exited, status=0/SUCCESS)
         Process: 4186 ExecStartPre=/usr/sbin/named-checkconf -z /etc/named.conf (code=exited, status=0/SUCCESS)
         Process: 4183 ExecStartPre=/usr/libexec/generate-rndc-key.sh (code=exited, status=0/SUCCESS)

Jan 29 14:35:12 raspi.example.com named[4191]: all zones loaded
Jan 29 14:35:12 raspi.example.com systemd[1]: PID file /run/named/named.pid not readable (yet?) after start.
Jan 29 14:35:12 raspi.example.com named[4191]: running
Jan 29 14:36:41 raspi.example.com systemd[1]: named.service operation timed out. Terminating.
Jan 29 14:36:41 raspi.example.com named[4191]: shutting down
Jan 29 14:36:41 raspi.example.com named[4191]: stopping command channel on 127.0.0.1#953
Jan 29 14:36:41 raspi.example.com named[4191]: no longer listening on 127.0.0.1#53
Jan 29 14:36:41 raspi.example.com named[4191]: exiting
Jan 29 14:36:41 raspi.example.com systemd[1]: Failed to start Berkeley Internet Name Domain (DNS).
Jan 29 14:36:41 raspi.example.com systemd[1]: Unit named.service entered failed state  

命名的.service 文件

[Unit]
Description=Berkeley Internet Name Domain (DNS)
Wants=nss-lookup.target
Before=nss-lookup.target
After=network.target

[Service]
Type=forking
EnvironmentFile=-/etc/sysconfig/named
Environment=KRB5_KTNAME=/etc/named.keytab
PIDFile=/run/named/named.pid
ExecStartPre=/usr/libexec/generate-rndc-key.sh
ExecStartPre=/usr/sbin/named-checkconf -z /etc/named.conf
ExecStart=/usr/sbin/named -u named $OPTIONS
ExecReload=/bin/sh -c '/usr/sbin/rndc reload > /dev/null 2>&1 || /bin/kill -HUP $MAINPID'
ExecStop=/bin/sh -c '/usr/sbin/rndc stop > /dev/null 2>&1 || /bin/kill -TERM $MAINPID'
PrivateTmp=true
[Install]
WantedBy=multi-user.target

答案1

回答了。

这是一行:

启动后,PID 文件/run/named/named.pid 不可读(还?)。

(还?)把我扔了。我认为该消息被抛出是因为它试图在被named写出之前读取PID文件,并且由于此后我没有看到错误,所以我认为它最终成功读取了它。我读英语真傻。事实上,named写入pidto /var/run/named/named.pid,它从未被systemctl(或 systemd)读取过。

更改了 PIDFilenamed.service并启动。喜悦。

答案2

systemctl enable named 

之前需要

systemctl start named

答案3

我遇到了同样的问题...启动文件中的唯一错误是:

systemd: Can't open PID file /run/named/named.pid (yet?) after start: No such file or directory

我检查了我的 /var/run 符号链接到 /run 并检查了 /usr/lib/systemd/system/named.service 和 /var/run/named/named.pid 已设置。

我忽略了 /var/named/named.conf 中的“pid-file”指令,并且它被设置为“/var/named/named.pid”。我将其更改为“/var/run/named/named.pid”,现在它正常启动了。

答案4

将其留在这里以供将来参考,named 也有类似的问题,但对我来说,问题是由于可用的内存太少。

通过使用监视来解决这个问题: watch "systemctl restart name" ,一段时间后注意到内存使用量飙升至允许的最大内存,然后服务终止了。

希望这对将来的人有帮助

相关内容