У меня Ubuntu 20.04. 2 LTS-сервер, на котором я запускаю несколько сценариев python.
Я создал задание cron для запуска сценария bash, чтобы проверить, работает ли мой сценарий python:
#!/bin/sh
#!/bin/python2.7
SERVICE="start_server.py"
if ps -ef | grep "$SERVICE" | grep -v grep >/dev/null
then
echo "start_server.py is running" >> /home/ubuntu/mislaka/script_log.log
else
python2.7 /home/ubuntu/mislaka/start_server.py &
echo "start_server.py stopped" >> /home/ubuntu/mislaka/script_log.log
fi
Это конфигурация задания cron:
* * * * * /home/ubuntu/mislaka/check_process.sh
При проверке файла журнала Я вижу, что он добавляет эхо-команды в файл, но не запускает скрипт python.
Если я запускаю свой скрипт вне cronjob, он работает, как ожидалось.
Буду признателен за любую помощь.
Спасибо!
Выяснил, в чем была моя проблема. Вместо того, чтобы писать мою команду под оператором else в одной строке, я написал ее двумя:
echo "start_server.py stopped" >> /home/ubuntu/mislaka/script_log.log && python2.7 start_server.py &
Это исправило мои проблема.
Между оболочками bash и sh есть некоторые различия. Если вы используете bash, вы должны использовать:
#!/bin/bash