Я вызываю следующую команду через bash, но она вообще не создает сеанс экрана:
screen -d -m time python3 myscript.py ; sleep 1
когда я screen -r
это делаю, он говорит, что нет экрана для возобновления. Однако, когда я пытаюсь:
screen -d -m time python3; sleep 1
Затем при выполнении screen -r
этого отображается консоль Py.
Что я делаю не так?
решение1
screen -d -m time python3 myscript.py
запускается python3 myscript.py
внутри сеанса экрана, затем завершается. Если вы не видите сеанс экрана позже, это потому, что скрипт уже завершился.
Кажется, вы ожидали, myscript.py
что он будет работать дольше. Что-то пошло не так. Перенаправьте вывод (особенно ошибки) в файл, чтобы увидеть, что происходит. Или сохраните сеанс, запустив другую программу.
screen -d -m time sh -c 'python3 myscript.py; echo $?; sleep 999999999'
Если скрипт не работает при запуске его непосредственно с экрана, но работает при запуске из интерактивной оболочки, весьма вероятно, что это указывает на две вещи:
myscript.py
зависит от некоторых настроек, возможно, переменной окружения. Он не является самодостаточным.- Вы устанавливаете этот параметр в неправильном месте. Вероятно, вы устанавливаете переменную среды в
.bashrc
, которая считывается только интерактивными оболочками. Установите переменные среды в.profile
; этот файл считывается при входе в систему.