스크립트 실행 후 Screen 세션이 닫히지 않습니다.

스크립트 실행 후 Screen 세션이 닫히지 않습니다.

화면 명령이 포함된 bash 파일을 작성했습니다. 그런 다음 하위 프로세스를 사용하여 Python 스크립트에서 bash 파일을 호출합니다. 모든 것이 잘 작동합니다. 그러나 스크립트가 성공적으로 실행된 후에도 screen 세션은 닫히지 않고 열린 상태로 유지됩니다. 이는 환영받지 못하는 행동입니다.

다음은 bash 파일의 예입니다.

#!/bin/bash
VIRTUAL_ENV_DISABLE_PROMPT=true
source generic_path/bin/activate
cd generic_directory
screen -dmS session_1
screen -S session_1 -X stuff "Rscript script_1.R\n"

화면 명령에서 뭔가를 변경해야 할 것 같은데요, 그렇죠? 스크립트가 실행된 후 screen 세션이 자동으로 닫히도록 변경해야 할 사항을 제안해 주시겠습니까?

답변1

다음과 같은 것을 실행할 때

screen -dmS session_1
screen -S session_1 -X stuff "Rscript script_1.R\n"

터미널에 일련의 문자를 보냅니다(이전에 만든 화면에서) Rscript script_1.R\n. 이렇게 하면 쉘이 명령을 실행하고 다음 명령을 기다립니다.

Rscript script_1.R && exit명령이 성공적으로 완료되면 쉘에 종료를 요청하는 등의 작업을 수행해야 합니다 (쉘 구문에 맞게 조정).

screen -dmS session_1
screen -S session_1 -X stuff "Rscript script_1.R && exit\n"

어쨌든 창을 만든 다음 "원격 제어"할 필요는 없습니다. 화면에 명령을 실행하도록 요청하면 됩니다.

screen -dm Rscript script_1.R

마지막으로 화면을 사용하여백그라운드에서대본은 내가 들어본 것 중 가장 이상한 아이디어 중 하나입니다. ( 귀하의 필요에 따라) cron또는 대신에 사용하십시오 .at&

"Rscript"가 단순한 임의의 예가 아닌 경우 다음을 읽어보세요.명령줄에서 R 스크립트 실행.

R CMD BATCH script_1.R &

답변2

스크립트를 "예약"하려면 "Crontab"이 좋은 솔루션이 될 수 있다고 생각합니다. 또 다른 해결책은 백그라운드 모드(& 사용)에서 스크립트를 실행하는 것입니다.

답변3

정말 좋습니다. 실제로 세션을 열어 두는 방법을 찾고 있었는데 이것이 반대의 문제입니다.

세션을 생성하고, 명령을 시작하고, 명령을 실행한 후 세션을 닫으려면 다음을 사용하면 됩니다.

screen -dmS session_name "command"

관련 정보