मैं pm-निलंबित के बजाय डिफ़ॉल्ट रूप से pm-निलंबित-हाइब्रिड का उपयोग कैसे करूं?


41

मैं ढक्कन को बंद करते समय या मेनू से "सस्पेंड" का चयन करते समय सस्पेंड के बजाय हाइब्रिड सस्पेंड विधि का उपयोग करना चाहूंगा।

मैं स्वचालित रूप से ऐसा करने के लिए pm- सस्पेंड स्क्रिप्ट को बदलने की कल्पना कर सकता हूं, लेकिन एक अधिक बनाए रखने योग्य / आसान तरीका हो सकता है।

जवाबों:


44

अप्रत्यक्ष संकर नींद

यह पुरानी विधि है: पहले स्थगित करें और फिर देरी के बाद हाइबरनेट करने के लिए उठें (डिफ़ॉल्ट रूप से 15 मिनट)। 3.6 से पहले लिनक्स कर्नेल के साथ इसका उपयोग करें, या यदि आपको यह पसंद है कि यह 15 मिनट के बाद किसी भी शक्ति का उपयोग नहीं करता है।

फ़ाइल जोड़ें /etc/pm/config.d/00-use-suspend-hybrid:

# Always use suspend_hybrid instead of suspend
if [ "$METHOD" = "suspend" ]; then
  METHOD=suspend_hybrid
fi
# The delay after which hibernation gets triggered (default: 900 seconds, 15 minutes):
PM_HIBERNATE_DELAY=900

आप यह सुनिश्चित करना चाहते हैं कि हाइब्रिड विधि आपके सिस्टम पर निम्न कोड के माध्यम से समर्थित है। अगर यह "0" कहता है तो यह काम करना चाहिए:

sudo pm-is-supported --suspend-hybrid && echo $?

लिनक्स 3.6+ के साथ रियल हाइब्रिड सस्पेंड

यदि आपके पास लिनक्स 3.6 कर्नेल है, तो आप निम्न का उपयोग कर सकते हैं, जो शुरुआत से डिस्क और रैम दोनों को निलंबित कर देगा।

फ़ाइल जोड़ें /etc/pm/config.d/00-use-suspend-hybrid:

# WORKAROUND: always set the default hibernate mode first (normal mode)
# (not required if you have the patch mentioned by Rohan below (http://askubuntu.com/a/344879/169))
HIBERNATE_MODE=platform

# Always use hibernate instead of suspend, but with "suspend to both"
if [ "$METHOD" = "suspend" ]; then
  METHOD=hibernate
  HIBERNATE_MODE=suspend
fi

# Make sure to use the kernel's method, in case uswsusp is installed etc.
SLEEP_MODULE=kernel

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

दोष यह है कि इस प्रक्रिया में अधिक समय लगता है (क्योंकि यह डिस्क को हमेशा हाइबरनेट करता है), और यह कि आपकी बैटरी लंबे समय तक चल सकती है (जैसे 12 घंटे के बाद)।


2
एक छोटा नोट, 'सुडो पीएम-सपोर्टेड-suspend-हाइब्रिड और& इको $' के बजाय, 'sudo pm-is-support -suspend-हाइब्रिड का उपयोग करें; इको $? ' के रूप में pm-is-समर्थित की वापसी मूल्य समर्थित है के लिए 0 है, और 1 के लिए नहीं है।
जेम्स कैकसी

1
@JamesCaccese: शेलस्क्रिप्ट की दुनिया में, 0 का अर्थ "सच" है और कुछ भी "झूठे" का अर्थ है। आपका स्क्रिप्टलेट काम करेगा, लेकिन मूल पोस्टर की स्क्रिप्ट उसी तरह से काम करेगी, जैसे समर्थित पर '0' प्रिंट करना और असमर्थित पर कुछ भी नहीं। यदि आप ऐसा कुछ चाहते हैं जो हमेशा समर्थित या असमर्थित कहे, तो कोशिश करें कि "sudo pm-is-support -suspend -brid && echo" समर्थित " इको "असमर्थित"
zanfur

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

यदि आप 16.04 का उपयोग कर रहे हैं, तो नीचे इस उत्तर को देखें।
कपड़

मेरे लिए एकमात्र गायब टुकड़ा resumeतर्क था /etc/default/grub.conf। एनवीडिया यूजर के रूप में भी मुझे सेट करना था nomodeset। मेरे मामले में भोजन की प्रविष्टि जिसके परिणामस्वरूप तो है: GRUB_CMDLINE_LINUX_DEFAULT="nomodeset resume=UUID=uuidofswappartition"। मत भूलना grub-update। और कुछ मॉड्यूल्स को /etc/pm/config.d/00-unload_modulesलाइन के साथ इतनी फाइल को अनलोड SUSPEND_MODULES="ath5k r8169"करना पड़ता है और यह सुनिश्चित करने के लिए कि मैं भी 00-यूज-सस्पेंड-हाइब्रिड का नाम बदलकर10-use-suspend-hybrid
mauron85

31

Ubuntu 18.04 एक समय पर विकल्प

में उबंटू 18.04 है एक नया समय का विकल्प है। में systemdavailiable एक नई विधा है suspend-then-hibernate। यह स्लीप मोड से शुरू होगा और फिर एक निश्चित समय के बाद हाइबरनेट मोड में परिवर्तित होगा।

में hybrid-sleepमोड, हाइबरनेट हिस्सा प्रभावी हो जाता है बैटरी गंभीर रूप से कम है और इस प्रणाली बन्द हो जाता है नीचे केवल जब।

इस फ़ंक्शन का उपयोग शुरू करने के लिए आपको /etc/systemd/sleep.confअगली सामग्री के साथ एक फ़ाइल बनाने की आवश्यकता है:

[Sleep]
HibernateDelaySec=3600

यह 1 घंटे की नींद के बाद नींद से हाइबरनेट हो जाएगा। आप HibernateDelaySecहाइबरनेट में देरी को बदलने के लिए संपादित कर सकते हैं।

सबसे पहले, परीक्षण करें कि क्या सस्पेंड-तब-हाइबरनेट सिस्टमड का उपयोग करके काम करता है

दबाकर टर्मिनल खोलें Ctrl+ Alt+ Tऔर दर्ज करें:

sudo systemctl suspend-then-hibernate

यदि यह काम करता है तो यह स्थायी हो जाता है।

  • निम्नलिखित काम करता है जब मैं ढक्कन को बंद करता हूं

/etc/systemd/logind.confअपने पसंदीदा संपादक का उपयोग करके फ़ाइल खोलें । आप के द्वारा अपने प्रशासनिक शक्ति आह्वान करने के लिए की आवश्यकता होगी sudo, gksudoया pkexecइस फ़ाइल को संपादित करने के लिए।

दो लाइनें खोजें:

#HandleSuspendKey=suspend
#HandleLidSwitch=suspend

ध्यान दें, इन पंक्तियों के साथ टिप्पणी #की गई है। suspendडिफ़ॉल्ट क्रिया है। निकालें #और परिवर्तन suspendकरने के लिए suspend-then-hibernateइन दो पंक्तियों में इतना है कि वे इस तरह दिखेगा:

HandleSuspendKey=suspend-then-hibernate
HandleLidSwitch=suspend-then-hibernate

फ़ाइल सहेजें। लॉग आउट करें और logindकमांड द्वारा वापस सेवा शुरू करें या फिर से शुरू करें:

systemctl restart systemd-logind.service

चेतावनी! आपका उपयोगकर्ता सत्र फिर से शुरू किया जाएगा

स्रोत: लिड क्लोज्ड सस्पेंड फिर हाइबरनेट

Ubuntu 16.04 और ऊपर

समाधान द्वारा blueyed रियल संकर लिनक्स 3.6+ के साथ निलंबित के लिए मेरे लिए काम नहीं किया। मुझे संदेह है कि क्योंकि Ubuntu 16.04 उपयोग करता है systemdऔर फ़ाइल का उपयोग नहीं करता है /etc/pm/config.d/00-use-suspend-hybrid

सबसे पहले, परीक्षण करें कि हाइबरनेट और हाइब्रिड-स्लीप सिस्टमड का उपयोग करके काम करता है

दबाकर टर्मिनल खोलें Ctrl+ Alt+ Tऔर दर्ज करें:

sudo systemctl hibernate

यह आपके कंप्यूटर को हाइबरनेट करना चाहिए। हाइब्रिड-स्लीप की कोशिश करने के लिए, दर्ज करें:

sudo systemctl hybrid-sleep

यदि यह काम करता है तो यह स्थायी हो जाता है।

  • निम्नलिखित काम करता है जब मैं ढक्कन को बंद करता हूं

/etc/systemd/logind.confअपने पसंदीदा संपादक का उपयोग करके फ़ाइल खोलें । आप के द्वारा अपने प्रशासनिक शक्ति आह्वान करने के लिए की आवश्यकता होगी sudo, gksudoया pkexecइस फ़ाइल को संपादित करने के लिए।

दो लाइनें खोजें:

#HandleSuspendKey=suspend
#HandleLidSwitch=suspend

ध्यान दें, इन पंक्तियों के साथ टिप्पणी #की गई है। suspendडिफ़ॉल्ट क्रिया है। निकालें #और परिवर्तन suspendकरने के लिए hybrid-sleepइन दो पंक्तियों में इतना है कि वे इस तरह दिखेगा:

HandleSuspendKey=hybrid-sleep
HandleLidSwitch=hybrid-sleep

फ़ाइल सहेजें। लॉग आउट करें और वापस लॉग इन करें।

ध्यान दें:

  • अन्य की तुलना में suspendया hybrid-sleepवहाँ एक तीसरा विकल्प है, hibernate
  • मेरे लैपटॉप में फिजिकल स्लीप बटन नहीं है। इसलिए मैं इसका परीक्षण नहीं कर सका।
  • Suspendकॉग मेनू से कंप्यूटर पर क्लिक करने से हाइब्रिड-स्लीप नॉर्मल सस्पेंड हो जाता है।

स्रोत: https://superuser.com/questions/719447/how-to-use-systemd-hybrid-sleep-instead-of-suspend-under-gnome-in-linux

आशा है कि ये आपकी मदद करेगा


2
इस उत्तर को और अधिक बढ़ाने की जरूरत है। 16.04 में मेरे लिए फिक्स्ड मुद्दे। धन्यवाद।
21

आपका स्वागत है। अब जब मैं १४.०४ से १६.०४ तक चला गया हूं, मैं चीजों को धीरे-धीरे समय के साथ व्यवस्थित करने का नया तरीका ढूंढ रहा हूं।
user68186

1
इसके अलावा उबंटू GNOME 16.04.1 के साथ काम करता है
हरलेमस्केलर

4

12.04 में मैंने देखा कि जब हाइबरनेशन को ट्रिगर (उपयोग करके PM_HIBERNATE_DELAY=XX) किया जाता है, तो शेल स्क्रिप्ट फिर से शुरू / पिघलना ग्रब रिकॉर्डफेल वेरिएबल को परेशान नहीं करता है। इसलिए ग्रब ऑटोबूट नहीं करता है।

टाइमआउट -1 पर सेट है और यह उपयोगकर्ता के चयन की प्रतीक्षा कर रहा है। मैं अनुमान लगा रहा हूं कि इसमें स्क्रिप्ट के कुछ संपादन की आवश्यकता है /etc/pm/sleep.d/10_grub-common। एक नौसिखिया हूँ तो मैं दुर्भाग्य से सटीक परिवर्तन का पता लगाने के लिए dabbled नहीं है।


1
अगर यह 12.10+ में काम करता है तो शायद और / या परीक्षण के लिए एक बग रिपोर्ट के लायक होगा।
blueyed

मैं 12.10 में वही समस्या देख रहा हूं
MDCore

3

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

यहां बताया गया है कि असली हाइब्रिड सस्पेंड कैसे करें :

  • शीर्ष उत्तर के पहले भाग का अनुसरण करें। यह "सस्पेंड" कॉल को "हाइब्रिड_सपेंड" करने के लिए शाम-बर्तनों में ओवरराइड करता है।
    % cat /etc/pm/config.d/00-use-suspend-hybrid
    # हमेशा सस्पेंड की जगह सस्पेंड_हाइब्रिड का इस्तेमाल करें
    अगर ["$ METHOD" = "सस्पेंड"]; फिर
        विधि = suspend_hybrid
    फाई
  • / Usr / lib / pm-utils / pm-functions का बैकअप बनाएं
  • यहाँ से पैच प्राप्त करें: https://bugs.freedesktop.org/attachment.cgi?id=68712
    • यदि उपलब्ध हो तो यह पैच हाइब्रिड सस्पेंड को सक्षम बनाता है (यानी कर्नेल पर 3.6+)
  • या तो 'पैच -p0' का उपयोग करके इसे लागू करें या यदि यह विफल रहता है तो इसे मैन्युअल रूप से मर्ज करें

यह विधि मेरे लिए मेरे Sony Vaio SVS पर काम करती है।

पुनश्च: यदि भविष्य में फ़ाइल को हटा दिया जाता है तो यहां पैच को फिर से प्रस्तुत करना:

diff --it / a / pm / pm-functions.in b / pm / pm-functions.in
--- a / pm / pm-functions.in
+++ b / pm / pm-functions.in
@@ -316,8 +316,28 @ @ अगर [-z "$ HIBERNATE_MODULE"] &&
    {
        [-n "$ {HIBERNATE_MODE}"] && \ _
        grep -qw "$ {HIBERNATE_MODE}" / sys / power / disk && \ _
+ HIBERNATE_MODE_SAVE = $ (बिल्ली / sys / शक्ति / डिस्क) && \ _
+ HIBERNATE_MODE_SAVE = "$ {HIBERNATE_MODE_SAVE ## * [}" && \ _
+ HIBERNATE_MODE_SAVE = "$ {HIBERNATE_MODE_SAVE %%] *}" && \ _
        इको-एन "$ {HIBERNATE_MODE}"> / sys / शक्ति / डिस्क
        इको-एन "डिस्क"> / sys / पावर / स्थिति
+ RET = $?
+ इको-एन "$ HIBERNATE_MODE_SAVE"> / sys / शक्ति / डिस्क
+ वापसी "$ RET"
+}
+ फाई
+
+ # कर्नेल के लिए जो सपोर्ट दोनों को सस्पेंड करता है (यानी हाइब्रिड सस्पेंड)
+ # कर्नेल के बाद से 3.6
+ अगर [-z "$ SUSPEND_HYBRID_MODULE"] && \ "
+ [-f / sys / शक्ति / डिस्क] && \ _
+ grep -q डिस्क / sys / पावर / स्थिति और& \ _
+ grep -q निलंबित / sys / शक्ति / डिस्क; फिर
+ SUSPEND_HYBRID_MODULE = "कर्नेल"
+ do_suspend_hybrid ()
+ {
+ HIBERNATE_MODE = "सस्पेंड"
+ do_hibernate
    }
 फाई

सूत्रों का कहना है:


1
आप हाइब्रिड-सस्पेंड के बारे में सही हैं। मैंने हाल ही में अपना स्निपेट खुद बदला है। आप METHOD = हाइबरनेट और HIBERNATE_MODE = सस्पेंड का उपयोग करके (काफी) समान परिणाम प्राप्त कर सकते हैं। मैं फ़ाइल के शीर्ष पर HIBERNATE_MODE = प्लेटफ़ॉर्म सेट कर रहा हूं, पिछले संस्करण को सहेजने और पुनर्स्थापित करने के बजाय (पैच क्या करता है)। मैं अपना उत्तर ऊपर अद्यतन करूंगा।
blueyed

यह बहुत अच्छा लग रहा है, संपादन के लिए धन्यवाद, @blueyed
रोहन ध्रुव

1

Config.d.d में किसी भी फ़ाइल को जोड़ने के बिना एक और उपाय है, बस wakealarm in / sys / class / rtc / rtc0 का उपयोग करना। टिप्पणियों के बाद pm- फ़ंक्शंस (/ usr / lib / pm-utils) में अप्रचलित कोड का उपयोग करें। जब कर्नेल सीधे समर्थन नहीं करता ..., ('वर्तमान कर्नेल (3.6 कुछ के बाद) सीधे समर्थन करता है)। उस कोड को वापस करें और do_suspend_hybrid () के बजाय do_suspend () भाग में डालें, और pm-functions के लिए पैच का उपयोग करें ('til वे इसे ठीक करते हैं)।

अप्रचलित कोड (सस्पेंड तब हाइबरनेट करें जब सस्पेंड_हाइब्रिड कहा जाता है):

# since the kernel does not directly support hybrid sleep, we do
# something else -- suspend and schedule an alarm to go into
# hibernate if we have slept long enough.
# Only do this if we do not need to do any special video hackery on resume
# from hibernate, though.
if [ -z "$SUSPEND_HYBRID_MODULE" -a -w "$PM_RTC/wakealarm" ] && \
    check_suspend && check_hibernate && ! is_set $HIBERNATE_RESUME_POST_VIDEO; \
    then
    SUSPEND_HYBRID_MODULE="kernel"
    do_suspend_hybrid() {
    WAKETIME=$(( $(cat "$PM_RTC/since_epoch") + PM_HIBERNATE_DELAY))
    echo >"$PM_RTC/wakealarm"
    echo $WAKETIME > "$PM_RTC/wakealarm"
    if do_suspend; then
        NOW=$(cat "$PM_RTC/since_epoch")
        if [ "$NOW" -ge "$WAKETIME" -a "$NOW" -lt $((WAKETIME + 30)) ]; then
        log "Woken by RTC alarm, hibernating."
        # if hibernate fails for any reason, go back to suspend.
        do_hibernate || do_suspend
        else
        echo > "$PM_RTC/wakealarm"
        fi
    else
        # if we cannot suspend, just try to hibernate.
        do_hibernate
    fi
    }
fi

सिफारिश की। यहां तक ​​कि बेकार का उपयोग करना आसान है, जबकि एक ही समय में s2both के लाभ को अधिकतम करें जब s2both को निलंबित करें। Do_suspend () uswsusp मॉड्यूल का हिस्सा (/usr/lib/pm-utils/module.d) में उल्टा कोड डालें।

उलटा कोड (सस्पेंड कहा जाता है जब निलंबित)

        WAKETIME=$(( $(cat "$PM_RTC/since_epoch") + PM_HIBERNATE_DELAY))
        echo >"$PM_RTC/wakealarm"
        echo $WAKETIME > "$PM_RTC/wakealarm"
        if do_suspend_hybrid; then
            NOW=$(cat "$PM_RTC/since_epoch")
            if [ "$NOW" -ge "$WAKETIME" -a "$NOW" -lt $((WAKETIME + 30)) ];             then
            log "Woken by RTC alarm, hibernating."
            # if hibernate fails for any reason, go back to suspend_hybrid.
            do_hibernate || do_suspend_hybrid
            else
            echo > "$PM_RTC/wakealarm"
            fi
        else
            # when do_suspend is being called, convert to suspend_hybrid.
            do_suspend_hybrid
        fi      

बेकार के साथ, हम सस्पेंड / हाइबरनेट की प्रगति और पाठ में प्रदर्शित रिवर्स प्रक्रिया को देख सकते हैं, यहां तक ​​कि हम इसे बैकस्पेस दबाकर भी निरस्त कर सकते हैं। यूजलेस के बिना, सस्पेंड / हाइबरनेट केवल नाराज-गायब दिखाई देते हैं, खासकर जब वैकलरम को ट्रिगर किया जाता है और हाइबरनेट को निष्पादित करता है (us2usp में s2disk)। Pm- फ़ंक्शंस फ़ाइल पर सामान्य स्थान पर हाइबरनेट से पहले सोने की अवधि निर्धारित करें।

# variables to handle hibernate after suspend support
PM_HIBERNATE_DELAY=900  # 15 minutes
PM_RTC=/sys/class/rtc/rtc0

यहाँ प्रयोग करने योग्य मॉड है: (याद रखें, इस मॉड्यूल को पीएम-फंक्शंस से बुलाया जाता है ताकि सम्मिलित चर समान हों)

#!/bin/sh

# disable processing of 90chvt and 99video.
# s2ram and s2disk handle all this stuff internally.
uswsusp_hooks()
{
    disablehook 99video "disabled by uswsusp"
}

# Since we disabled 99video, we need to take responsibility for proper
# quirk handling.  s2ram handles all common video quirks internally,
# so all we have to do is translate the HAL standard options to s2ram options.
uswsusp_get_quirks()
{
    OPTS=""
    ACPI_SLEEP=0
    for opt in $PM_CMDLINE; do
        case "${opt##--quirk-}" in # just quirks, please
            dpms-on)       ;; # no-op
            dpms-suspend)      ;; # no-op
            radeon-off)        OPTS="$OPTS --radeontool" ;;
            reset-brightness)  ;; # no-op
            s3-bios)       ACPI_SLEEP=$(($ACPI_SLEEP + 1)) ;;
            s3-mode)       ACPI_SLEEP=$(($ACPI_SLEEP + 2)) ;;
            vbe-post)      OPTS="$OPTS --vbe_post" ;;
            vbemode-restore)   OPTS="$OPTS --vbe_mode" ;;
            vbestate-restore)  OPTS="$OPTS --vbe_save" ;;
            vga-mode-3)        ;; # no-op
            save-pci)          OPTS="$OPTS --pci_save" ;;
            none)          QUIRK_NONE="true" ;;
            *) continue ;;
        esac
    done
    [ $ACPI_SLEEP -ne 0 ] && OPTS="$OPTS --acpi_sleep $ACPI_SLEEP"
    # if we were told to ignore quirks, do so.
    # This is arguably not the best way to do things, but...
    [ "$QUIRK_NONE" = "true" ] && OPTS=""
}

# Since we disabled 99video, we also need to handle displaying
# help info for the quirks we handle.
uswsusp_help()
{
    echo  # first echo makes it look nicer.
    echo "s2ram video quirk handler options:"
    echo
    echo "  --quirk-radeon-off"
    echo "  --quirk-s3-bios"
    echo "  --quirk-s3-mode"
    echo "  --quirk-vbe-post"
    echo "  --quirk-vbemode-restore"
    echo "  --quirk-vbestate-restore"
    echo "  --quirk-save-pci"
    echo "  --quirk-none"
}

# This idiom is used for all sleep methods.  Only declare the actual
# do_ method if:
# 1: some other sleep module has not already done so, and
# 2: this sleep method can actually work on this system.
#
# For suspend, if SUSPEND_MODULE is set then something else has already
# implemented do_suspend.  We could just check to see of do_suspend was
# already declared using command_exists, but using a dedicated environment
# variable makes it easier to debug when we have to know what sleep module
# ended up claiming ownership of a given sleep method.
if [ -z "$SUSPEND_MODULE" ] && command_exists s2ram && \
    ( grep -q mem /sys/power/state || \
        ( [ -c /dev/pmu ] && check_suspend_pmu; ); ); then
    SUSPEND_MODULE="uswsusp"
    do_suspend()
    {
        WAKETIME=$(( $(cat "$PM_RTC/since_epoch") + PM_HIBERNATE_DELAY))
        echo >"$PM_RTC/wakealarm"
        echo $WAKETIME > "$PM_RTC/wakealarm"
        if do_suspend_hybrid; then
            NOW=$(cat "$PM_RTC/since_epoch")
            if [ "$NOW" -ge "$WAKETIME" -a "$NOW" -lt $((WAKETIME + 30)) ];             then
            log "Woken by RTC alarm, hibernating."
            # if hibernate fails for any reason, go back to suspend_hybrid.
            do_hibernate || do_suspend_hybrid
            else
            echo > "$PM_RTC/wakealarm"
            fi
        else
            # when do_suspend is being called, convert to suspend_hybrid.
            do_suspend_hybrid
        fi      
    }
fi

if [ -z "$HIBERNATE_MODULE" ] && \
    [ -f /sys/power/disk ] && \
    grep -q disk /sys/power/state && \
    [ -c /dev/snapshot ] &&
    command_exists s2disk; then
    HIBERNATE_MODULE="uswsusp"
    do_hibernate()
    {
        s2disk
    }
fi

if [ -z "$SUSPEND_HYBRID_MODULE" ] && 
    grep -q mem /sys/power/state && \
    command_exists s2both && \
    check_hibernate; then
    SUSPEND_HYBRID_MODULE="uswsusp"
    do_suspend_hybrid()
    {   
        uswsusp_get_quirks
        s2both --force $OPTS 
    }
    if [ "$METHOD" = "suspend_hybrid" ]; then
        add_before_hooks uswsusp_hooks
        add_module_help uswsusp_help
    fi
fi  

0

Ubuntu 16.04 के लिए user68186 द्वारा जवाब मेरे लिए काम नहीं किया। हालाँकि, यहाँ समाधान किया था।

सबसे पहले, हाइबरनेशन कार्यों को सुनिश्चित करें। फिर

उबन्टु सॉफ्टवेयर में dconf एडिटर की खोज करें और इंस्टॉल करें। फिर इसे लॉन्च करें और org -> gnome -> सेटिंग्स डेमन -> प्लगइन्स -> पावर पर नेविगेट करें।

"ढक्कन-क्लोज-एसी-एक्शन" और "ढक्कन-क्लोज़-बैटरी-एक्शन" के मूल्य को बदलें।

मेरी पावर सेटिंग्स में, ये विकल्प रिक्त के रूप में दिखाई देते हैं, लेकिन वे इच्छानुसार काम करते हैं।


0

में उबंटू 18.04 यह बहुत ज्यादा easer। में systemd availiable एक नई विधा है निलंबित-से-हाइबरनेट । इस फ़ंक्शन का उपयोग शुरू करने के लिए आपको अगली सामग्री के साथ एक फ़ाइल /etc/systemd/sleep.conf बनाने की आवश्यकता है:

[Sleep]
HibernateDelaySec=3600

फिर आप इसे कमांड द्वारा टेस्ट कर सकते हैं:

sudo systemctl suspend-then-hibernate

(आप हाइबरनेट में देरी को कम करने के लिए HibernateDelaySec को संपादित कर सकते हैं)। यदि सभी ठीक काम करता है तो आप Lid क्लोज एक्शन को बदल सकते हैं, इसे करने के लिए आपको फ़ाइल /etc/systemd/logind.conf को संपादित करने की आवश्यकता है

आपको विकल्प HandleLidSwitch = खोजने की आवश्यकता है , इसे अनइंस्टॉल करें और HandleLidSwitch = निलंबित-फिर-हाइबरनेट में बदलें । फिर आपको अगले कमांड द्वारा लॉगइंड सेवा (wirning! आपको उपयोगकर्ता सत्र फिर से शुरू करना होगा) को पुनरारंभ करने की आवश्यकता है:

systemctl restart systemd-logind.service

बस इतना ही! अब आप इस अच्छे फ़ंक्शन का उपयोग कर सकते हैं।

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