ฆ่าเซสชั่นหน้าจอ


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

ฉันควรจะกด "ควบคุม" แล้ว "ควบคุม \" ฉันทำอย่างนั้นและไม่มีอะไรเกิดขึ้น

อีกวิธีแก้ปัญหากล่าวว่ากดCtrl+ aและพิมพ์: ออกจาก อย่างไรก็ตามอีกครั้งมันไม่ได้ทำอะไรเลย ในความเป็นจริงการกดcontrol+ aไม่มีอะไรเกิดขึ้นหลังจากนั้นอย่างแน่นอนยกเว้นข้อความ "ไม่มีหน้าต่างอื่น"


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ถ้าคุณคัดลอก
มาร์ติน Thoma

8

นี่จะฆ่าหน้าจอเดี่ยวทั้งหมด:

หน้าจอ -ls | grep แฝด ตัด -d -f1 | awk '{พิมพ์ $ 1}' | xargs kill

การดำเนินการนี้จะฆ่าทุกหน้าจอแนบหรือแยกออก

หน้าจอ -ls | grep pts | ตัด -d -f1 | awk '{พิมพ์ $ 1}' | xargs kill

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

คุณสามารถค้นหารหัสกระบวนการของหน้าจอการทำงานที่แนบมา ฉันพบว่ามันเหมือนกับ session id ที่คุณสามารถใช้คำสั่ง:
screen -ls
และคุณสามารถใช้คำสั่งต่อไปนี้เพื่อฆ่าโพรเซสนั้น:
kill [sessionId]หรือ
sudo kill [sessionId]
คุณสามารถฆ่าหน้าจอแม้ว่ามันจะติดอยู่ที่หน้าจอเทอร์มินัลอื่นก็ตาม


0

กด ctrl + d เพื่อฆ่าหน้าต่างหน้าจอ ทำซ้ำสิ่งนี้จนกว่าคุณจะฆ่าหน้าต่างหน้าจอทั้งหมด เมื่อคุณหมดหน้าจอ windows ทั้งหมดจะฆ่าเซสชันและยกเลิก ทางออกที่สั้นที่สุดหากคุณไม่มีหน้าต่างหลายบาน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.