मैं सभी स्क्रीन कैसे मारूं?


74

मैंने गलती से 1000 से अधिक स्क्रीन बनाई। मैं उन सभी को एक आदेश के साथ कैसे मारूं? (या कुछ)


3
रन ->screen -ls | grep Detached | cut -d. -f1 | awk '{print $1}' | xargs kill
sactiw

अच्छा विचार @sactiw मैंने इसे अपने नामित सत्रों के साथ काम करने के लिए संशोधित किया, और आदेशों को वरीयता के लिए थोड़ा बदल दिया, सत्रों को पूरी तरह से साफ कर दिया जब वे मेरे लिए 'अटक गए' थे जैसे कि वे मेरे लिए थे, और उपयोगकर्ता के लिए फिर से एक सूची की जाँच करें:screen -ls | grep "<name>" | cut -d. -f1 | tr --delete "\t" | xargs kill -9; screen -wipe; screen -ls;
Pysis

3
आपने गलती से 1000 स्क्रीन कैसे बनाई?
दुहाई

जवाबों:


94

आप उपयोग कर सकते हैं :

pkill screen

या

killall screen

OSX में प्रक्रिया को सभी कैप्स में SCREEN कहा जाता है। तो, उपयोग करें:

pkill SCREEN

या

killall SCREEN

2
इस मामले में SIGKILL का उपयोग करने की अनुशंसा नहीं की गई है। SIGTERM एक बेहतर विकल्प होगा।
मार्को

हाय, राहुल पाटिल। क्यों स्क्रीन सूचीबद्ध नहीं हैTop
user15964

यदि मेरे पास अनुमति नहीं है तो क्या होगा? क्या मुझे व्यक्तिगत रूप से व्यक्तिगत रूप से सभी स्क्रीनों पर जाना और बाहर निकलना होगा?
हिपोग्लुसीडो

13

यदि स्क्रीन मृत हैं, तो उपयोग करें:

screen -wipe


5

हाल ही में जागृत के साथ खुद को परिचित करना शुरू कर दिया है मैंने इसे एक साथ रखा और इसने अपने उद्देश्य को पूरा किया। मैं इसे काफी आसान समझने के बाद से पोस्ट करता हूं।

screen -ls | grep '(Detached)' | awk 'sys {screen -S $1 -X quit}'

जहां screen -lsसभी वर्तमान स्क्रीन सूचीबद्ध हैं। grep 'pattern'सभी मिलान पंक्तियों को फ़िल्टर करता है। फिर हम सभी अलग-अलग स्क्रीन के लिए एक हैंडल प्राप्त कर सकते हैं और awk sys {command}हम एक कमांड के साथ कॉपी और पेस्ट कर सकते हैं और इसके साथ निष्पादित कर सकते हैं sys, $1जो कि awk द्वारा उठाए गए पहले तर्क को संदर्भित करता है। अंत में हम छोड़ दिया कमांड के साथ निष्पादित करते हैं screen -X quit


1
screen -ls | grep '(Detached)' | awk '{print $1}' | xargs -I % -t screen -X -S % quit मेरे लिए बेहतर काम किया।
whereisalext

2

मैं थोड़ा हैरान हूं कि आप 1000 "स्क्रीन" कैसे बना पाए। क्या आप शायद 1000 स्क्रीन विंडो (सिंगल स्क्रीन सत्र के भीतर 1000 अलग टर्मिनल विंडो) का मतलब है?

यदि आपके पास एकल स्क्रीन सत्र के भीतर 1000 खिड़कियां हैं, तो कमांड का उपयोग करके स्क्रीन छोड़ने के लिए एक अधिक सुरुचिपूर्ण समाधान होगा C-a \(ctrl-a और उसके बाद)।


1
स्क्रीन के भीतर 1000x स्क्रीन निष्पादित करने का प्रयास करें। क्या होता है? आपको 1000 स्क्रीन विंडो मिलती हैं। हाँ, यह सही है, बुद्धिमानी से स्क्रीन और दयालुता से 1000 स्क्रीन सत्र नहीं होते हैं। तो अगर ओपी ने पहले ही स्क्रीन शुरू कर दी थी तो 1000 स्क्रीन सत्र शुरू करने की तुलना में गलती से 1000 स्क्रीन विंडो शुरू करना कहीं आसान होना चाहिए।
रेलगंज २

अजीब लेकिन मैं जिस टिप्पणी का जवाब दे रहा था वह गायब हो गई प्रतीत होती है। वैसे भी मैं उपरोक्त टिप्पणी को रिकॉर्ड के लिए खड़ा कर रहा हूं।
रेलगंज २

1
वैसे यह वास्तव में बहुत सरल है। बस एक अनंत लूप बनाएं (दुर्घटना से) और उसमें कुछ इस तरह से डालें screen -m sleep 100000। यह हुआ और मैंने तब तक ध्यान नहीं दिया जब तक कि यह 1000 से अधिक स्क्रीन सत्र नहीं बना चुका था।
ब्रेनस्टोन

0

निम्न आदेश सभी निष्क्रिय स्क्रीन को समाप्त करेगा:

perl -e 'while (map { kill 9, [split /\./]->[0] } grep { /Detached/ } split /\n/, qx{screen -ls}) { sleep 1 } exec qw(screen -wipe)'

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