모든 화면을 어떻게 죽이나 요?


74

실수로 1000 개가 넘는 화면을 만들었습니다. 하나의 명령으로 어떻게 모두 죽일 수 있습니까? (또는 몇 개)


3
실행->screen -ls | grep Detached | cut -d. -f1 | awk '{print $1}' | xargs kill
sactiw

좋은 아이디어 @sactiw. 나는 이름이 지정된 세션과 작동하도록 수정하고 선호도를 위해 명령을 약간 조정하고 나처럼 '고착 된'경우 세션을 완전히 정리하고 사용자를 위해 상태 점검으로 다시 나열했습니다.screen -ls | grep "<name>" | cut -d. -f1 | tr --delete "\t" | xargs kill -9; screen -wipe; screen -ls;
Pysis

3
실수로 1000 개의 화면을 어떻게 만들었습니까?
duhaime

답변:


94

당신이 사용할 수있는 :

pkill screen

또는

killall screen

OSX에서는 모든 대문자로 프로세스를 SCREEN이라고합니다. 따라서 다음을 사용하십시오.

pkill SCREEN

또는

killall SCREEN

2
이 경우 SIGKILL을 사용하지 않는 것이 좋습니다. SIGTERM이 훨씬 더 나은 선택입니다.
Marco

안녕하세요 라훌 패틸 화면이 목록에없는 이유Top
user15964

권한이 없으면 어떻게합니까? 모든 화면을 개별적으로 수동으로 시작하고 종료해야합니까?
hipoglucido 2016 년

13

화면이 죽은 경우 다음을 사용하십시오.

screen -wipe

6
str=$(screen -ls)  

array=$(echo $str|tr "." "\n")  

for V in $array  
do  
if [ $V -gt 0  ]  
        then screen -S $V -X quit  
fi  
done 

5

최근에 이것을 조합하여 그 목적을 달성하는 awk에 익숙해지기 시작했습니다. 이해하기 쉽기 때문에 게시했습니다.

screen -ls | grep '(Detached)' | awk 'sys {screen -S $1 -X quit}'

어디 screen -ls현재의 모든 화면을 보여줍니다. grep 'pattern'일치하는 모든 행을 필터링합니다. 우리는 모든 분리 된 화면에 대한 핸들을 얻고 함께 할 수 awk sys {command}우리가 복사 명령을 함께 붙여 그것을 실행할 수 sys, $1첫 번째 인수는 AWK에 의해 포착을 의미합니다. 마지막으로을 사용하여 quit 명령을 실행합니다 screen -X quit.


1
screen -ls | grep '(Detached)' | awk '{print $1}' | xargs -I % -t screen -X -S % quit 나를 위해 더 잘 작동했습니다.
whereisalext

2

나는 당신이 1000 개의 "스크린"을 어떻게 만들 었는지에 대해 약간 당황했습니다. 1000 개의 화면 창 (단일 화면 세션 내에서 1000 개의 서로 다른 터미널 창)을 의미 했습니까?

단일 화면 세션 내에서 1000 개의 창을 의미하는 경우 명령 C-a \(ctrl-a 다음에 \)을 사용하여 화면을 종료하는 것이 더 우아한 해결책입니다 .


1
화면 내에서 1000x 화면을 실행하십시오. 무슨 일이야? 1000 개의 화면 창이 나타납니다. 그렇습니다. 화면이 지능적이고 자비 롭게 1000 개의 화면 세션을 생성하지 않습니다. 따라서 OP가 이미 화면을 시작한 경우 1000 개의 화면 세션을 시작하는 것보다 1000 개의 화면 창을 실수로 시작하는 것이 훨씬 쉽습니다.
Railgun2

이상하지만 답장 한 댓글이 사라진 것 같습니다. 어쨌든 나는 위의 의견을 기록으로 남겨두고 있습니다.
Railgun2

1
실제로는 매우 간단합니다. 실수로 무한 루프를 만들고 거기에 이와 같은 것을 넣으십시오 screen -m sleep 100000. 이것은 일어 났으며 1000 스크린 세션을 이미 만들 때까지는 알지 못했습니다.
BrainStone

0

다음 명령은 모든 비활성 화면을 종료합니다.

perl -e 'while (map { kill 9, [split /\./]->[0] } grep { /Detached/ } split /\n/, qx{screen -ls}) { sleep 1 } exec qw(screen -wipe)'

0
for scr in $(screen -ls | awk '{print $1}'); do screen -S $scr -X kill; done
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.