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
. 이 파일은 로그인할 때 읽혀집니다.