systemd 스크립트에서 chrony를 사용하여 시간을 업데이트합니까(일부 앱 다시 시작)?

systemd 스크립트에서 chrony를 사용하여 시간을 업데이트합니까(일부 앱 다시 시작)?

내 호스팅 업체가 내 VM을 다른 호스트로 옮기면 현지 시간이 달라집니다(최대 3초). Chrony는 이 문제를 해결할 수 있지만 이를 깨닫기까지는 많은 시간이 걸립니다. 이 시간 동안 내 데이터베이스 노드(CockroachDB)는 시간 차이로 인해 종료됩니다(최대 0.5초 허용). 그런 다음 시스템 스크립트가 다시 시작됩니다.

이제 systemd 스크립트가 먼저 시간을 확실히 업데이트하기를 원합니다. 그래서 이것을 내 항목에 추가했습니다. /etc/systemd/system/cockroach.service스크립트:

ExecStartPre=-/usr/bin/chronyc -a makestep

그러나 시스템 스크립트가 "바퀴벌레" 사용자로 실행되고 chrony 데몬이 루트 또는 chrony(UDP) 사용자의 메시지만 허용하기 때문에 오류 501(승인 누락)이 발생합니다.

이제 나는 막혔습니다. chrony가 바퀴벌레 사용자로부터도 메시지를 받을 수 있도록 허용하는 방법이 있나요? 또는 지금 시간을 동기화하는 다른 옵션(chrony가 실행 중이므로 수동 업데이트가 불가능함).

답변1

해결책은 "+" 구문입니다.ExecStartPre매개변수. 다음은만성루트 권한(+)으로 실행 가능하며 이 호출(-)에서 발생할 수 있는 모든 오류를 무시합니다.

ExecStartPre=-+/usr/bin/chronyc -a makestep

이것은 나에게 잘 작동했습니다.

시스템 문서에서 이러한 접두사에 대한 문서를 찾을 수 있습니다.실행 시작여기에 매개변수:https://www.freedesktop.org/software/systemd/man/systemd.service.html#ExecStart=

관련 정보