如何让 systemctl 跟踪脚本生成的进程?

如何让 systemctl 跟踪脚本生成的进程?

作为我以前的一篇文章,我正在使用 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_run获取这些参数并设置一些环境变量,然后运行实际的服务器二进制文件(以及在崩溃后重新启动服务器二进制文件、更新服务器等的一些逻辑)。

srcds_run有很多逻辑,所以我不想绕过它直接运行二进制文件(除非对 srcds 服务器更有经验的人认为这是一个更好的选择),我宁愿只显示systemctl服务器journalctl二进制文件的日志。我尝试使用Type=forking,但运行时systemctl restart gmod会挂起,所以我不确定这是否是正确的选择。有人知道如何获取正确的日志systemctl/更好的运行服务器的方法吗?

相关内容