Centos

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

  • October 26, 2021

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

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

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

但這給了我錯誤 501(缺少授權),因為我的 systemd 腳本以使用者“蟑螂”身份執行,而 chrony 守護程序只接受來自使用者 root 或 chrony (UDP) 的消息。

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

解決方案是ExecStartPre參數的“+”語法。以下以 root 權限 (+) 執行chronyc執行檔,並忽略此呼叫 (-) 可能發生的任何錯誤:

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

這對我來說很好。

您可以在此處的ExecStart參數的 systemd 文件中找到這些前綴的文件: https ://www.freedesktop.org/software/systemd/man/systemd.service.html#ExecStart=

引用自:https://unix.stackexchange.com/questions/674734