使用 systemd 腳本中的 chrony 更新時間(某些應用程式重新啟動)?

使用 systemd 腳本中的 chrony 更新時間(某些應用程式重新啟動)?

如果我的主機服務商將我的虛擬機器移至另一台主機,則本機時間會漂移(最多 3 秒)。 Chrony 能夠解決這個問題,但需要很長時間才能意識到。在此期間,我的資料庫節點(CockroachDB)由於時間差(允許最大0.5秒)而關閉。然後,我的 systemd 腳本重新啟動它。

現在我希望 systemd 腳本首先確定更新時間。所以我將其添加到我的 /etc/systemd/system/cockroach.service腳本:

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

但這給了我錯誤 501(缺少授權),因為我的 systemd 腳本以用戶“cockroach”運行,並且 chrony 守護程序僅接受來自用戶 root 或 chrony (UDP) 的消息。

現在我被困住了。有沒有辦法讓 chrony 也從 cockroach 用戶那裡獲取消息?或任何其他選項使其現在同步時間(chrony 正在運行,因此無法手動更新)。

答案1

解決方案是使用“+”語法執行開始前範圍。下面執行的是慢性具有 root 權限 (+) 的可執行文件,並忽略此呼叫可能發生的任何錯誤 (-):

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

這對我來說效果很好。

您可以在 systemd 文件中找到這些前綴的文檔執行啟動這裡的參數:https://www.freedesktop.org/software/systemd/man/systemd.service.html#ExecStart=

相關內容