我在 ubuntu 20.04 上运行 minecraft 服务器。我有一个脚本可以执行它并且运行良好。但是我无法让它使用 cron 运行 @reboot,因为它找不到 jar 文件。根据我的研究,似乎 cron 无法以我的用户身份运行(尽管我没有使用 sudo)。我有什么选择?
这是我的 crontab -e:
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
00 01 * * * /home/eggzaile/minecraft/backup.sh 2>>&1
@reboot sleep 45 && /usr/bin/screen -dmS minecraft sh -c '/home/eggzaile/minecraft/start.sh; exec bash' 2>>&1
重启后,cron启动,当我附加到该窗口时...我看到的只是关于找不到 jar 文件的错误。
这是脚本本身:
#!/bin/sh
while true
do
java -Xms3G -Xmx3G -XX:+UseG1GC -XX:+ParallelRefProcEnabled -XX:MaxGCPauseMillis=200 -XX:+UnlockExperimentalVMOptions -XX:+DisableExplicitGC -XX:+AlwaysPreTouch -XX:G1NewSizePercent=30 -XX:G1MaxNewSizePercent=40 -XX:G1HeapRegionSize=8M -XX:G1ReservePercent=20 -XX:G1HeapWastePercent=5 -XX:G1MixedGCCountTarget=4 -XX:InitiatingHeapOccupancyPercent=15 -XX:G1MixedGCLiveThresholdPercent=90 -XX:G1RSetUpdatingPauseTimePercent=5 -XX:SurvivorRatio=32 -XX:+PerfDisableSharedMem -XX:MaxTenuringThreshold=1 -Dusing.aikars.flags=https://mcflags.emc.gs -Daikars.new.flags=true -jar paper-1.16.5-778.jar nogui
sleep 5
done
我在这里读到,使用脚本的完整路径应该可以工作,但是这会破坏它,我试过了。我使用了(java -jar /path/to/server.jar 和这里的所有参数),但显然我不应该改变顺序。
有小费吗?
答案1
您的 bash 脚本没有切换到包含 jar 文件的目录。这就是您的 bash 脚本不起作用的原因。但是您在手动启动时确实更改了目录。
在调用 java 之前,编辑您的 bash 脚本以更改到正确的目录。