내 목표는 여러 세션을 생성하고 각 세션에서 별도의 명령을 실행하는 zsh
스크립트를 작성하는 것 입니다. screen
또한 스크립트 시작 부분에서 화면이 작업을 실행 중인지 확인하고 유휴 화면을 종료하고 싶습니다. 또한 가능하다면 개별 화면의 표준 출력을 기록하고 해당 ID 번호를 얻을 수 있는 방법을 갖고 싶습니다. 지금까지 나는 다음을 시도했습니다.
### Script for running everything in screens ###
killall -15 screen ## We make sure that no screens are running for now
#bkg_array = ("TopJets" "BosonJets" "DiBoson" "TTbar")
screen -dmS "MYSCREEN"
screen -S "MYSCREEN" -p 0 -X stuff 'echo "The array has of elements."\n'
그러나 누른 키를 보낼 수 없는 것 같습니다 Enter
. 어떻게 해야 합니까? 또한 이 옵션이 없으면 -p
명령이 화면으로 전송되지 않습니다. 누르면 Ctrl+V+Enter문자가 ^M
화면에 붙여넣어지고 스크린세션에서 엔터키를 눌렀는데 왜 이런 현상이 일어나는지 모르겠습니다.
도움을 주셔서 감사합니다. 모호한 점이 있으면 언제든지 지적해 주세요.
답변1
나는 screen이 와 같은 명명된 문자를 해석하지 않지만 \n
8진수 이스케이프를 처리한다는 것을 발견했습니다. 따라서 stuff 'echo "The array has of elements."\n'
다음을 사용할 수 있습니다.
stuff 'echo "The array has of elements."'\012
답변2
그래서 내가 하는 일은 이렇습니다.
screen-dmS SCREEN_SESSION_NAME -t TAB_NAME ~/bin/my_first_prog.sh; 스크린-S SCREEN_SESSION_NAME -X 스크린-t TAB_NAME2 ~/bin/my_first_prog.sh
두 개의 탭이 있는 SCREEN_SESSION_NAME이라는 화면 세션이 표시됩니다. 모든 것을 종료하려면 프로그램을 정상적으로 종료하고(kill -1) 다음을 실행합니다.
화면 -S SCREEN_SESSION_NAME -X 종료