화면 세션 상태인지 확인하는 방법


75

내가 스크린 세션에 있는지 여부를 어떻게 확인할 수 있습니까? ctrl + d를 누르면 서버에서 연결이 끊어 지거나 현재 화면을 닫을 지 결정해야합니다. 감사.

답변:


107

$STY변수를 볼 수 있습니다 ( screen 명령으로 설정된 변수 ). ""가 아니면 스크린 세션에있는 것입니다.

나는 화면에있다

$ echo $STY 
29624.pts-1.iain-10-04
$

화면에 없습니다

$ echo $STY

$

12
이는 여전히 로컬 컴퓨터에서 실행중인 세션에 있다고 가정합니다. 화면을 시작한 다음 다른 곳에서 SSH를 시작하면 작동하지 않습니다.
David Mackintosh

2
if test -n "$STY"; then printf "This is a screen session named '$STY'.\n"; else printf "This is NOT a screen session.\n"; fi
집합

2
@DavidMackintosh 만약 당신이 다른 곳으로 SSH를 쳤다면, ctrl-D를 누르면 "서버와 연결이 끊어 질 것"입니다. 이것이 바로 질문입니다.
울림

1
내가 지금 사용하는 모든 단일 컴퓨터에 별칭으로 게시 한 경우 이것이 있습니다.
Eduardo Bezerra

44

$ TERM 변수를 볼 수 있습니다.

echo $TERM

그것은 만약 screen세션, 용어 변수는 "화면"를 반환해야합니다.

root@deore:/volumes# echo $TERM
screen

Ctrl-a -d (화면을 종료하려면)

root@deore:/volumes# echo $TERM
xterm

또한 확인하십시오 : https://stackoverflow.com/questions/3472287/how-do-you-tell-if-the-current-terminal-session-is-in-gnu-screen


4
이것은 어떤 이유로 든 TERM 값을 고의로 엉망으로하지 않는 것으로 가정합니다.
David Mackintosh

1
화면 내부에서 TERM 변수를 변경하면 모든 종류의 문제가 발생합니다.
울림

TERM 값을 화면 값으로 설정하면 Solaris 2.6 노드가 제대로 작동하지 않습니다.
David Mackintosh

3
"$TERM" = "screen"옵션 sudo과 달리 환경에 들어갈 때 보존되는 것 같습니다 $STY.
Melebius

29

기본 키 바인딩을 변경하지 않은 경우 Ctrl+ a-> Ctrl+ t를 수행하면 화면에있는 경우 시간이 표시됩니다. 다른 제안과 달리 ssh : d를 다른 곳에서 멀리 떨어진 경우에도 작동합니다.


4
왜 우리는 이것을지지하지 않습니까?
AndreKR

이것은 확실히 최고의 솔루션입니다.
Felix Jen

2
@womble 알 수없는 프로그램을 사용하여 키 시퀀스 및 명령에 대한 응답으로 임의의 파괴적인 작업을 수행 할 수 있다면 안전하지 않습니다.
Gurgeh

2
@AndreKR : 스크립트에서 작동하지 않습니다
Frank Meulenaar

1
im은 화면에 들어가서 다른 화면으로 스크리닝하기 때문에 upvoting하지 않으며 문자 그대로 $ STY가 설정되어 있는지 확인해야합니다. 어떤 이유로 든 다시 비워집니다.
브라이언 토마스

14

caption명령은 ~/.screenrc스크린 세션을 구별하는 좋은 방법입니다.

나는 개인적으로 이것을 사용하고 있습니다 :

$ cat ~/.screenrc
caption always "%{= kc}Screen session on %H (system load: %l)%-28=%{= .m}%D %d.%m.%Y %0c"

화면 하단에 다음과 같은 줄을 추가합니다.

Screen session on gbook (system load: 1,75 1,74 1,68)                   Lun 05.01.2015 13:01

첫 번째 부분 (시스템 이름 +로드)은 녹색이고 날짜는 분홍색입니다. 유용하고 놓치기 어렵다!


이것은 완벽 해요! 방해가되지 않으며 (하단 위치) 항상 표시 (색상)되며 시스템에 대한 유용한 정보를 제공합니다. 나는 여기에 이것을 게시했습니다. stackoverflow.com/a/43571028/2450431
hrvoj3e

6

다른 해결책을 찾았습니다 :을
수정 .screenrc하면 화면 세션이 일반 터미널과 완전히 다르게 보입니다.


나는 당신이 제안하는 것을 알고 있다고 생각하며, 어떤 상황에서는 이 문제를 완전히 피할 수 있습니다. 예제 .screenrc파일 을 표시하여 의미를 설명하면 더 도움이 될 수 있습니다 .
jvriesem

0
screen -ls

세션을보고

screen -r sessioninfo

분리 된 경우 분리 된 장치에 다시 연결합니다.

screen -D -r sessioninfo

연결이 끊긴 것에 다시 연결합니다.


1
이것은 질문에 대답하지 않습니다.
울림

-1

를 수행합니다 screen -ls. 명시 적으로 AttachedDetached상태를 나타냅니다 .

첨부 된 예 :

$ screen -ls | grep tached
3132.pts-0.esavo00      (Attached)

분리 된 예 :

$ screen -ls |grep tached
3132.pts-0.esavo00  (Detached)

6
다른 곳에 스크린이 부착되어 있으면 문제가 될 수 있습니다.
Dennis Nolte
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.