मैंने गलती से 1000 से अधिक स्क्रीन बनाई। मैं उन सभी को एक आदेश के साथ कैसे मारूं? (या कुछ)
screen -ls | grep "<name>" | cut -d. -f1 | tr --delete "\t" | xargs kill -9; screen -wipe; screen -ls;
मैंने गलती से 1000 से अधिक स्क्रीन बनाई। मैं उन सभी को एक आदेश के साथ कैसे मारूं? (या कुछ)
screen -ls | grep "<name>" | cut -d. -f1 | tr --delete "\t" | xargs kill -9; screen -wipe; screen -ls;
जवाबों:
आप उपयोग कर सकते हैं :
pkill screen
या
killall screen
OSX में प्रक्रिया को सभी कैप्स में SCREEN कहा जाता है। तो, उपयोग करें:
pkill SCREEN
या
killall SCREEN
Top
हाल ही में जागृत के साथ खुद को परिचित करना शुरू कर दिया है मैंने इसे एक साथ रखा और इसने अपने उद्देश्य को पूरा किया। मैं इसे काफी आसान समझने के बाद से पोस्ट करता हूं।
screen -ls | grep '(Detached)' | awk 'sys {screen -S $1 -X quit}'
जहां screen -ls
सभी वर्तमान स्क्रीन सूचीबद्ध हैं।
grep 'pattern'
सभी मिलान पंक्तियों को फ़िल्टर करता है। फिर हम सभी अलग-अलग स्क्रीन के लिए एक हैंडल प्राप्त कर सकते हैं और awk sys {command}
हम एक कमांड के साथ कॉपी और पेस्ट कर सकते हैं और इसके साथ निष्पादित कर सकते हैं sys
, $1
जो कि awk द्वारा उठाए गए पहले तर्क को संदर्भित करता है। अंत में हम छोड़ दिया कमांड के साथ निष्पादित करते हैं screen -X quit
।
screen -ls | grep '(Detached)' | awk '{print $1}' | xargs -I % -t screen -X -S % quit
मेरे लिए बेहतर काम किया।
मैं थोड़ा हैरान हूं कि आप 1000 "स्क्रीन" कैसे बना पाए। क्या आप शायद 1000 स्क्रीन विंडो (सिंगल स्क्रीन सत्र के भीतर 1000 अलग टर्मिनल विंडो) का मतलब है?
यदि आपके पास एकल स्क्रीन सत्र के भीतर 1000 खिड़कियां हैं, तो कमांड का उपयोग करके स्क्रीन छोड़ने के लिए एक अधिक सुरुचिपूर्ण समाधान होगा C-a \
(ctrl-a और उसके बाद)।
screen -m sleep 100000
। यह हुआ और मैंने तब तक ध्यान नहीं दिया जब तक कि यह 1000 से अधिक स्क्रीन सत्र नहीं बना चुका था।
for scr in $(screen -ls | awk '{print $1}'); do screen -S $scr -X kill; done
screen -ls | grep Detached | cut -d. -f1 | awk '{print $1}' | xargs kill