![ntp.service 无法在启动时启动](https://linux22.com/image/895817/ntp.service%20%E6%97%A0%E6%B3%95%E5%9C%A8%E5%90%AF%E5%8A%A8%E6%97%B6%E5%90%AF%E5%8A%A8.png)
我正在将系统从 14.04 升级到 16.04,遇到了ntp.service
无法在启动时启动的问题。
$ sudo systemctl status ntp.service
● ntp.service - LSB: Start NTP daemon
Loaded: loaded (/etc/init.d/ntp; bad; vendor preset: enabled)
Active: active (exited) since Mon 2017-09-11 12:29:11 UTC; 26min ago
Docs: man:systemd-sysv-generator(8)
Tasks: 0
Memory: 0B
CPU: 0
Sep 11 12:29:11 ip-10-1-1-20 systemd[1]: Starting LSB: Start NTP daemon...
Sep 11 12:29:11 ip-10-1-1-20 ntp[1254]: * Starting NTP server ntpd
Sep 11 12:29:11 ip-10-1-1-20 ntp[1254]: ...done.
Sep 11 12:29:11 ip-10-1-1-20 systemd[1]: Started LSB: Start NTP daemon.
Sep 11 12:29:11 ip-10-1-1-20 ntpd[1372]: proto: precision = 0.222 usec (-22)
如果我没记错的话,该文件的内容ntp.service
是由服务生成的sysv
。其内容为
$ sudo systemctl cat ntp.service
# /run/systemd/generator.late/ntp.service
# Automatically generated by systemd-sysv-generator
[Unit]
Documentation=man:systemd-sysv-generator(8)
SourcePath=/etc/init.d/ntp
Description=LSB: Start NTP daemon
Before=multi-user.target
Before=multi-user.target
Before=multi-user.target
Before=graphical.target
After=network-online.target
After=remote-fs.target
After=systemd-journald-dev-log.socket
Wants=network-online.target
[Service]
Type=forking
Restart=no
TimeoutSec=5min
IgnoreSIGPIPE=no
KillMode=process
GuessMainPID=no
RemainAfterExit=yes
ExecStart=/etc/init.d/ntp start
ExecStop=/etc/init.d/ntp stop
相关错误文件:
- https://bugs.launchpad.net/ubuntu/+source/ntp/+bug/1577596
- https://bugs.launchpad.net/ubuntu/+source/ntp/+bug/1593907
- https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=802040
我在 IRC 中询问,他们说从 init 服务到 systemd 服务文件的系统生成文件有时会有错误,并要求我从 ntp.service 的上游版本之一中替换它。
目前,我能想到的解决办法是手动启动和停止 ntpd 服务
$ sudo systemctl stop ntp.service
$ sudo systemctl start ntp.service
但这违背了在启动时自动启动 ntp.service 的目的
将不胜感激任何帮助。
答案1
从 Ubuntu 16.04 开始,NTTP 协议服务已被名为的本机 systemd 服务取代systemd-timesyncd(或者首选时间同步) 并且它默认运行。
如果你只想要一个 NTP 同步时钟,请离开ntp 服务已禁用并用于timedatectl status
检查状态:
lar@rv-server:~$ timedatectl status
Local time: Fri 2018-11-09 14:16:52 PST
Universal time: Fri 2018-11-09 22:16:52 UTC
RTC time: n/a
Time zone: America/Los_Angeles (PST, -0800)
Network time on: yes
NTP synchronized: yes
RTC in local TZ: no
如果NTP未同步,请使用sudo timedatectl set-ntp on
将其打开。
对于 NTP 服务器(不仅仅是客户端),您需要代替timedatectl和ntpd或安装慢性的(受到推崇的)。
答案2
这里记录了多种修复此问题的方法https://bugs.launchpad.net/ubuntu/+source/ntp/+bug/1577596
sed -i -- 's/NTPOPTIONS=""/NTPOPTIONS="-u"/g' /etc/default/ntpdate
替换内容
/etc/network/if-up.d/ntpdate
为https://launchpadlibrarian.net/295277086/ntpdate_HH
完成上述任何一项操作后,
$ systemctl stop ntp.service
$ systemctl start ntp.service
ntp.service
现在应该起来了