एक स्क्रीन सत्र को मार डालो


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

मैं "a" और फिर "control \" दबाने वाला हूं। मैं ऐसा करता हूं और कुछ नहीं होता है।

एक अन्य समाधान ने Ctrl+ aऔर टाइप: प्रेस करने के लिए कहा । हालाँकि, फिर से यह कुछ भी नहीं करता है। वास्तव में, control+ दबाने पर a, "नो अदर विंडो" संदेश के अलावा बिल्कुल कुछ नहीं होता है


1
स्क्रीन v4.x में, सभी सत्रों को मारने के लिए,ps aux | grep "SCREEN" | awk '{print $2}' | xargs kill
फ्रेड्रिक गॉस

2
रिकॉर्ड के लिए, आप पूर्ण स्ट्रिंग को शामिल करने के बजाय बस कर सकते हैं screen -r porkypigया कर सकते screen -r 23520हैं। स्क्रीन के नाम चीजों को आसान बनाने के लिए हैं, न कि अधिक जटिल।
मिकेल

जवाबों:


73

पहले आपको स्क्रीन सेशन को फिर से संलग्न करना होगा
screen -r 23520जैसा आपने किया है। फिर ctrl+ aऔर फिर एक पूंजी Kदबाएं और yयह पूछें कि क्या आप सत्र को मारना चाहते हैं


2
यह काम करता है अगर स्क्रीन के अंदर चलने वाली प्रक्रिया में कोई समस्या है, लेकिन स्क्रीन के साथ समस्या होने पर नहीं। यह समय का 99% मामला है, और सभी खिड़कियों को समाप्त करने के बजाय स्क्रीन के भीतर केवल एक खिड़की को प्रभावित करने का अतिरिक्त लाभ है।
मिककेल 14

1
यह एक खिड़की को मारने के लिए है, एक सत्र नहीं
एरिक वांग

53

आप उस स्क्रीन को बिना अटैच किए छोड़ सकते हैं। सबसे पहले, इसका सत्र खोजें:

$ screen -ls

और फिर इसे छोड़ दिया:

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

-X = एक्सक्यूट कमांड, -S सत्र PID को निष्पादित करने के लिए)

[अपडेट करें]

उदाहरण:

screen -XS 20411 quit

1
यह बहुत सरल था। आप इसे -XS -XS
AJ के

2
यदि आप इसे कॉपी करते हैं, तो आपको क्रेडिट का जवाब देना चाहिए।
मार्टिन थूमा

8

यह सभी अलग स्क्रीन को मार देगा:

स्क्रीन-पर्ल | grep अलग | कटौती-डी। -f1 | awk '{प्रिंट $ 1}' | xargs मार डालते हैं

यह सभी स्क्रीन को मार देगा, संलग्न या अलग कर देगा

स्क्रीन-पर्ल | grep pts | कटौती-डी। -f1 | awk '{प्रिंट $ 1}' | xargs मार डालते हैं

7

तो उन सभी आधिकारिक सुझावों के साथ, बस कुछ आसान करने के लिए, और बस के रूप में प्रभावी है, और अधिक सीधे आगे की तरह।

pkill screen

कौन एक अज्ञात और गैर-जरूरी स्क्रीन में जाना चाहता है, जो कि एक जोड़े के आदेशों को दबाने के लिए है, जो शायद ही याद हो? यह बिल्कुल इसमें जाने से बचता है, और इसे सीधे मार देता है।

इसके अलावा, अगर आपके पास एक से अधिक है, तो यह उन सभी को एक झपट्टा में ले जाएगा।


1
ध्यान दें कि यह सभी रनिंग स्क्रीन को मार देगा, जो आप चाहते हैं या नहीं हो सकता है।
मिकेल 14

एक अच्छा विकल्प नहीं। कुछ समय से कर रहा हूं। कभी-कभी यह बुरे व्यवहार का कारण बनता है (जैसे आपके उपयोगकर्ता खाते से तुरंत लॉग आउट करना)। इसके अलावा, जैसा कि @Mikkel ने उल्लेख किया है, यह आपके सभी स्क्रीन को बंद करने का कारण बन सकता है, जो आप चाहते हैं वह नहीं होगा। कभी-कभी आपको कुछ चालू रखने की आवश्यकता होती है (जैसे कुछ सिस्टम द्वारा चल रहे हैं) और कुछ अन्य स्क्रीन को रोकना।
मितीगर्भा

2

स्क्रीन अपडेट करते समय मुझे इस समस्या का सामना करना पड़ा। screenआदेश लटका जब सत्र फिर से अनुलग्न, चाहे कितने का प्रयास कर रहा होगा -Dया -Rमैं आदेश को जोड़ा गया। हालाँकि, screen -lsआपको सत्र की सुगमता प्रदान करता है, जिससे आप निम्नलिखित का उपयोग कर हस्तक्षेप कर सकते हैं:

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.

(यह ब्रायन थॉमस के जवाब के समान है, लेकिन उनकी सभी रनिंग स्क्रीन सत्रों को मार देगी, जो कि आप नहीं चाहते कि आपके पास कई स्क्रीन खुली हों लेकिन केवल एक दुर्व्यवहार हो।)


6 घंटे के बाद पूरे इंटरनेट पर मेरा सिर फोड़ना ... आपका एक ही जवाब था कि काम किया। धन्यवाद दोस्त!
kRazzy R

1

आप की तरह, मैं अपने स्क्रीन सेशन को मारना चाहता था और डॉक्यूमेंट को अनहेल्दी पाया। माना जाता है कि एक कीबोर्ड शॉर्टकट होना चाहिए, मैंने पाया कि
ctrl + aतब \
काम करता है

मुझे तब संकेत मिलता है: "वास्तव में अपनी सभी खिड़कियाँ छोड़ दो और मार डालो [y \ n]"

मुझे यकीन है कि क्यों प्रलेखन कहते हैं नहीं कर रहा हूँ ctrl + aतो ctrl + \। यह मेरे लिए कुछ नहीं करता है।


1

आप संलग्न स्क्रीन की प्रक्रिया आईडी पा सकते हैं। मैंने इसे सत्र आईडी के समान पाया, जिसे आप कमांड द्वारा प्राप्त कर सकते हैं:
screen -ls
और आप उस प्रक्रिया को मारने के लिए निम्न आदेश का उपयोग कर सकते हैं:
kill [sessionId]या
sudo kill [sessionId]
आप स्क्रीन को मार सकते हैं, भले ही यह किसी अन्य टर्मिनल विंडो पर संलग्न हो।


0

स्क्रीन विंडो को मारने के लिए ctrl + d दबाएं। इसे तब तक दोहराएं जब तक कि आप सभी स्क्रीन विंडो को न मार दें। एक बार जब आप भाग गए तो सभी विंडो स्क्रीन सत्र को समाप्त कर देगी। यदि आपके पास बहुत सी खिड़कियां नहीं हैं, तो सबसे छोटा समाधान

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.