使用 systemd 单元模板文件

使用 systemd 单元模板文件

我在后台运行一个自定义服务,用于自定义 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)手册页。

相关内容