设置服务的两个实例以在 Linux 上运行

设置服务的两个实例以在 Linux 上运行

本质上,我试图了解如何做的是修改一些我发现的脚本,以便在我闲置的 Linux Mint 机器上同时运行一个服务的两个实例。

设置服务的第一个实例我使用了此处的说明:

https://www.linode.com/docs/game-servers/host-a-terraria-server-on-your-linode

现在,我尝试按照这些说明进行更改,以使用相同的脚本创建第二个服务。

该服务不会启动并保持这种状态,尽管它在整个计算机重新启动之前已启动。我已将第二个 .service 文件放在与第一个 '/etc/systemd/system/' 相同的位置。服务文件的内容如下。

[Unit]
Description=server daemon for whim

[Service]
Type=forking
User=whim
KillMode=none
ExecStart=/usr/bin/screen -dmS whim /bin/bash -c "/opt/terraria/TerrariaServer.bin.x86_64 -config /opt/terraria/whimserverconfig.txt"
ExecStop=/usr/local/bin/whimd exit

[Install]
WantedBy=multi-user.target

现在我重新启动机器的首要原因是另一个错误。在此处的说明过程中,我设置了一个用于基本管理的脚本。它放置在与第一个相同的位置。 '/usr/local/bin/' 文件内容如下。

#!/usr/bin/env bash

send="`printf \"$*\r\"`"
attach='script /dev/null -qc "screen -r whim"'
inject="screen -S whim-X stuff $send"

if [ "$1" = "attach" ] ; then cmd="$attach" ; else cmd="$inject" ; fi

if [ "`stat -c '%u' /var/run/screen/S-whim/`" = "$UID" ]
then
    $cmd
else
    su - whim-c "$cmd"
fi

在服务停止工作之前,问题是我永远无法连接到新的whim.service 的屏幕。

所以我的问题是这样的:

我是否在修改这两个文件之一时出错了,或者我是否遗漏了一些更基本的东西?

答案1

terraria /bin/bash更改名称时删除了以下空格,如下whim/bin/bash所示。这使得您的服务单元和脚本文件的多个部分出现错误。

整个设计看起来相当不稳定,screen作为一个系统范围的服务(以及它所需要的服务)运行,以便运行一个要求它作为服务交互的程序,但这不是你做的。

相关内容