Рейтинг:0

Как запустить скрипт Python venv с экраном в crontab

флаг jp

У меня есть сценарий sh со следующим содержимым:

экран -mdS myscript /home/myscript/myscript_env/bin/python3 /home/myscript/bot.py

Этот скрипт выполняет скрипт Python и открывает его на новом экране.

Он отлично работает при выполнении файла sh в терминале, однако при использовании crontab для выполнения этого сценария sh при перезагрузке он не работает:

@reboot ./home/myscript/start.sh
флаг cn
Можете ли вы [отредактировать] (https://serverfault.com/posts/1081562/edit) вопрос, чтобы включить все `./home/myscript/start.sh`, пожалуйста
флаг cn
Также это, вероятно, стоит прочитать https://unix.stackexchange.com/questions/109804/crontabs-reboot-only-works-for-root
флаг jp
@hardillb Я уже разместил содержимое сценария выше
Рейтинг:1
флаг cn

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

#!/бин/ш
экран -mdS myscript /home/myscript/myscript_env/bin/python3

Во-вторых, как упоминалось в вопросе, на который я ссылался, @перезагрузка не всегда поддерживается ни для всех пользователей, ни вообще.

Гораздо лучшим вариантом для запуска чего-либо во время загрузки является служба systemd (при условии, что вы не используете что-то достаточно старое, чтобы все еще использовать сценарии init.d). Разумное обсуждение того, как настроить службу, здесь

Рейтинг:0
флаг us

Ваш сценарий оболочки либо должен иметь #!/бин/баш или же #!/бин/ш наверху. или если он вызывается через crontab, его следует вызывать либо с помощью /бин/ш или же /bin/bash ваш скрипт. Альтернативное решение по сравнению с crontab — воспользоваться преимуществами "/etc/rc.d/rc.local" файл.

sh screen -mdS myscript /home/myscript/myscript_env/bin/python3

просто нужно убедиться, что сам файл rc.local является исполняемым:

chmod +x /etc/rc.d/rc.local
Рейтинг:0
флаг cn

У вас есть какой-либо вывод в почту, сгенерированную cron? Попробуйте проверить журналы cron или почты для пользователя, чей crontab содержит эту запись, и это должно дать подсказку о проблеме.

На первый взгляд мне кажется, что причина, вероятно, в лишнем . в команде. Попробуйте изменить

@reboot ./home/myscript/start.sh

к

@reboot /home/myscript/start.sh

и посмотрите, поможет ли это.

Насколько я знаю, cronjob запускает команды из домашнего каталога пользователя (например, /корень) вместо корня файловой системы (т. е. /).

Ответить или комментировать

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