在系统帐户下运行的服务器上执行命令

在系统帐户下运行的服务器上执行命令

我在 Ubuntu 系统上设置了一个 minecraft 服务器。当我从命令行启动服务器时,服务器会监听标准输入并响应各种命令(例如更改游戏模式、难度级别或时间):

在此处输入图片描述

(看这个演示在服务器控制台中输入命令)

但是,我不喜欢锁定我的 root 用户来运行 minecraft,所以今天我设置了一个名为“minecraft”的系统用户:

sudo adduser --system --no-create-home --home /srv/minecraft-server minecraft
sudo addgroup --system minecraft
sudo adduser minecraft minecraft # this adds user "minecraft" the group "minecraft"

我正在使用配置文件以该用户身份启动 minecraft 服务器:

start on runlevel [2345]

console log
chdir /minecraft_server
setuid minecraft
setgid minecraft

respawn
respawn limit 20 5

exec /usr/bin/java -Xms1024M -Xmx1800M -jar minecraft_server.1.8.jar nogui

我想通过标准输入向 minecraft 服务器发送命令,就像我在当前用户下启动它时能够做到的那样。我试过susudo,但第一个似乎被忽略了,第二个产生了“命令未找到”错误。由于 minecraft 是系统用户,我猜交互式登录被禁用了。

在此处输入图片描述

我以前使用过 Linux 系统,但在这方面我不太了解。我该如何将命令传递给 minecraft 用户,然后再传递给 minecraft 服务器?或者在我目前的情况下这是不可能的?

答案1

bodhi.zazen 可能提到“正在屏幕中运行“。我没听说过屏幕但似乎已经解决了这个问题。

首先,我必须删除 minecraft 用户并将其重新创建为普通用户。然后我向 minecraft 用户授予了 minecraft 服务器文件夹的必要权限(使用 chmod)。从新的 minecraft 用户帐户成功启动 minecraft 服务器后,我停止了它并启动了屏幕会话:

在此处输入图片描述

然后重新启动 minecraft 服务器(在屏幕内):

在此处输入图片描述

然后我使用标准屏幕快捷方式从屏幕分离(Ctrl+a然后就好了d)。 Minecraft 服务器继续在后台运行:

在此处输入图片描述

我可以轻松地重新连接以使用以下命令发出命令screen -r

在此处输入图片描述

在此处输入图片描述

我可以在不关闭服务器的情况下结束 SSH 会话,然后从另一台机器重新登录。例如,这里我使用 Android 手机和 JuiceSSH 重新登录:

(请注意,您可以看到我之前发出的命令,因为屏幕从未终止)

相关内容