ntp를 통해 시간을 설정한 후 서비스가 시작되도록 하려면 유닛 파일에 무엇을 넣어야 합니까?
SQL 데이터베이스에 데이터를 기록하는 작은 Python 스크립트가 포함된 Raspberry Pi가 있습니다. 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
답변1
것 같으니까Raspbian은 timesyncd를 사용합니다, 해당 대상을 기반으로 유닛 파일을 조정하겠습니다.
[Unit]
Description=desc
Requires=mysql.service
After=syslog.target mysql.service systemd-timesyncd.service
# ^^^ the addition ^^^
[Service]
Type=simple
...
ntp를 지원하기 위해 timesyncd를 비활성화한 경우 NTP 서비스 이름을 바꾸십시오.
그것최신(239+) 시스템 버전이 시간 동기화 서비스를 지원하는 것 같습니다.이는 동기화 프로세스를 시작하는 대신 시계가 동기화될 때까지 기다리기 때문에 더 유용할 것 같습니다.
짧은 시작 시간이 중요하지 않고 시간이 동기화될 때까지 서비스가 계속 시작되는 경우 다음 명령을 사용하여 서비스 시작에 짧은 지연을 추가하는 것으로 충분할 수 있습니다 ExecStartPre
.
...
ExecStartPre=sleep 30
...
실험에 따라 절전 시간과 Raspberry Pi의 시간을 안정적으로 동기화하는 데 걸리는 시간을 조정하세요.