我应该把什么放在我的单位文件,以确保我的服务启动后,时间是通过ntp设置的?
我有一个raspberry pi,它有一个小型python脚本,可以将数据记录到SQL数据库。由于rpi没有RTC电池,在启动或没有互联网连接时,时间和数据都是错误的。为了避免数据库中的时间戳误导,脚本应该在获得正确的时间之后运行。
到目前为止我的单位档案:
[Unit]
Description=desc
Requires=mysql.service
After=syslog.target mysql.service
[Service]
Type=simple
ExecStart= /usr/bin/python3 /etc/script/script.py
SyslogIdentifier=test
StandardOutput=null
StandardError=syslog
Restart=always
RestartSec=5
User=pi
[Install]
WantedBy=multi-user.target我应该如何修改我的单元文件?
我的系统版本是:
#> systemctl --version
systemd 232发布于 2019-04-20 01:05:07
由于似乎是raspbian使用时间同步,我将调整您的单元文件以依赖于该目标:
[Unit]
Description=desc
Requires=mysql.service
After=syslog.target mysql.service systemd-timesyncd
# ^^^ the addition ^^^
[Service]
Type=simple
...如果禁用了支持ntp的timesyncd,则替换NTP服务名称。
它的239+(显示较新的)系统版本支持时间同步服务.听起来更有用,因为它等待时钟已经同步,而不是仅仅是同步进程的开始。
如果短时间的启动时间并不重要,而且您发现您的服务在同步时间之前仍处于启动状态,那么您可能会发现,使用ExecStartPre对服务的启动添加一个短暂的延迟就足够了:
...
ExecStartPre=sleep 30
...根据实验调整睡眠时间,使你的圆周率能够可靠地同步时间。
https://unix.stackexchange.com/questions/510252
复制相似问题