Задать вопрос
@burov0798
Пытаюсь изучать php\js

Как запустить screen через bash скрипт?

Добрый день. Почему скрипт bash не работает через cron?

for session in $(screen -ls | grep -oP '\d+\.\w+' | cut -d. -f1); do screen -S "${session}" -X quit; done

cd /root/bot

screen -dmS bot poetry run python src bot


Суть такая, чтобы каждый час завершать все screen окна, и создавать новое окна и запускать там команду "poetry run python src bot". Если запустить скрипт просто через консоль командой:

cd /root/bot;sh restart.sh

То все работает, все окна screen закрываются, создается новое окно и в нем запускается команда, но если скрипт запускается через cron:

*/5 * * * * cd /root/bot;sh restart.sh > /dev/null

То окна закрываются, но новое окно не запускается и выводит ошибку: Must be connected to a terminal.
  • Вопрос задан
  • 318 просмотров
Подписаться 1 Простой 6 комментариев
Решения вопроса 1
saboteur_kiev
@saboteur_kiev Куратор тега Linux
software engineer
Запуская screen из крона, у вас нет открытой сессии, чтобы скрин знал к чему подключиться.
Но можно запустить уже открепленный screen с опциями -d -m

for session in $(screen -ls | grep -oP '\d+\.\w+' | cut -d. -f1); do screen -d -m -S "${session}" -X quit; done

С другой стороны, не видно чтобы вам вообще нужен был тут скрин, разве что вы хотите именно подключаться в его консоль. Если нет, то прибивайте и перезапускайте ваш бот.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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