Сценарий Bash не работает правильно в crontab, но действительно работает вручную

Исследование

Возможно, я использую неправильный словарь, но я, может казаться, не нахожу дубликат своей проблемы. Я пытаюсь выполнить две программы в рамках своего сценария оболочки, и крон ясно выполняет первый сценарий, но не второе.

Цель

У меня есть два сценария Python, views.py это работает как веб-сервер и housekeeping.py это заботится о некоторой очистке, и обновление проверяет, что веб-интерфейс не должен волноваться о. В настоящее время они могут быть вручную запущены с помощью sudo /home/ubuntu/start_server.sh и все работы отлично. Я использую порт 80, таким образом, я должен работать как корень.

Сценарий Bash

Полный сценарий удара:

#!/bin/bash

/home/ubuntu/py3env/bin/python /home/ubuntu/flask_portal/views.py &
/home/ubuntu/py3env/bin/python /home/ubuntu/flask_portal/housekeeping.py &

Мое понимание то, что & заставит приложения работать в фоновом режиме.

Когда я выполняюсь вручную, сценарий оболочки работает отлично.

Crontab

Для открытия crontab я использую

sudo crontab -u root -e

Как я сказал выше, я использую порт 80, таким образом, я должен запустить свой скрипт как корень.

В crontab файле у меня есть однократный въезд:

@reboot /home/ubuntu/start_server.sh

Результаты

Когда я выполняюсь вручную, оба сценария запускаются отлично. Когда я позволяю серверу перезапускать и работать start_server.sh сам сценарий, веб-сервер views.py работает просто великолепно, но housekeeping.py никогда не запускается (я делаю вход в том файле, таким образом, он не генерирует надлежащие файлы). Кроме того, когда я выполняюсь python aux | grep python, Я вижу это оба views.py и housekeeping.py выполняются.

1
задан 1 December 2016 в 06:09

1 ответ

Благодаря muru я смог найти ответ на свой вопрос.

, Как это происходит, сценарий удара и задание крона работают правильно. Эти housekeeping.py имел ошибку, которая происходит при выполнении как 'корень' и не 'человечность', но который я не видел.

ошибка была показана путем добавления следующего к верхней части сценария удара:

exec 2>/home/ubuntu/log

, Который имеет эффект передачи по каналу вывода всех программ, запущенных в сценарии удара в файл журнала.

0
ответ дан 8 December 2019 в 07:34

Другие вопросы по тегам:

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