giết một phiên màn


65

Tôi đang cố giết một phiên màn hình. Tôi nhận thấy rất nhiều câu hỏi liên quan khác, nhưng không có câu trả lời nào phù hợp với tôi. Tôi đang cố gắng để giết phiên sau:

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

Bây giờ tôi đang trong phiên. Theo tài liệu:

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

Tôi phải nhấn "control a" và sau đó "control \". Tôi làm điều đó và không có gì xảy ra.

Một giải pháp khác nói nhấn Ctrl+ avà gõ: thoát. Tuy nhiên, một lần nữa nó không làm gì cả. Trên thực tế, nhấn control+ a, hoàn toàn không có gì xảy ra sau đó ngoại trừ một thông báo "Không có cửa sổ khác"


1
trong màn hình v4.x, để tiêu diệt tất cả các phiên,ps aux | grep "SCREEN" | awk '{print $2}' | xargs kill
Fredrick Gauss

2
Đối với bản ghi, bạn chỉ có thể làm screen -r porkypighoặc screen -r 23520, thay vì phải bao gồm chuỗi đầy đủ. Tên màn hình được cho là để làm cho mọi thứ dễ dàng hơn, không phức tạp hơn.
Mikkel

Câu trả lời:


73

đầu tiên bạn cần phải gắn lại vào phiên màn hình
screen -r 23520như bạn đã làm. Sau đó nhấn ctrl+ avà sau đó viết hoa Kvà nhấn ykhi nó hỏi bạn có thực sự muốn giết phiên không


2
Điều này hoạt động nếu có vấn đề với một quá trình chạy bên trong màn hình, nhưng không có vấn đề gì với chính màn hình. Đó là trường hợp 99% thời gian và có thêm lợi ích là chỉ ảnh hưởng đến một cửa sổ duy nhất trong màn hình thay vì chấm dứt tất cả các cửa sổ.
Mikkel

1
Đó là giết một cửa sổ, không phải là một phiên
Eric Wang

53

Bạn có thể thoát khỏi màn hình đó mà không cần gắn vào nó. Đầu tiên, tìm phiên của nó:

$ screen -ls

và sau đó bỏ nó:

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

(-X = Thực thi lệnh, -S phiên PID để thực thi trên)

[CẬP NHẬT]

Thí dụ:

screen -XS 20411 quit

1
Điều này khá đơn giản. Bạn có thể đơn giản hóa nó nhiều hơn bằng cách kết hợp -X -S với -XS
AJ.

2
Bạn nên ghi có vào câu trả lời innaM nếu bạn sao chép nó
Martin Thoma

8

Điều này sẽ giết tất cả các màn hình tách ra:

màn hình -ls | grep tách ra | cắt -d. -f1 | awk '{in $ 1}' | giết chết

Điều này sẽ giết tất cả các màn hình, gắn hoặc tách ra

màn hình -ls | grep pts | cắt -d. -f1 | awk '{in $ 1}' | giết chết

7

Vì vậy, với tất cả những gợi ý chính thức đó, chúng ta hãy tìm kiếm thứ gì đó dễ dàng hơn, và hiệu quả, và loại thẳng hơn.

pkill screen

Ai muốn vào một màn hình không xác định và không cần thiết chỉ để nhấn vào một vài lệnh mà hầu như không thể nhớ được? Điều này tránh đi vào tất cả, và giết chết nó ngay lập tức.

Thêm vào đó, nếu bạn có nhiều hơn một, điều này sẽ đưa tất cả chúng trong một cú trượt ngã.


1
Lưu ý rằng điều này sẽ giết tất cả các màn hình đang chạy, có thể hoặc không thể là những gì bạn muốn.
Mikkel

Không phải là một lựa chọn tốt. Tôi đã làm điều đó một thời gian. Đôi khi, nó gây ra các hành vi xấu (ví dụ: đăng xuất khỏi tài khoản người dùng của bạn ngay lập tức). Ngoài ra, như @Mikkel đã đề cập, nó có thể gây ra việc đóng tất cả các màn hình của bạn, đây không phải là điều bạn muốn. Đôi khi bạn cần tiếp tục chạy một số (ví dụ một số đang chạy bởi hệ thống) và dừng một số màn hình khác.
MAChitgarha

2

Tôi gặp phải vấn đề này khi cập nhật màn hình. Các screenlệnh sẽ treo khi cố gắng lắp lại phiên giao dịch, bất kể có bao nhiêu -Dhoặc -Rtôi thêm vào lệnh. Tuy nhiên, screen -lsthuận tiện cung cấp pid của phiên, cho phép bạn can thiệp bằng cách sử dụng như sau:

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.

.


Sau 6 giờ phá vỡ đầu tôi trên internet ... bạn là câu trả lời duy nhất có hiệu quả. Cảm ơn bạn đời!
kRazzy R

1

Giống như bạn, tôi muốn giết phiên màn hình của mình và thấy tài liệu này không có ích. Tin tưởng rằng phải có một phím tắt, tôi thấy rằng
ctrl + asau đó \
hoạt động

Sau đó tôi nhận được lời nhắc: "Thực sự thoát và giết tất cả các cửa sổ của bạn [y \ n]"

Tôi không chắc tại sao các tài liệu nói ctrl + asau đó ctrl + \. Điều đó không làm gì cho tôi.


1

Bạn có thể tìm thấy id quá trình của màn hình đang chạy. Tôi thấy nó giống như id phiên mà bạn có thể nhận được bằng lệnh:
screen -ls
Và bạn có thể sử dụng lệnh sau để giết tiến trình đó:
kill [sessionId]hoặc
sudo kill [sessionId]
Bạn có thể tắt màn hình ngay cả khi nó được gắn trên một số cửa sổ đầu cuối khác.


0

Nhấn ctrl + d để tắt cửa sổ màn hình. Lặp lại điều này cho đến khi bạn giết tất cả các cửa sổ màn hình. Một khi bạn chạy ra tất cả màn hình windows sẽ giết phiên và chấm dứt. Giải pháp ngắn nhất nếu bạn không có nhiều cửa sổ

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.