처리 중인 화면 세션을 찾는 방법

처리 중인 화면 세션을 찾는 방법

나는 스크린 프로그램을 광범위하게 사용한다. 매일 세션을 설정하는 데 소요되는 시간을 줄여서 많은 도움이 됩니다. 하지만 이제는 화면이 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

세션 이름에 탭이나 줄 바꿈을 사용하면 여전히 작동하지 않습니다.

관련 정보