使用 systemd 設定簡單服務

使用 systemd 設定簡單服務

我們正在使用 Bamboo 伺服器與正在建立我們的專案的遠端代理持續整合。這些代理程式可以使用簡單的 shell 腳本啟動(效果很好)。但我想我會進一步移動它並使其成為systemd一個單元,這將使代理在啟動後自動啟動,並且允許人們透過systemctl命令啟動/停止它。這就是我嘗試過的

[Unit]
Description=Atlassian Bamboo Agent
After=syslog.target network.target

[Service]
Type=forking
User=shub
Group=shub
ExecStart=/home/shub/bamboo-agent-home/bin/bamboo-agent.sh start
ExecStop=/home/shub/bamboo-agent-home/bin/bamboo-agent.sh stop

[Install]
WantedBy=multi-user.target

比我做過的還要多systemctl daemon-reload。問題是代理在重新啟動後沒有啟動,而且它的行為很奇怪(在某種程度上服務會不時重新啟動或在之後無法正常啟動systemctl start)。那我做錯了什麼?我考慮過更改Type為,simple但我希望代理作為後台服務運行(並且腳本本身在執行後在後台運行代理)。

答案1

你問了多個問題。我將回答這個問題:“為什麼我的自訂 systemd 服務沒有在啟動時啟動?”

答案是因為你還沒有已啟用它。當您運行時systemctl enable my-service-name[Install]單元文件中的區塊將被執行。

在這種情況下,您已指示 systemd 在到達multi-user.target.

運行enable命令將創建一個符號鏈接,/etc/systemd/system/multi-user.target.wants/並且該符號鏈接的存在將實際指示systemd在引導時啟動服務。

我建議將您的“行為怪異”評論變成一個單獨的問題,其中提供了更多詳細信息,也許包含來自 systemd 日誌的有關正在發生的事情的詳細信息。 (檢查journalctl輸出)。

相關內容