나는 스크린 프로그램을 광범위하게 사용한다. 매일 세션을 설정하는 데 소요되는 시간을 줄여서 많은 도움이 됩니다. 하지만 이제는 화면이 8개 이상이므로 어떤 화면을 보고 있는지 잊어버릴 때가 있습니다. 내가 사용하고 있는 스크린 세션의 이름을 찾는 방법이 있나요? screen -ls는 모든 스크린 세션을 나열합니다.
예를 들어 하루가 끝날 때 현재 활성화된 모든 화면 세션을 분리할 수 있는 방법이 있습니까?
답변1
옛날에 나는 이 간단한 쉘 스크립트를 크론 작업으로 사용했는데 당신이 말했듯이,최종 분석에서.
#!/bin/sh
screen -ls \
| awk '/\(Attached\)/{print $1}' \
| while read line ; do
screen -D $line ;
done
화면 -D
(전원 분리)도 화면의 상위 프로세스(보통 종료됨)에 HANGUP 신호를 보냅니다.포함하다단말기). 원한다면 사용 -d
(분리) 할 수 있습니다.
@doon이 알아차렸듯이 이를 사용하여 현재 echo $STY
어떤 화면에 있는지 알 수 있습니다.
답변2
andcoz'보다 약간 더 안정적인 버전입니다.
#! /bin/sh -
tab=$(printf '\t')
screen -ls |
while IFS=$tab read -r session time state; do
[ "$state" = "(Attached)" ] && screen -D "$session"
done
세션 이름에 탭이나 줄 바꿈을 사용하면 여전히 작동하지 않습니다.