当由cron运行时,本应仅在服务器打开时运行的脚本无法正常工作。如果我手动运行它,它将起作用。
backup() {
if pidof java &> /dev/null; then
screen -p 0 -S minecraft -X eval "stuff \"say server backing up\"\015"
# We need to first put the server in readonly mode to reduce the chance of backing up half of a chunk.
screen -p 0 -S minecraft -X eval "stuff \"save-off\"\015"
screen -p 0 -S minecraft -X eval "stuff \"save-all\"\015"
sleep 10
cd ~/Minecraft
mkdir backup
tar cvfpz backup/Y-$(date +%Y_M-%m_D-%d_T-%H_%M)-world.backup.tar.gz world/
screen -p 0 -S minecraft -X eval "stuff \"save-on\"\015"
screen -p 0 -S minecraft -X eval "stuff \"say server done backing up\"\015"
# Delete old backups
echo deleting old backups
find . -name '*-world.backup*' -mtime +5 -delete
else
echo Minecraft Server not on
fi
}
我想知道是否有人知道服务器停止后为什么不停止备份?
启动该脚本的crontab文件应该是什么样的?脚本的权限/所有者是什么?
在此链接上,我发现:
因此,我将从编辑cronjob本身并将〜更改为/ home / popcorn9499开始。然后对脚本执行相同的操作。同样在脚本中添加#! /bin/bash
为第一行。
如果脚本中的所有内容只是该函数,backup() {
则将该行和最后一行删除,}
并使其成为普通的bash脚本。然后,您可以松开该backup
参数,然后cronjob变为:(*/30 * * * * /home/popcorn9499/Scripts/minecraft.sh
您真的需要每30分钟进行一次备份吗?)
接下来,确保您对脚本文件具有rwx权限: chmod u+rwx ~/Scripts/minecraft.sh
最后,考虑重新命名的目录~/Scripts
,以~/bin
作为已经在你的$ PATH。
那应该解决问题。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句