
作為後續我之前的帖子之一,我使用 systemd 在 Ubuntu 18.04 上運行 GMod 伺服器。我的 systemd 腳本如下圖所示:
[Unit]
Description=Gmod Server
After=network.target
[Service]
User=rooday # the user I normally run run_gmod.sh with
ExecStart=/datadrive/srcds/run_gmod.sh
Restart=Always
[Install]
WantedBy=multi-user.target
它運行我的伺服器正常,但問題是systemctl status
並且journalctl
沒有顯示伺服器二進位檔案的實際日誌。
這是因為run_gmod.sh
運行srcds_run
腳本(srcds安裝)以及我的伺服器的參數(哪個遊戲模式,哪個地圖等)。srcds_run
取得這些參數並設定一些環境變量,然後運行實際的伺服器二進位(以及一些在崩潰後重新啟動伺服器二進位、更新伺服器等的邏輯)。
srcds_run
有很多邏輯,所以我不想繞過它並直接運行二進位(除非對 srcds 伺服器更有經驗的人認為這是一個更好的選擇),我寧願只擁有systemctl
並journalctl
顯示伺服器二進位檔案的日誌。我嘗試使用Type=forking
,但運行systemctl restart gmod
會掛起,所以我不確定這是否是正確的選擇。有誰知道如何取得正確的日誌systemctl
/更好的方式來運行伺服器?