제목이 말하는 내용은 다음과 같습니다.
내 쉘 스크립트는
- 명령 A를 실행하고 완료될 때까지 기다립니다.
- "스크린" 실행
- 초기 화면에서 B1 명령 실행
- 새 창 열기(보통 Cmd-ac를 통해)
- 새 창에서 B2 명령을 실행하십시오.
- 새 창 열기
- 새 창에서 B3 명령을 실행하십시오.
그게 전부입니다. 일부(또는 전부)가 완료될 때까지 기다릴 필요는 없습니다. 하지만 그렇게 하면 보너스 포인트가 제공됩니다. 어떻게 해야 합니까?
답변1
screen
"mysession" 세션의 배경 이름을 시작합니다 .
screen -d -m -S mysession
top
첫 번째 창에서 실행
screen -S mysession -X exec top
다른 창을 시작하고 이름을 "win1"로 지정한 후 " vmstat 10
"를 실행하세요.
screen -S mysession -X screen -t win1
screen -S mysession -p win1 -X exec vmstat 10
다른 창을 시작하고 이름을 "win2"로 지정한 후 " iostat 30
"를 실행하세요.
screen -S mysession -X screen -t win2
screen -S mysession -p win2 -X exec iostat 30
세션을 연결하고 보려면:
screen -x -S mysession
screen
프로그램 중 하나라도 종료되면 각 프로그램에서 셸(필요한 경우 사용할 수 있음)이 시작되므로 창이 닫히지 않습니다 .
- 또는 -창당 단일 명령만 원하거나 프로세스가 완료된 후 더 쉽게 정리하려면 각 창에서 기본 셸을 실행하지 말고 다음 명령만 실행하세요.
screen -d -m -S mysession top
screen -S mysession -p 0 -X title win0 # optional!
screen -S mysession -X screen -t win1 vmstat 10
screen -S mysession -X screen -t win2 iostat 30
screen
zombie
프로세스가 종료될 때 창을 "종료"하거나(창 내용을 그대로 유지, 아래 참조) 종료합니다 .
screen -S mysession -X quit # nuke whole the session
또는
screen -S mysession -p win2 -X kill
screen -S mysession -p win1 -X kill
screen -S mysession -p 0 -X kill
(이것은 실행 중인 프로세스를 종료할 수도 있고 종료하지 않을 수도 screen
있으며, 각 프로세스에 SIGHUP을 보냅니다.)
창을 자동으로 닫고 모든 프로세스가 완료되면 종료 하려면 세션을 만든 후에 다음을 추가하십시오(단, 에 설정 screen
하지 않은 경우 어쨌든 기본값일 수 있음).zombie
.screenrc
screen -S mysession -X zombie
그러면 "좀비" 닫기 및 부활 키가 설정 해제되고, 각 창의 명령이 종료되면 창이 사라지고, screen
마지막 창이 종료되면 자체적으로 닫힙니다. ( defzombie
대신 사용해야 할 수도 있지만 zombie
반대 문서에도 불구하고 후자만 작동합니다.)