我在 Raspberry Pi 上运行 Nukkit Minecraft 服务器(我知道它没有好的硬件,但我正在尝试),并在谷歌上搜索为 Linux 制作 bash 文件的不同方法。我已经制作了文件 startNukkit.whateverextension。我已经到了这个地步:
!#/bin/bash/
gnome-terminal -e "java -jar home/pi/Desktop/Nukkit/nukkit.jar; exec bash\""
但我想解决很多事情。首先,当我双击 bash 文件时,它会提示我:“执行”、“在终端中执行”、“打开”和“取消”。相反,我想在没有此提示的情况下立即运行它。
而且因为这是一个 Minecraft 服务器,所以我只能在终端中看到服务器的结果,比如谁连接到了我的服务器。但是,如果我单击“在终端中执行”,终端将显示然后关闭。我认为这可以通过“exec bash\”来解决,如所解释的这里。保持终端窗口打开。
最后,我想让它在启动时执行,类似于 Windows 中的启动文件夹,您放置在该文件夹中的任何文件都将在启动时执行。
答案1
作为一项systemd
服务
(你没有提到特定的 GNU/Linux 发行版,我认为大多数常见的发行版都有 systemd 可用)
如果您将 .jar 文件移动到某个可访问的位置,那么/opt
您可以在启动后以其他低权限用户systemd
身份运行服务器。nobody
除了可能无需访问主目录等即可运行之外,您还可以配置 systemd 在发生故障后重新启动服务以及执行许多其他操作。
看man systemd.service
,man systemd.exec
,man systemd.unit
,ETC。
nukkit.service
[Unit]
Description=Nukkit Server
After=syslog.target
After=network.target
[Service]
Type=simple
User=nobody
Group=nobody
ExecStart=java -jar /opt/Nukkit/nukkit.jar
[Install]
WantedBy=multi-user.target
观察输出
您拥有/etc/systemd/system/nukkit.service
和拥有的地方:
systemctl enable nukkit
systemctl start nukkit
然后journalctl -f -u nukkit
应该遵循来自 systemd nit nukkitf
的最新日志消息。u
不过,您的系统可能正在使用系统日志或其他一些设施;在这种情况下,您可以配置日志记录到特定文件,ETC。