我在后台运行一个自定义服务,用于自定义 gmod 游戏服务。我编写了自己的 gmod.service 文件,因此现在我可以使用服务gmod启动。您可以在下面看到。是否可以从终端或 bash 脚本向该服务输入命令,以便我可以更改地图?提前致谢
[Unit]
Description=Gmod server
After=network.target
[Service]
Type=simple
ExecStart=/bin/bash /home/server/Documents/Servers/Gmod/run_gmod.sh
[Install]
WantedBy=multi-user.target
答案1
使用 systemd 单元模板文件
这是使用 systemd 单元模板的一个很好的例子。可以使用参数调用 systemd 服务,并在服务定义中使用该参数,例如将其交给运行的程序。以下是您的案例示例:
安装您的设备
/etc/systemd/system/[email protected]
将文件更改为如下所示:
[Unit]
Description=Gmod server (map: %I)
After=network.target
[Service]
Type=simple
ExecStart=/bin/bash /home/server/Documents/Servers/Gmod/run_gmod.sh %i
[Install]
WantedBy=multi-user.target
DefaultInstance=myDefaultMap
systemctl daemon-reload
(此时您可能需要运行以使 systemd 读取更改的文件)。此后,您将能够使用如下参数启动 gmod:
systemctl start [email protected]
Systemd 将使用模板文件并I%
用参数替换,并%i
用 shell 引用的参数替换,然后将其作为名为的服务实例启动[email protected]
。您可以通过运行来验证这一点
systemctl status gmod@myMapName
您还可以让它在启动时自动启动默认实例,如下所示:
systemctl enable gmod@
这样,您甚至可以启动多个 gmod 实例(如果程序允许的话)。有关该主题的进一步阅读,请查看systemd.unit(5)手册页。