스크린 세션을 죽이다


65

스크린 세션을 죽이려고합니다. 나는 다른 많은 관련 질문을 발견했지만 그 대답 중 어느 것도 나를 위해 일하지 않습니다. 다음 세션을 죽이려고합니다.

screen -ls
There is a screen on:
    23520.pts-6.porkypig    (09/30/2013 02:49:47 PM)    (Detached)
1 Socket in /var/run/screen/S-root.

screen -r 23520.pts-6.porkypig

이제 세션에 있습니다. 설명서에 따르면 :

http://www.gnu.org/software/screen/manual/screen.html#Quit

"control a"를 누른 다음 "control \"를 눌러야합니다. 나는 그렇게하고 아무 일도 일어나지 않습니다.

다른 해결책은 Ctrl+ 를 누르고 a: quit를 입력 한다고 말했습니다 . 그러나 다시는 아무것도하지 않습니다. 실제로 control+를 누르면 a"No Other Window"라는 메시지 외에는 아무 일도 일어나지 않습니다.


1
v4.x 화면에서 모든 세션을 종료하려면ps aux | grep "SCREEN" | awk '{print $2}' | xargs kill
Fredrick Gauss

2
레코드의 경우 전체 문자열을 포함하지 않고 screen -r porkypig또는을 수행 할 수 있습니다 screen -r 23520. 화면 이름은 일을 더 쉽고 복잡하게 만드는 것이 아닙니다.
Mikkel

답변:


73

먼저 화면 세션에 다시 연결
screen -r 23520해야합니다. 그런 다음 ctrl+ a를 누른 다음 대문자 K를 누르고 y세션을 정말로 죽일 것인지 묻는 메시지가 나타나면를 누릅니다.


2
화면 내부에서 실행중인 프로세스에 문제가 있지만 화면 자체에 문제가있는 경우에는 작동하지 않습니다. 이는 99 %의 시간이며 모든 창을 종료하지 않고 화면 내 단일 창에만 영향을주는 이점이 있습니다.
Mikkel

1
세션이 아니라 창을 죽이는 것입니다
Eric Wang

53

화면을 연결하지 않고 종료 할 수 있습니다. 먼저 세션을 찾으십시오.

$ screen -ls

그런 다음 종료하십시오.

$ screen -XS [session # you want to quit] quit

(-X = 명령 실행, -S 세션 PID 실행)

[최신 정보]

예:

screen -XS 20411 quit

1
이것은 매우 간단했습니다. -X -S와 -XS
AJ

2
당신이 그것을 복사하면 당신 은 innaM 답변에 크레딧을 제공해야 합니다
마틴 토마

8

분리 된 모든 화면이 종료됩니다.

화면 -ls | 그렙 분리 | 컷 -d. -f1 | awk '{print $ 1}'| xargs 죽이기

연결되거나 분리 된 모든 화면이 종료됩니다.

화면 -ls | grep pts | 컷 -d. -f1 | awk '{print $ 1}'| xargs 죽이기

7

모든 공식적인 제안과 함께, 더 쉽고 효과적인 방법으로 나아가도록하겠습니다.

pkill screen

누가 거의 기억하지 못하는 몇 가지 명령을 누르기 위해 알 수없는 불필요한 화면으로 들어가기를 원합니까? 이것은 전혀 들어 가지 않고 바로 죽입니다.

또한 둘 이상인 경우 한 번에 모두 실패합니다.


1
이렇게하면 실행중인 모든 화면이 종료되며 원하는 화면 일 수도 있고 아닐 수도 있습니다.
Mikkel

좋은 선택이 아닙니다. 나는 한동안 그것을 해왔다. 때때로 그것은 나쁜 행동을 일으 킵니다 (예 : 사용자 계정에서 즉시 로그 아웃). 또한 @Mikkel이 언급했듯이 모든 화면을 닫을 수 있습니다. 원하는 것은 아닙니다. 때때로 일부를 계속 실행해야하고 (예 : 일부는 시스템에서 실행 중) 다른 화면을 중지해야합니다.
MAChitgarha

2

화면을 업데이트 할 때이 문제가 발생했습니다. screen에 관계없이 얼마나 많은 세션을 다시 연결을 시도 할 때 명령이 중단 것 -D또는 -R내가 명령에 추가됩니다. 그러나 screen -ls세션의 pid를 편리하게 제공하여 다음을 사용하여 개입 할 수 있습니다.

10:42 user ~ $ screen -ls
There is a screen on:
        5730.my_screen     (Detached)
1 Socket in /tmp/screens/S-user.

10:42 user ~ $ sudo kill 5730

10:43 user ~ $ screen -ls
No Sockets found in /tmp/screens/S-user.

(이것은 Brian Thomas의 답변과 비슷하지만, 실행중인 화면 세션을 모두 종료합니다. 여러 화면을 열었을 때 하나의 오작동 만 있으면 원하는 것이 아닐 수도 있습니다.)


6 시간 동안 인터넷을 통틀어 고개를 숙이고 나면 당신의 유일한 답은 효과가있었습니다. 고마워 친구!
kRazzy R

1

당신처럼, 나는 스크린 세션을 죽이고 싶었고 문서가 도움이되지 않았다는 것을 알았습니다. 키보드 단축키 가 있어야 한다고 확신
ctrl + a한 다음 \
작동합니다.

그런 다음 프롬프트가 나타납니다. "정말로 종료하고 모든 창을 죽이십시오 [y \ n]"

설명서를 말한다 이유는 확실하지 않다 ctrl + a다음 ctrl + \. 그것은 나를 위해 아무것도하지 않습니다.


1

연결된 실행 화면의 프로세스 ID를 찾을 수 있습니다. 명령으로 얻을 수있는 세션 ID와 동일하다는 것을 알았습니다.
screen -ls
그리고 다음 명령을 사용하여 해당 프로세스를 종료 할 수 있습니다 .
kill [sessionId]또는
sudo kill [sessionId]
다른 터미널 창에 연결된 경우에도 화면을 종료 할 수 있습니다.


0

ctrl + d를 눌러 화면 창을 종료하십시오. 모든 화면 창을 종료 할 때까지이 과정을 반복하십시오. 모든 윈도우 화면이 소진되면 세션이 종료되고 종료됩니다. 창이없는 경우 가장 짧은 솔루션

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