
지금은 GNU 화면 내에서 프로세스를 실행하고 있습니다. 화면은 명령으로 시작되고 screen -dmS screenname
가 첨부됩니다 screen -r screenname
. 스크린 세션에서 프로세스가 시작되고 일정 시간이 지나면 종료됩니다.
내부 프로세스가 종료되면 화면을 종료하려면 어떻게 해야 합니까?
참고: 저는 루프를 선호하지 않으므로 대안을 찾고 있습니다. 때로는 다음 프로세스를 시작 하지만 프로세스에서 & exit
사용하면 실행되지 않습니다 .kill -9 pid
답변1
로 프로세스를 시작 exec
하면 이것이 화면 내부의 유일한 항목이 됩니다(완료 후 셸로 돌아가는 대신 셸을 대체합니다).
답변2
이 시도:
screen -dmS screenname sleep 5
sleep 3
screen -ls
sleep 3
screen -ls
첫 번째에는 screen -ls
스크린 세션이 표시됩니다. 두 번째에서는 사라져야합니다. 마지막 창이 닫히면 화면이 자동으로 종료됩니다. screen 내에서는 단일 프로그램만 실행하므로 프로그램이 종료되면 screen 세션의 마지막(유일한) 창이 닫힙니다. screen 세션에 연결한 다음 screen 세션 내의 쉘 프롬프트에 명령을 입력하여 프로그램을 시작하는 경우, screen은 쉘이 종료될 때까지 기다리고 있습니다. 쉘 프롬프트에서 입력하는 exec PROGRAM
대신 프로그램을 종료하면 이런 일이 발생할 수 있습니다 (실제로 이렇게 하면 쉘이 종료되고 로 대체됩니다 ).PROGRAM
PROGRAM
필요한 것이 화면 분리 기능뿐이라면 가벼운 대안은 다음과 같습니다.dtach.
답변3
명령 이름으로 screen 세션을 시작할 수 있습니다. 예를 들어 screen -dmS session vim
vim으로 종료되는 screen 세션이 열립니다. 기존 화면 세션 내에서 다음을 사용하여 exec
동일한 효과를 얻을 수 있습니다.