Giết phiên màn hình tách ra [đóng]


864

Tôi đã học được từ đâu đó một màn hình tách rời có thể bị giết bởi

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

nơi [phiên # bạn muốn giết] có thể được lấy từ

screen -ls

Nhưng điều này không làm việc. Có gì sai? Cách chính xác là gì?


25
"Một nơi nào đó" không phải lúc nào cũng là một nguồn thông tin tốt. Hãy thử "màn hình người đàn ông".
innaM

27
Lệnh đúng làscreen -S sessionname -p 0 -X quit
jimmetry

killall - # screen [# = số màn hình bạn muốn giết]
CArnold

Tôi chỉ đơn giản là sử dụng lối ra
TPArrow

CTRL + D khi trong màn hình là lệnh dễ nhất.
Don King

Câu trả lời:


1267

"giết" sẽ chỉ giết một cửa sổ màn hình. Để "giết" phiên hoàn chỉnh, sử dụng quit.

Thí dụ

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

Đối với phiên chết, sử dụng: $ screen -wipe


112
gõ 'exit' (không có dấu ngoặc kép) trong
ubfox

16
exithoạt động nhưng cần phải được gõ vào từng màn hình đã được mở. quitthậm chí không hoạt động
kapad

4
@kapad thực sự bỏ công việc nếu bạn viết nội tuyến -X -S pid / sockname thoát
Eduard

20
trên OSX, việc nhập screen -X quitbất kỳ thiết bị đầu cuối nào cũng chấm dứt tất cả các phiên hoạt động
Michel

5
Ctrl + D cũng hoạt động
Yi Xin

499

Bạn có thể giết một phiên tách ra mà không phản hồi trong phiên màn hình bằng cách làm như sau.

  1. Nhập screen -listđể xác định phiên màn hình tách ra.

    ~ $ màn hình danh sách  
        Có màn hình trên:  
             20751.Melvin_Peter_V42 (tách ra)  
    

    Lưu ý: 20751.Melvin_Peter_V42là id phiên của bạn.

  2. Được gắn vào phiên màn hình tách ra

    màn hình -r 20751.Melvin_Peter_V42
  3. Sau khi kết nối với phiên nhấn Ctrl+ Arồi gõ:quit


20
bạn chỉ có thể sử dụng màn hình -r 20751 mà không có tên đầy đủ
Gal Bracha

53
hoặc: Ctrl + a, k
laffuste

@laffuste 's comment làm việc cho tôi, nhưng quit:quitdẫn đến command not foundtrên máy chủ Linux từ xa của tôi (có lẽ sự khác biệt giữa các phiên bản của hệ điều hành hoặc màn hình là để đổ lỗi)
Hack-R

một khi được gắn vào màn hình, exitcũng hoạt động
PankajKabra

145

Danh sách màn hình:

screen -list

Đầu ra:

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.

Giết phiên màn hình:

screen -S 23536 -X quit

1
'Màn hình -ls' cũng hoạt động. ;)
Atul Vaibhav

113

Việc giết một phiên dễ dàng hơn, khi một số tên có ý nghĩa được đưa ra:

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

Tại sao screen -Svà không screen -r?
43Tesseracts

1
Câu trả lời này sử dụng tên của phiên, thuận tiện hơn nhiều so với tra cứu ID. Cảm ơn bạn!
Paul Kenjora

43

Bạn chỉ có thể đến nơi đặt phiên màn hình và chạy:

 screen -ls

kết quả trong

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

Và chỉ cần loại bỏ nó:

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

Thư mục uscreenssẽ không có 26727.pts-0.devxxxtập tin trong đó nữa. Bây giờ để đảm bảo chỉ cần gõ này:

screen -ls

và bạn sẽ nhận được:

Không tìm thấy ổ cắm nào trong / tmp / uscreen / S-xxx.


4
Đây là giải pháp duy nhất sẽ hoạt động nếu màn hình bị "kẹt", tức là. không chết, nhưng không thể gắn vào.
redreinard

Điều này giúp tôi khi màn hình bị khóa hoàn toàn, nhưng tôi cũng cần phải tìm và giết quá trình thực tế. ps aux | grep screentìm thấy pid và tôi đã ban hành killđể loại bỏ nó. Tùy thuộc vào những gì bạn đã chạy trong màn hình của bạn, bạn cũng có thể có các tệp tạm thời và khóa để dọn dẹp.
Lomky


23

thêm cái này vào ~/.bashrc:

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

Sau đó sử dụng cleanscreenđể làm sạch tất cả các phiên màn hình.


11
Một lớp lót đơn giản:screen -ls | grep Detached | cut -d. -f1 | awk '{print $1}' | xargs kill
Ariel

3
Đã thực hiện một điều trị, nhưng phải sửa đổi nó một chút để hoạt động trên OSX: screen -ls | tail +2 | head -2 | awk '{print $1}'| xargs -I{} screen -S {} -X quit
Jonathan

Cải thiện nhẹ: -screen -ls | grep đính kèm | cắt -d. -f1 | awk '{in $ 1}' | xargs -I {} màn hình -d {}
Abhay Yadav


16

Để tắt tất cả các phiên màn hình tách rời, hãy đưa chức năng này vào .bash_profile của bạn:

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

để chạy nó, gọi killd


5
Đôi khi, nó không phải là 5 chữ số, vì vậy tôi sử dụng: killd () {cho phiên bằng $ (screen -ls | grep -o '[0-9] \ +') làm màn hình -S "$ {session}" -X thoát; xong}
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.

Không phải chỉ cần loại bỏ ổ cắm, không giết quá trình đằng sau nó?
Martin C.

Là phương pháp này có rủi ro từ quan điểm tạo ra các quy trình zomby?
Fedir RYKHTIK

5

Ngoài ra, trong khi trong phiên màn hình của bạn, tất cả những gì bạn phải làm là nhập thoát

Điều này sẽ giết phiên shell được khởi tạo bởi màn hình, giúp chấm dứt hiệu quả phiên màn hình bạn đang bật.

Không cần bận tâm với id phiên màn hình, v.v.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.