在启动时执行 .jar 文件

在启动时执行 .jar 文件

我在 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.serviceman systemd.execman systemd.unitETC。


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

相关内容