我的 crontab 似乎没有执行任何命令

我的 crontab 似乎没有执行任何命令

我在为我的 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

相关内容