Возможно, я использую неправильный словарь, но я, может казаться, не нахожу дубликат своей проблемы. Я пытаюсь выполнить две программы в рамках своего сценария оболочки, и крон ясно выполняет первый сценарий, но не второе.
У меня есть два сценария Python, views.py
это работает как веб-сервер и housekeeping.py
это заботится о некоторой очистке, и обновление проверяет, что веб-интерфейс не должен волноваться о. В настоящее время они могут быть вручную запущены с помощью sudo /home/ubuntu/start_server.sh
и все работы отлично. Я использую порт 80, таким образом, я должен работать как корень.
Полный сценарий удара:
#!/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 я использую
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
выполняются.
Благодаря muru я смог найти ответ на свой вопрос.
, Как это происходит, сценарий удара и задание крона работают правильно. Эти housekeeping.py
имел ошибку, которая происходит при выполнении как 'корень' и не 'человечность', но который я не видел.
ошибка была показана путем добавления следующего к верхней части сценария удара:
exec 2>/home/ubuntu/log
, Который имеет эффект передачи по каналу вывода всех программ, запущенных в сценарии удара в файл журнала.