मार डाला अलग स्क्रीन सत्र [बंद]


864

मुझे पता चला कि कहीं से एक अलग स्क्रीन को मार दिया जा सकता है

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

जहां [सत्र # आप को मारना चाहते हैं] से प्राप्त किया जा सकता है

screen -ls

लेकिन यह काम नहीं करता है। कुछ ग़लत है? सही तरीका क्या है?


25
"कहीं न कहीं" हमेशा जानकारी का एक अच्छा स्रोत नहीं होता है। "मैन स्क्रीन" आज़माएं।
इन्नाएम

27
सही कमांड हैscreen -S sessionname -p 0 -X quit
जिमीमेट्री

किलॉल - # स्क्रीन [# = जितने स्क्रीन को आप मारना चाहते हैं]
CArnold

मैं बस बाहर निकलें का
TPArrow

जब स्क्रीन में CTRL + D सबसे आसान कमांड है।
डॉन राजा

जवाबों:


1267

"मार" केवल एक स्क्रीन विंडो को मार देगा। पूर्ण सत्र को "मारने" के लिए, उपयोग करें quit

उदाहरण

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

मृत सत्र उपयोग के लिए: $ स्क्रीन -wipe



16
exitकाम करता है लेकिन प्रत्येक स्क्रीन में टाइप किया जाना चाहिए जिसे खोला गया था। quitकाम भी नहीं करता है
kapad

4
@ कपड़ वास्तव में काम छोड़ देते हैं अगर आप इसे इनलाइन लिखते हैं -S-pid / sockname छोडते हैं
Eduard

20
OSX screen -X quitपर किसी भी टर्मिनल पर प्रवेश करने पर सभी सक्रिय सत्र समाप्त हो जाते हैं
मिशेल

5
Ctrl + D भी काम करता है
Yi Xin

499

आप एक अलग सत्र को मार सकते हैं, जो निम्न करके स्क्रीन सत्र के भीतर जवाब नहीं दे रहा है।

  1. screen -listअलग स्क्रीन सत्र की पहचान करने के लिए टाइप करें।

    ~ $ स्क्रीन-सूची  
        स्क्रीन पर हैं:  
             20751. मल्विन_पेटर_वी 42 (अलग)  
    

    नोट: 20751.Melvin_Peter_V42आपका सत्र आईडी है।

  2. अलग स्क्रीन सत्र के लिए संलग्न हो जाओ

    स्क्रीन -r 20751. मेलविन_पेटर_वी .42
  3. एक बार सत्र प्रेस से जुड़ा Ctrl+ Aफिर टाइप करें:quit


20
आप बस स्क्रीन का उपयोग कर सकते हैं -r 20751 पूरे नाम के बिना
Gal Bracha

53
या: Ctrl + a, k
laffuste

@laffuste की टिप्पणी मेरे लिए काम किया, लेकिन quitऔर :quitकरने के लिए नेतृत्व command not foundमेरे दूरस्थ लिनक्स सर्वर पर (शायद ओएस या स्क्रीन के संस्करणों के बीच मतभेदों को दोष करने के लिए कर रहे हैं)
हैक आर

एक बार स्क्रीन पर संलग्न होने के बाद, exitयह भी काम करता है
पंकजकाबरा

145

सूची स्क्रीन:

screen -list

आउटपुट:

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.

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

screen -S 23536 -X quit

1
works स्क्रीन-हील्स ’भी काम करती है। ;)
अतुल वैभव

113

एक सत्र को मारना आसान है, जब कुछ सार्थक नाम दिया जाता है:

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

क्यों screen -Sऔर क्या नहीं screen -r?
43Tesseracts

1
यह उत्तर सत्र के नाम का उपयोग करता है, जो आईडी देखने की तुलना में अधिक सुविधाजनक है। धन्यवाद!
पॉल केंजोरा

43

आप बस उस स्थान पर जा सकते हैं जहाँ स्क्रीन सत्र रखा गया है और चला रहा है:

 screen -ls

जिसके परिणामस्वरूप

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

और बस इसे हटा दें:

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

uscreensनिर्देशिका के लिए नहीं होगा 26727.pts-0.devxxxअब और उस में फ़ाइल। अब यह सुनिश्चित करने के लिए कि यह टाइप करें:

screen -ls

और आपको मिलना चाहिए:

कोई सॉकेट / tmp / uscreens / S-xxx में नहीं मिला।


4
यह एकमात्र समाधान है जो स्क्रीन "अटक" है, तो काम करेगा। मृत नहीं है, लेकिन संलग्न नहीं किया जा सकता है।
Redreinard

इससे मुझे तब मदद मिली जब स्क्रीन पूरी तरह से बंद थी, लेकिन मुझे वास्तविक प्रक्रिया को भी खोजने और मारने की आवश्यकता थी। ps aux | grep screenपिड पाया और मैंने killइसे हटाने के लिए एक जारी किया। आपकी स्क्रीन में आपके पास जो चल रहा था, उसके आधार पर, आपके पास साफ करने के लिए अस्थायी फ़ाइलें और ताले हो सकते हैं।
लोमकी

29
screen -wipe

सभी मृत स्क्रीन सत्रों को साफ करना चाहिए ।


11
मृत का क्या मतलब है? कोई प्रोग्राम नहीं चल रहा है?
शियाओ जू

1
@ShihaoXu डेड का मतलब है कि सत्र अनुपलब्ध है और लोकलहोस्ट पर (सॉकेट कनेक्शन टूट गया है)। - gnu.org/software/screen/manual/screen.html
iBaff

23

इसे अपने में जोड़ें ~/.bashrc:

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

फिर cleanscreenसभी स्क्रीन सत्र को साफ करने के लिए उपयोग करें।


11
एक साधारण एक लाइनर:screen -ls | grep Detached | cut -d. -f1 | awk '{print $1}' | xargs kill
एरियल

3
एक इलाज का काम किया, लेकिन OSX पर काम करने के लिए इसे थोड़ा संशोधित करना पड़ा: screen -ls | tail +2 | head -2 | awk '{print $1}'| xargs -I{} screen -S {} -X quit
जोनाथन

थोड़ा सुधार: -स्क्रीन -ls | grep संलग्न | कटौती-डी। -f1 | awk '{प्रिंट $ 1}' | xargs -I {} स्क्रीन -d {}
अभय यादव


16

सभी अलग किए गए स्क्रीन सत्रों को मारने के लिए , इस फ़ंक्शन को अपने .bash_profile में शामिल करें:

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

इसे चलाने के लिए, कॉल करें killd


5
कभी-कभी यह 5 अंक नहीं होता है, इसलिए मैं उपयोग करता हूं: किलड () {सत्र में $ के लिए (स्क्रीन-पर्ल | ​​grep -o '[0-9] \ +') स्क्रीन -S "$ {सत्र}" -X छोड़ दें; किया}
कोस्ट्येंटिन

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.

ऐसा नहीं होगा कि सिर्फ सॉकेट को हटा दें, इसके पीछे की प्रक्रिया को न मारें?
मार्टिन सी।

क्या यह विधि ज़ोम्बी प्रक्रियाओं के निर्माण के दृष्टिकोण से जोखिम भरा है?
फेडिर RYKHTIK

5

वैकल्पिक रूप से, आपके स्क्रीन सत्र में, आपको बस इतना करना है कि बाहर निकलें

यह स्क्रीन द्वारा शुरू किए गए शेल सत्र को मार देगा, जो आपके द्वारा जारी किए गए स्क्रीन सत्र को प्रभावी ढंग से समाप्त कर देता है।

स्क्रीन सेशन आईडी आदि से परेशान होने की जरूरत नहीं

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