Debian
掛鉤到 Debian 軟體包的安裝
在安裝帶有守護程序的軟體包時,它們通常會在 Debian 上安裝/升級期間重新啟動該服務。
我有一個守護程序,它有一些選項只能在執行時設置,而不是配置。如果 Debian 軟體包在我的控制之下,我會更改 init-script,使其包含一個設置這些選項的函式,並在(重新)啟動服務後呼叫它。
由於這個守護程序來自遠端儲存庫並且我不想建構自己的 deb,因此我需要一個不會更改包中包含的任何文件的解決方案(以避免通過 dpkg/apt 更新包時出現問題)。
那麼,是否有可能在以乾淨的方式重新啟動該服務後掛鉤該程序以執行某些命令或腳本?
我知道這個問題很老,但我在搜尋“debian package hook”時發現它是錯誤的關鍵字列表。
dpkg 的觸發器實際上可能有一種方法:
dpkg 觸發器是一種工具,它允許記錄和匯總由一個包引起但另一個包感興趣的事件,然後由感興趣的包處理。
我知道它存在,但從未使用過它。
如果幾分鐘的延遲是可以接受的,那麼最簡單的做法是創建一個 cronjob,它執行一個腳本來檢查守護程序是否仍在執行,它是否仍然具有相同的 PID,以及 PID 是否已更改它會執行一些命令。
您需要將 PID 保存在某個地方(一個純文字文件就足夠了),以便腳本的下一次迭代將知道舊的 PID。如果 PID 更改,則應保存新的 PID。
工具pgrep有助於按名稱查找程序。
監控工具 monit https://packages.debian.org/jessie/monit實際上也可以做到這一點。除其他外,它允許您監視守護程序或服務是否仍在執行並採取相應措施。它還會注意到 PID 的變化。當此類事件發生時,您可以自定義其行為。