![스크립트 실행 후 Screen 세션이 닫히지 않습니다.](https://linux55.com/image/146113/%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%20%EC%8B%A4%ED%96%89%20%ED%9B%84%20Screen%20%EC%84%B8%EC%85%98%EC%9D%B4%20%EB%8B%AB%ED%9E%88%EC%A7%80%20%EC%95%8A%EC%8A%B5%EB%8B%88%EB%8B%A4..png)
화면 명령이 포함된 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"