通过Crontab启动Tmux会话运行Minecraft服务时提示无法访问Jar文件的问题求助
通过Crontab启动Tmux会话运行Minecraft服务时提示无法访问Jar文件的问题求助
我之前也碰到过一模一样的问题,折腾了好一会儿才搞明白——核心原因就是cron的默认工作目录不是你的Minecraft Jar文件所在的目录,而tmux会话会继承cron的环境和工作路径,所以自然找不到Jar文件啦。
先给你两个最直接的解决办法,选一个就行:
方法一:在脚本开头切换到Jar文件所在的绝对目录
修改你的bash脚本,在所有命令之前先切换到Jar所在的文件夹,比如你的Jar文件放在/home/jezza/minecraft-server里,就加上cd命令:
#!/bin/bash # 先切换到Minecraft服务器Jar所在的绝对路径,记得替换成你自己的目录! cd /home/jezza/minecraft-server # 创建新会话并运行命令 tmux new-session -d -s mc tmux set-option -t mc remain-on-exit on tmux send-keys -t mc "java -Xmx6G -jar fabric-server-mc.1.19.4-loader.0.14.19-launcher.0.11.2.jar nogui" Enter
方法二:直接在java命令里使用Jar文件的绝对路径
不用切换目录,直接把Jar文件的完整路径写在命令里,这样不管工作目录在哪都能找到它:
#!/bin/bash # 创建新会话并运行命令 tmux new-session -d -s mc tmux set-option -t mc remain-on-exit on # 这里把Jar的绝对路径写全,替换成你自己的路径! tmux send-keys -t mc "java -Xmx6G -jar /home/jezza/minecraft-server/fabric-server-mc.1.19.4-loader.0.14.19-launcher.0.11.2.jar nogui" Enter
补充说明
你手动运行脚本没问题,是因为手动执行时你的终端工作目录正好是Jar所在的文件夹,但cron默认的工作目录是你的用户主目录(比如/home/jezza),所以它会去主目录找那个Jar,自然找不到啦。
另外你提到指定java绝对路径没用,这个其实和Jar找不到的问题没关系,不过可以用which java命令确认一下系统里java的真实路径,确保脚本里用的是正确的(比如/usr/bin/java),不过主要问题还是工作路径的事。
修改完脚本后,记得确保脚本还是可执行状态(chmod +x your-script-name.sh),然后重新保存你的cron任务就行啦。
备注:内容来源于stack exchange,提问作者Jezza
相关产品推荐
相关产品推荐

