Невозможно запустить скрипт оболочки в crontab - PullRequest
0 голосов
/ 13 сентября 2018

Я не могу заставить скрипт успешно выполняться из crontab. Когда скрипт выполняется вручную, он работает нормально. При добавлении в crontab выдает ошибки.

Когда скрипт выполняется вручную следующим образом, все работает нормально:

cd /home/admin/git/Repo
./lunchpad2.sh

Сценарий добавляется в crontab следующим образом:

sudo crontab -e
30 13 * * * /home/admin/git/Repo/lunchpad2.sh > /home/admin/git/Repo/outcome.err

lunchpad2.sh имеет 744 установленных разрешения;

Сам скрипт:

    #!/bin/bash -p
    PATH=$PATH:/home/admin/git/Repo

    echo "--> Starting!"

    echo "--> Stopping docker"
    docker-compose down

    echo "--> Switching files"
    mv dc_conf_standby.py dc_conf_aboutready.py 
    mv dc_conf.py dc_conf_standby.py 
    mv dc_conf_aboutready.py dc_conf.py 

    echo "--> Building docker"
    docker-compose up -d --build

    echo "--> Completed!"

Сгенерированные ошибки:

/home/admin/git/Repo/lunchpad2.sh: line 7: docker-compose: command not found
mv: cannot stat ‘dc_conf_standby.py’: No such file or directory
mv: cannot stat ‘dc_conf.py’: No such file or directory
mv: cannot stat ‘dc_conf_aboutready.py’: No such file or directory
/home/admin/git/Repo/lunchpad2.sh: line 15: docker-compose: command not found

1 Ответ

0 голосов
/ 13 сентября 2018

Я вижу два вопроса здесь:

  1. Вам нужно использовать cd в скрипте или в задании cron. Cron запускает команду в вашем домашнем каталоге. Вы можете повторить "$ PWD" для подтверждения.

  2. Вам необходимо указать путь к исполняемому файлу docker-compose (для подтверждения запустите «which docker-compose»)

    #!/bin/bash -p
    cd /home/admin/git/Repo
    
    echo "--> Starting!"
    
    echo "--> Stopping docker"
    /usr/bin/docker-compose down
    
    echo "--> Switching files"
    mv dc_conf_standby.py dc_conf_aboutready.py 
    mv dc_conf.py dc_conf_standby.py 
    mv dc_conf_aboutready.py dc_conf.py 
    
    echo "--> Building docker"
    /usr/bin/docker-compose up -d --build
    
    echo "--> Completed!"
    
...