Ubuntu Server cron не работает

Мой скрипт, который должен запускаться только при включенном сервере, работает некорректно при запуске 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
 }

Мне интересно, кто-нибудь знает, почему он не останавливает резервное копирование, если сервер остановлен?

1
задан 13.05.2020, 04:30

1 ответ

На что crontab файл похож, который, как предполагается, запускает тот сценарий? И каковы полномочия/владелец сценария?

На эта ссылка я нашел:

  1. то, Когда задание крона выполняется от пользователей crontab это, выполняется как тот пользователь. Это однако не получает файлов в корневом каталоге пользователя как их .cshrc или .bashrc или любого другого файла. При необходимости в кроне для определения источника (чтение) какого-либо файла, что для сценария будете нужны Вы, должен сделать это от крона сценария, звонит. Устанавливание путей, определение источника файлов, установка переменных среды, и т.д.
  2. , Если пользователи считают, имеют crontab, но никакая применимая оболочка в/etc/passwd тогда cronjob не будет работать. Необходимо будет сделать отчет оболочка для crontab для выполнения.
  3. , Если Ваши cronjobs не осуществляют проверку, если крон deamon работает. Тогда не забудьте проверять/etc/cron.allow и/etc/cron.deny файлы. Если они существуют тогда пользователь, Вы хотите быть в состоянии работать, задания должны быть в/etc/cron.allow. Вы также могли бы хотеть проверить, существует ли/etc/security/access.conf файл. Вы, возможно, должны были бы добавить своего пользователя там.
  4. Crontab не анализируется для экологических замен. Вы не можете использовать вещи как $PATH, $HOME или ~/sbin. Можно установить вещи как MAILTO = или СОЕДИНИТЬ КАНАЛОМ = и другие переменные среды использование оболочки/bin/sh.

Так, я запустил бы путем редактирования самого 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.

, Который должен починить вещи.

0
ответ дан 13.05.2020, 04:31
  • 1
    @popcorn9499: Попытайтесь развернуть тильду (~) до/home/popcorn9499. – Bhupesh lad 13.05.2020, 04:31
  • 2
    это хранится в моем/home/popcorn9499/Scripts/и что является определением задания крона, если это не похоже на этот */30 * * * * ~/Scripts/minecraft.sh резервное копирование, и это начало с crontab-e – radioactive 13.05.2020, 04:31
  • 3
    @popcorn9499: Любовь, чтобы знать, получили ли Вы его работающий, как описано выше. – sn99 13.05.2020, 04:32
  • 4
    полномочия все установлены до всех, кого я думаю, и все установлено правильно, насколько я знаю, вызывают его работу просто не остановка его если Java не на – Amadou Kone 13.05.2020, 04:32
  • 5
    При выполнении сценария вручную, можно выполнять его с различными полномочиями чем тогда, когда крон выполняет его. Это запускается от /etc/crontab или crontab -e? Где сценарий хранится и каковы точные полномочия, на что похоже cronjob определение? – Alexander91 13.05.2020, 04:32

Теги

Похожие вопросы