我应该在我的单元文件中放入什么以确保我的服务在通过 ntp 设置时间后启动?
我有一个带有小型 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
Run Code Online (Sandbox Code Playgroud)
我应该如何修改我的单元文件?
我的系统版本是:
#> systemctl --version
systemd 232
Run Code Online (Sandbox Code Playgroud)
由于raspbian似乎使用 timesyncd ,我会调整您的单元文件以取决于该目标:
[Unit]
Description=desc
Requires=mysql.service
After=syslog.target mysql.service systemd-timesyncd.service
# ^^^ the addition ^^^
[Service]
Type=simple
...
Run Code Online (Sandbox Code Playgroud)
如果您已禁用 timesyncd 以支持 ntp,则替换 NTP 服务名称。
似乎较新的(239+)systemd 版本支持时间同步服务,这听起来更有用,因为它会等到时钟同步,而不是只在同步过程开始时。
如果短启动时间并不重要,并且您发现您的服务在时间同步之前仍在启动,您可能会发现使用以下命令在服务启动中添加短暂的延迟就足够了ExecStartPre:
...
ExecStartPre=sleep 30
...
Run Code Online (Sandbox Code Playgroud)
根据实验以及 Raspberry Pi 同步时间所需的可靠时间来调整睡眠时间。
| 归档时间: |
|
| 查看次数: |
951 次 |
| 最近记录: |