如何解决Raspberry pi:关联“screen”和 Systemd 以在 pi 启动时自动启动 minecraft 服务器
我是树莓派编程的新手,我希望能够在树莓派启动时启动我的世界服务器。
为此,我已经找到了 Systemd 文件和屏幕命令。
我设法让它们单独工作,但不能一起工作,这就是我在那里寻求帮助的原因。
首先,我使用带有 raspbian v10 的 Raspberry pi 4 4Go,并使用 java 8 forge 1.12.2。 我做了一个 .sh 文件来更轻松地启动服务器:
#!/bin/bash
screen -S mcserver -dm java -Xms1024M -Xmx2048M -jar /home/pi/MinecraftServer/server/forge-1.12.2-14.23.5.2854.jar nogui
当我运行文件时,服务器在我想要的套接字中完美启动。
其次,我有一个 systemd 文件(auto-run-server.service):
[Unit]
Description=Auto run mc server
[Service]
ExecStart=/home/pi/MinecraftServer/server/minecraft.sh
[Install]
WantedBy=multi-user.target
但是当我执行服务时,什么也没发生,服务的状态显示成功,但屏幕(screen -list)中没有任何内容
当我将 ExecStart
值替换为
ExecStart=java -Xms1024M -Xmx2048M -jar /home/pi/MinecraftServer/server/forge-1.12.2-14.23.5.2854.jar nogui
服务器启动,但问题是我想访问终端以在我的世界服务器中运行命令,但我没有找到从那里访问的解决方案。 (这就是我想创建一个“屏幕”的原因)
我对你的答案完全开放,即使他们不使用“屏幕”,只要我可以访问服务器终端。
提前致谢。
解决方法
我正在使用以下 systemd
单元进行测试:
[Service]
ExecStart=/tmp/screentest.sh
还有这个 screentest.sh
shell 脚本:
#!/bin/sh
screen -S mcserver -dm sh -c 'while :; do date; sleep 5; done'
如果我启动服务 (systemctl start screentest
) 然后运行 systemctl status screentest
,我看到:
● screentest.service
Loaded: loaded (/etc/systemd/system/screentest.service; static; vendor preset: enabled)
Active: inactive (dead)
这里的问题是 screen
命令在与 -d
一起运行时会立即退出,因此 systemd
认为该命令已完成并通过删除服务产生的任何其他进程来清理所有内容.
我们可以通过将服务类型设置为 systemd
来告诉 forking
该服务产生了一个孩子并退出:
[Service]
Type=forking
ExecStart=/tmp/screentest.sh
进行此更改后,在启动服务后我们会看到:
● screentest.service
Loaded: loaded (/etc/systemd/system/screentest.service; static; vendor preset: enabled)
Active: active (running) since Sun 2021-01-10 09:58:11 EST; 4s ago
Process: 14461 ExecStart=/tmp/screentest.sh (code=exited,status=0/SUCCESS)
Main PID: 14463 (screen)
Tasks: 3 (limit: 4915)
CGroup: /system.slice/screentest.service
├─14463 SCREEN -S mcserver -dm sh -c while :; do date; sleep 5; done
├─14464 sh -c while :; do date; sleep 5; done
└─14466 sleep 5
screen -list
显示:
root@raspberrypi:/etc/systemd/system# screen -list
There is a screen on:
14612.mcserver (01/10/2021 10:01:55 AM) (Detached)
1 Socket in /run/screen/S-root.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。