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=-+/usr/bin/chronyc -a makestep

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

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

관련 정보