screen
과거에 명령을 통해 시작된 몇 가지 프로세스를 시작했습니다 . 대부분의 스크립트 실행이 완료되었지만 화면은 여전히 유휴 상태인 것 같습니다. 모든 프로세스를 볼 때 ps aux | less
볼 수 있습니다.
screen
모든 항목을 확인하고 그 중 실행 중인 활성 스크립트가 있는지 어떻게 확인할 수 있나요 ?
감사해요
답변1
현재 실행 중인 화면 목록을 보려면:
screen -list
화면 이름의 첫 번째 부분은 PID입니다. 이 상위 프로세스에서 생성된 현재 실행 중인 프로세스 트리를 보려면 다음을 실행하세요.
pstree <PID>
또는 더 자세한 출력을 원하시면
pstree -a <PID> | less
화면에 다시 연결하려면(또는 다른 곳에 연결된 경우 분리하려면) 다음을 실행하세요.
screen -rd <PID>
화면이 더 이상 필요하지 않다고 판단되면 화면을 종료할 수 있는 몇 가지 옵션이 있습니다. 현재 화면에 연결되어 있는 경우 Ctrl+ 를 a사용 하면 k화면과 모든 창이 종료됩니다.
또는 세션에 참여하지 않는 경우 다음을 사용할 수 있습니다.
kill <PID>
screen -wipe <PID>
그것을 죽이고 화면 목록에서 제거하십시오.
답변2
screen
스크립트가 완료되면 셸을 종료하여 스크립트가 완료된 후 유휴 상태로 유지되는 것을 방지 할 수 있습니다 .
script.sh; exit
또는 오류 메시지를 보려면 다음을 실행하세요.
script.sh && exit
이렇게 하면 성공적으로 완료된 경우 screen
에만 닫힙니다 .script.sh
답변3
이 파이프를 사용하면 비활성 화면에 해당하는 PID 목록을 얻을 수 있습니다.
screen -list | sed '1d;$d' | sed -r 's/^[^[0-9]]*([0-9]*).*$/\1/' | xargs -n1 pstree -p | sed -r 's/.*bash\(([0-9]+)\)$/\1/' | grep "^[0-9]*$"
예를 들어:
> screen -list
There are screens on:
8988.pts-0.ubuntu-1gb-sfo1-01 (07/09/2018 09:02:14 PM) (Detached)
8960.pts-0.ubuntu-1gb-sfo1-01 (07/09/2018 09:01:40 PM) (Detached)
8927.pts-0.ubuntu-1gb-sfo1-01 (07/09/2018 09:01:02 PM) (Detached)
8903.pts-0.ubuntu-1gb-sfo1-01 (07/09/2018 09:00:42 PM) (Detached)
8857.pts-0.ubuntu-1gb-sfo1-01 (07/09/2018 08:59:30 PM) (Detached)
8831.pts-0.ubuntu-1gb-sfo1-01 (07/09/2018 08:59:01 PM) (Detached)
6 Sockets in /var/run/screen/S-user.
> screen -list | sed '1d;$d' | sed -r 's/^[^[0-9]]*([0-9]*).*$/\1/' | xargs -n1 pstree -p
screen(8988)───bash(8989)
screen(8960)───bash(8961)
screen(8927)───bash(8928)
screen(8903)───bash(8904)
screen(8857)───bash(8858)───python(8877)───{python}(8881)
screen(8831)───bash(8832)───python(8851)───{python}(8855)
처음 4개는 비활성 상태이므로 다음을 통해 수행할 수 있는 PID를 선택해야 합니다.sed -r 's/.*bash\(([0-9]+)\)$/\1/' | grep "^[0-9]*$"
이것의 장점은 한 줄로 모든 비활성 화면을 종료할 수 있다는 것입니다.
screen -list | sed '1d;$d' | sed -r 's/^[^[0-9]]*([0-9]*).*$/\1/' | xargs -n1 pstree -p | sed -r 's/.*bash\(([0-9]+)\)$/\1/' | grep "^[0-9]*$" | xargs -n1 kill