我在为我的 mc 服务器设置自动重启时遇到了麻烦。
我制作的 .sh 文件每次执行时都能完美运行,但当使用 crontab 时,它似乎什么都不做(除了一次),我试过重新启动并重新安装它...可以肯定地说,我已经不熟悉它了,因为我对这一切完全不熟悉。
crontab 行如下
0 20 * * * /VHServer/reboot.sh
自从我编写了那行代码之后,什么都没有改变,它第一次起作用了,但之后就再也没有起作用了。
.sh 文件看起来像这样,它可以通过手动命令完美运行。
echo "Server reboot STARTED"
# Letting people know that the server is going to restart
tmux send-keys -t VHS "/say §c Server restarting in §r§6§l30 minutes. §r§cPleas>
# Wait for 1770 seconds (25 minutes)
sleep 1500s
# Send messages to the server indicating the restart countdown
tmux send-keys -t VHS "/say §c Server is restarting in §r§6§l5 minutes! §r§cThe>
sleep 270s
tmux send-keys -t VHS "/say §c Server is restarting in §r§6§l30 seconds! §r§cTh>
sleep 20s
tmux send-keys -t VHS "/say §c Server is restarting in §r§6§l10 seconds!" Enter
sleep 5s
tmux send-keys -t VHS "/say §c Server is restarting in §r§6§l5 seconds!" Enter
sleep 1s
tmux send-keys -t VHS "/say §c Server is restarting in §r§6§l4 seconds!" Enter
sleep 1s
tmux send-keys -t VHS "/say §c Server is restarting in §r§6§l3 seconds!" Enter
sleep 1s
tmux send-keys -t VHS "/say §c Server is restarting in §r§6§l2 seconds!" Enter
sleep 1s
tmux send-keys -t VHS "/say §c Server is restarting in §r§6§l1 second!" Enter
sleep 1s
# Stop the Minecraft server
tmux send-keys -t VHS "/stop" Enter
sleep 60s
# Detatch from the tmux session
tmux send-keys VHS C-b d
sleep 15s
# Check if the session exists and kills session
if tmux has-session -t VHS> /dev/null; then
echo "Killing tmux session 'VHS'."
tmux kill-session -t VHS
else
echo "Tmux session 'VHS' does not exist."
fi
sleep 15s
# Check if a session with the same name already exists
if tmux has-session -t VHS> /dev/null; then
echo "Tmux session 'VHS' already exists. Attaching to it."
tmux attach-session -t VHS
else
echo "Creating new tmux session 'VHS'."
tmux new-session -s VHS
fi
sleep 30s
# Restart the server using the run.sh script
tmux send-keys -t VHS "/home/ubuntu/VHServer/run.sh" Enter
echo "Server Rebooting"
sleep 60s
echo "reboot COMPLETE"
有人建议我使用 sudo 运行 crontab,并在其中的代码行中添加 sudo 或用户名“ubuntu”,我尝试过但没有任何输出。
我跑了:
tail -f /var/log/syslog
并且这只在 crontab 的编辑后才返回,cron 一次都没有执行任何命令。
我希望这些信息足以解决问题,我完全不知所措并且仍在学习这一切,所以我确定我没有理解其中的某些内容。
答案1
你的脚本应该以以下内容开头:
#!/bin/bash
tmux
用绝对路径替换( type -p tmux
)。cron
作业有不同的运行环境、不同的$PATH
、没有的$DISPLAY
等等。阅读man -a crontab
。