Мой скрипт, который должен запускаться только при включенном сервере, работает некорректно при запуске 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() {
, проводят ту строку и финал }
и делают его простым сценарием удара. Можно тогда освободить backup
, аргумент и cronjob становятся: */30 * * * * /home/popcorn9499/Scripts/minecraft.sh
(действительно необходимо делать резервное копирование каждые 30 минут?)
Затем, удостоверяются, что у Вас есть rwx разрешение для scriptfile: chmod u+rwx ~/Scripts/minecraft.sh
Наконец, рассмотрите переименование Вашего каталога ~/Scripts
к ~/bin
, как это уже находится в Вашем $PATH.
, Который должен починить вещи.
/etc/crontab
илиcrontab -e
? Где сценарий хранится и каковы точные полномочия, на что похоже cronjob определение? – Alexander91 13.05.2020, 04:32