분리 된 스크린 세션 종료 [닫기]


864

어딘가에서 분리 된 스크린이

screen -X -S [session # you want to kill] kill

어디에서 [세션 번호를 죽이고 싶습니까?]

screen -ls

그러나 이것은 작동하지 않습니다. 뭐 잘못 됐어? 올바른 방법은 무엇입니까?


25
"어딘가"가 항상 좋은 정보원은 아닙니다. "맨 스크린"을보십시오.
innaM

27
올바른 명령은 다음과 같습니다.screen -S sessionname -p 0 -X quit
Jimmetry


나는 단순히 exit
TPArrow

화면에있을 때 Ctrl + D가 가장 쉬운 명령입니다.
Don King

답변:


1267

"kill"은 하나의 화면 창만 종료합니다. 전체 세션을 "kill"하려면을 사용하십시오 quit.

$ screen -X -S [session # you want to kill] quit

죽은 세션의 경우 $ screen -wipe를 사용하십시오.


112
우분투에서 'exit'를 입력하십시오 (따옴표 제외) : P
mzalazar

16
exit작동하지만 열린 각 화면에 입력해야합니다. quit작동하지 않습니다
kapad

4
@kapad는 인라인으로 작성하면 실제로 작동을 멈 춥니 다. -X -S pid / sockname quit
Eduard

20
OSX screen -X quit에서 터미널에 입력하면 모든 활성 세션이 종료됩니다
Michel

5
Ctrl + D도 작동합니다
Yi Xin

499

다음을 수행하여 스크린 세션 내에서 응답하지 않는 분리 된 세션을 종료 할 수 있습니다.

  1. screen -list분리 된 스크린 세션을 식별하기 위해 입력 하십시오.

    ~ $ 화면-목록  
        화면이 있습니다 :  
             20751. 멜빈 _ 피터 _V42 (분리)  
    

    참고 : 20751.Melvin_Peter_V42세션 ID입니다.

  2. 분리 된 스크린 세션에 연결

    화면 -r 20751.Melvin_Peter_V42
  3. 세션에 연결되면 Ctrl+ A를 누르고 다음을 입력하십시오.:quit


20
당신은 전체 이름없이 screen -r 20751을 사용할 수 있습니다
Gal Bracha

53
또는 : Ctrl + a, k
laffuste

의 댓글이 나를 위해 일 @laffuste하지만, quit그리고 :quit이어질 command not found내 원격 리눅스 서버 (OS 나 화면 버전 사이 아마 차이는 비난에 있습니다)
해킹-R

화면에 연결되면 exit작동합니다.
PankajKabra

145

목록 화면 :

screen -list

산출:

There is a screen on:
23536.pts-0.wdzee       (10/04/2012 08:40:45 AM)        (Detached)
1 Socket in /var/run/screen/S-root.

스크린 세션 종료 :

screen -S 23536 -X quit

1
'screen -ls'도 작동합니다. ;)
Atul Vaibhav

113

의미있는 이름이 주어지면 세션을 죽이는 것이 더 쉽습니다.

//Creation:
screen -S some_name proc
// Kill detached session
screen -S some_name -X quit

screen -S그렇지 screen -r않습니까?
43Tesseracts

1
이 답변은 세션 이름을 사용하는데, 이는 ID를 찾는 것보다 훨씬 편리합니다. 감사합니다!
Paul Kenjora

43

스크린 세션이있는 곳으로 가서 실행할 수 있습니다.

 screen -ls

결과

 There is a screen on:
         26727.pts-0.devxxx      (Attached)
 1 Socket in /tmp/uscreens/S-xxx. <------ this is where the session is.

그리고 그것을 제거하십시오 :

  1. cd / tmp / uscreens / S-xxx
  2. ls
  3. 26727.pts-0.devxxx
  4. rm 26727.pts-0.devxxx
  5. ls

uscreens디렉토리는 필요가 없습니다 26727.pts-0.devxxx더 이상 거기에 파일을. 이제 이것을 입력하십시오 :

screen -ls

그리고 당신은 얻을 것이다 :

/ tmp / uscreens / S-xxx에 소켓이 없습니다.


4
화면이 "고정 된"경우 작동하는 유일한 솔루션입니다. 죽지 않았지만 붙일 수는 없습니다.
redreinard

이것은 화면이 완전히 잠겨있을 때 도움이되었지만 실제 프로세스도 찾아서 죽여야했습니다. ps aux | grep screenpid를 발견하고 kill그것을 제거하기 위해 a 를 발행 했습니다. 화면에서 실행 한 내용에 따라 정리할 임시 파일과 잠금이있을 수 있습니다.
Lomky


23

이것을 당신의 ~/.bashrc:에 추가하십시오

alias cleanscreen="screen -ls | tail -n +2 | head -n -2 | awk '{print $1}'| xargs -I{} screen -S {} -X quit"

그런 다음 cleanscreen모든 화면 세션을 청소 하는 데 사용하십시오 .


11
간단한 원 라이너 :screen -ls | grep Detached | cut -d. -f1 | awk '{print $1}' | xargs kill
Ariel

3
치료를 해보았지만 OSX에서 작동하도록 약간 수정해야했습니다. screen -ls | tail +2 | head -2 | awk '{print $1}'| xargs -I{} screen -S {} -X quit
Jonathan

약간의 개선 : -screen -ls | grep 첨부 됨 | 컷 -d. -f1 | awk '{print $ 1}'| xargs -I {} screen -d {}
Abhay Yadav


16

분리 된 모든 스크린 세션 을 종료하려면 .bash_profile에이 기능을 포함하십시오.

killd () {
for session in $(screen -ls | grep -o '[0-9]\{5\}')
do
screen -S "${session}" -X quit;
done
}

그것을 실행하려면 전화 killd


5
때로는 5 자리가 아니므로 다음을 사용합니다. killd () {$ (screen -ls | grep -o '[0-9] \ +') 세션의 경우 screen -S "$ {session}"-X quit; done}
Kostyantyn

7
== ISSUE THIS COMMAND
[xxx@devxxx ~]$ screen -ls


== SCREEN RESPONDS
There are screens on:
        23487.pts-0.devxxx      (Detached)
        26727.pts-0.devxxx      (Attached)
2 Sockets in /tmp/uscreens/S-xxx.


== NOW KILL THE ONE YOU DONT WANT
[xxx@devxxx ~]$ screen -X -S 23487.pts-0.devxxx kill


== WANT PROOF?
[xxx@devxxx ~]$ screen -ls
There is a screen on:
        26727.pts-0.devxxx      (Attached)
1 Socket in /tmp/uscreens/S-xxx.

소켓을 제거하지 않고 프로세스를 죽이지 않습니까?
Martin C.

이 방법은 zomby 프로세스 생성 관점에서 위험합니까?
Fedir RYKHTIK

5

또는 화면 세션에서 exit를 입력하기 만하면됩니다.

그러면 화면에서 시작된 셸 세션이 종료되어 현재 화면 세션이 효과적으로 종료됩니다.

스크린 세션 ID 등을 신경 쓸 필요가 없습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.