मैं एक चल रहे एप्लिकेशन को कैसे हाइबरनेट कर सकता हूं?


16

उदाहरण उपयोग मामला:

मैं क्रोमियम को टैब के एक जोड़े के साथ चलाता हूं और यह तय करता हूं कि मुझे अगले 20 मिनट तक एप्लिकेशन को एक्सेस करने की आवश्यकता नहीं है। लैपटॉप की बैटरी के समय को संरक्षित करने के लिए, मैं एप्लिकेशन को बंद करने के बिना क्रोमियम (फ्रीज) को हाइबरनेट (फ्रीज) करना चाहूंगा (सभी टैब को फिर से लोड करना और पुनः लोड करना समय की आवश्यकता है जिसे मैं हाइबरनेट करके बचाना चाहूंगा)।


1
दूसरा उत्तर यहां देखें: stackoverflow.com/questions/2134771/… । बात यह है कि क्रोमियम कई पीआईडी ​​का उपयोग कर रहा है और जो आप इसे खोलते हैं हर बार अलग होते हैं ... लेकिन मुख्य एक (प्रक्रिया प्रबंधक में मूल आइकन वाला) को रोकना ठीक काम करता प्रतीत होता है।

1
यदि आप केवल क्रोमियम के बारे में परवाह करते हैं और किसी भी अन्य अनुप्रयोगों के बारे में नहीं, तो आप टैब प्रबंधन के लिए डिज़ाइन किए गए क्रोमियम एक्सटेंशन का उपयोग कर सकते हैं, जैसे वनटैब या सेशन बडी
मोशे कटज़

धन्यवाद, लेकिन मुझे लगता है कि killallसमाधान वास्तव में सुरुचिपूर्ण है। :)
ओरसिच्रो

जवाबों:


22

आप उन्हें फ्रीज करने के लिए दिए गए नाम से मेल खाती सभी प्रक्रियाओं के लिए killallएक SIGSTOPसंकेत भेजने के लिए कमांड का उपयोग कर सकते हैं और बाद में SIGCONTउन्हें फिर से पिघलाने के लिए उसी तरह से भेज सकते हैं ।

पहले प्रक्रिया नाम का उपयोग करके पता करें pgrep -l SEARCH_PATTERN:

$ pgrep -l chrom
13010 chromium-browse
13036 chromium-browse
13038 chromium-browse
13153 chromium-browse
13166 chromium-browse
13169 chromium-browse
13175 chromium-browse
13187 chromium-browse
13195 chromium-browse
13206 chromium-browse

ध्यान दें कि यह लंबे नामों को ट्रिम कर देगा, इसलिए rगायब है। लेकिन यह एक समस्या नहीं है क्योंकि आप Tabप्रक्रिया नाम दर्ज करने के लिए पूरा करने का उपयोग कर सकते हैं जो इसे स्वचालित रूप से पूरा करेगा।

फिर आप इस तरह SIGSTOPनामित सभी प्रक्रियाओं को संकेत भेजते हैं chromium-browser:

$ killall -s STOP chromium-browser 

क्रोमियम विंडो धूसर हो जाएगी मानो वह अनुत्तरदायी हो गई हो। खैर, यह वास्तव में अनुत्तरदायी बन गया, इसलिए यह उम्मीद की जानी थी। अब आप किसी भी तरह से विंडो के साथ बातचीत नहीं कर सकते हैं (मेनू बार को छोड़कर और कम से कम करने के लिए आदि) जो विंडो मैनेजर द्वारा नियंत्रित किया जाता है और एप्लिकेशन को स्वयं नहीं)। लेकिन बटन आदि पर क्लिक करने से होने वाली घटनाएँ अभी भी उत्पन्न होती हैं और एप्लिकेशन की ईवेंट कतार में जोड़ दी जाती हैं, इसलिए जब आप फिर से आवेदन को रद्द करेंगे, तो वे सभी एक ही बार में संसाधित हो जाएंगे!

आप इस आदेश को फिर से चलाकर इस आदेश को फिर से लागू करते हैं SIGCONTजो निर्दिष्ट प्रक्रियाओं को संकेत भेजता है:

$ killall -s CONT chromium-browser 

कभी-कभी किसी एप्लिकेशन को इस तरह से फ्रीज करने से यह दुर्घटना का कारण बन सकता है, इसलिए सुनिश्चित करें कि किसी एप्लिकेशन को फ्रीज करने से पहले महत्वपूर्ण सामान को बचा लिया जाए।

दुर्लभ मामलों में भी डेस्कटॉप वातावरण / विंडो मैन्जर / जो कुछ भी हो सकता है और साथ ही गैर-जिम्मेदार हो सकता है। इस मामले में आपको एक TTY के माध्यम से जमे हुए आवेदन को पिघलना होगा:

TTY1 पर जाने के लिए Ctrl+ Alt+ दबाएँ F1। आपको लॉग इन करने के लिए कहा जाएगा, इसलिए अपना उपयोगकर्ता नाम और पासवर्ड दर्ज करें। फिर एप्लिकेशन को उसी तरह से चलाने के लिए कमांड को चलाएं जिस तरह से आप इसे अपने सामान्य टर्मिनल एमुलेटर के माध्यम से चलाएंगे। डेस्कटॉप (TTY7) करने के लिए है कि स्विच वापस इस्तेमाल करने के बाद Ctrl+ Alt+ F7और आप ठीक फिर से होना चाहिए।


4
के बाद से आप के साथ शुरू कर दिया pgrepहै, तो आप के साथ जारी रखा जा सकता थाpkill
muru

1
हालाँकि, एप्लिकेशन के क्रैश होने का जोखिम SIGSTOPमौजूद है, मैं कहूंगा कि यह मामूली है। मैंने अक्सर इसे क्रोमियम पर उपयोग किया है, और मुझे याद नहीं है कि कभी दुर्घटना का कारण रहा हो।
कास्परड

मैंने smtg नया सीखा है! killall! ;-)
Fabby

8

निलंबित करने के लिए, प्रयास करें: killall -SIGTSTP chromium-browser

यदि यह काम नहीं करता है, तो जबरदस्ती संस्करण का प्रयास करें killall -SIGSTOP chromium-browser:।

किसी भी तरह से, उपयोग जारी रखने के लिए killall -SIGCONT chromium-browser। मैंने फ़ायरफ़ॉक्स के साथ कोशिश की और यह काम कर गया। हालाँकि, ध्यान दें कि यदि आप क्रोमियम में बटन पर क्लिक करते हैं, तो इसे निलंबित करने के बाद, यह निष्पादित होने पर उस सामान को निष्पादित कर देगा।


3
मेरे लिए SIGSTOP / SIGCONT काम करता है, बस chromium-browserप्रक्रिया नाम के रूप में दर्ज करने की आवश्यकता है । +1
ग्रेगड

1
या google-chromeयदि आप Google क्रोम का उपयोग करते हैं, क्योंकि अंतर स्पष्ट रूप से भ्रमित है
बिल्ली

2

आप निम्नलिखित प्रयास कर सकते हैं (एक टर्मिनल में):

ps aux | grep gedit

फिर आपको कुछ इस तरह दिखाई देगा:

barend    7166  5.3  1.0 722620 39044 ?        Sl   16:19   0:00 gedit

संख्या 7166 (या जो भी संख्या है) लिखें और फिर करें:

kill -STOP 7166

यह प्रक्रिया के निष्पादन को निलंबित करेगा। यह इसके द्वारा उपयोग की जाने वाली मेमोरी को तुरंत मुक्त नहीं करेगा, लेकिन मेमोरी अन्य प्रक्रियाओं के लिए उपलब्ध होगी यदि उन्हें इसकी आवश्यकता है।

फिर करो

kill -CONT 7166 कार्यक्रम के साथ फिर से काम करने के लिए।

ध्यान दें कि आपको 7166 को बदलना होगा जहाँ उपयुक्त हो।

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