自动启动我的世界服务器

自动启动我的世界服务器

您好,如何让这个 sh 脚本在启动后运行?我试过了,但没有用。

/etc/systemd/system/my-startup.service

[Unit]
Description=Start Minecraft
After=network.target

[Service]
Type=simple
ExecStart=/home/dre/minecraft/start.sh
TimeoutStartSec=0

[Install]
WantedBy=default.target

/home/dre/minecraft/start.sh

#!/bin/bash
screen -d -m java -Xmx3990M -Xms3990M -jar server.jar nogui

systemctl status my-startup.sh

● my-startup.service - Start Minecraft
     Loaded: loaded (/etc/systemd/system/my-startup.service; enabled; vendor preset: enabled)
     Active: inactive (dead) since Mon 2021-01-11 00:50:09 UTC; 10min ago
   Main PID: 625 (code=exited, status=0/SUCCESS)

Jan 11 00:50:09 optiplex systemd[1]: Started Start Minecraft.
Jan 11 00:50:09 optiplex systemd[1]: my-startup.service: Succeeded.

但什么也没有屏幕-ls并且服务器尚未开启。

答案1

您的 .service 文件有问题。

  1. 您以 root 身份运行脚本。这是个坏主意。您应该以非 root 用户身份运行,以防您的服务器受到威胁。User=<username>向该[Service]部分添加一行。

  2. 使用 .service 文件screen直接使用该ExecStart=行进行触发。这样,您就可以按照其预期的方式使用 systemd 作为启动、停止、重新启动和监控 Minecraft 服务器的工具。

这是我自己的 Minecraft 服务器的一个示例……

[Service]
RemainAfterExit=yes
WorkingDirectory=/home/minecraft
User=minecraft
# Start Screen, Java, and Minecraft
ExecStart=screen -s mc -d -m java -server -Xms512M -Xmx1024M -jar server.jar nogui
# Tell Minecraft to gracefully stop.
# Ending Minecraft will terminate Java
# systemd will kill Screen after the 10-second delay. No explicit kill for Screen needed
ExecStop=screen -p 0 -S mc -X eval 'stuff "say SERVER SHUTTING DOWN. Saving map..."\015'
ExecStop=screen -p 0 -S mc -X eval 'stuff "save-all"\015'
ExecStop=screen -p 0 -S mc -X eval 'stuff "stop"\015'
ExecStop=sleep 10

相关内容