लिपियों में नींद को रोकें


13

क्या कमांड लाइन पर या साइबरविन के साथ प्रोग्राम चलाने के दौरान विंडोज को स्लीप मोड में जाने से रोकने का कोई तरीका है? आदर्श रूप से, मैं ऐसी चीज़ की उम्मीद कर रहा हूं जिसका उपयोग किया जा सकता है:

nosleep myscript.sh

पृष्ठभूमि

कभी-कभी मैं मैनुअल बैकअप या बड़े फ़ाइल स्थानांतरण की तरह लंबे समय तक चलने वाली नौकरियां शुरू करता हूं और मैंने पाया है कि विंडोज अक्सर इन खत्म होने से पहले सो जाता है। मैं कमांड चालू करने और स्लीप मोड को रोकने में सक्षम होना चाहता हूं, जबकि कमांड चल रहा है, लेकिन कमांड पूरा होने के बाद क्या यह स्वचालित रूप से फिर से काम करेगा।

जवाबों:


14

जब आप powercfgनींद में जाते हैं, तब तक पीसी का इंतजार करने के लिए आप स्क्रिप्ट का उपयोग कर सकते हैं :

कभी भी स्टैंडबाय पर न जाएं:

powercfg -change -standby-timeout-ac 0

15 मिनट में स्टैंडबाय पर जाएं:

powercfg -change -standby-timeout-ac 15

धन्यवाद। powercfg प्लस कुछ बैश मैजिक वही हैं जो मुझे चाहिए थे।
श्री फूज

दुर्भाग्य से यह पिछली सेटिंग को मिटा देता है, और आपको इसे मैन्युअल रूप से पुनर्स्थापित करना होगा।
लीरॉय

8

यहाँ एक बैश स्क्रिप्ट है जिसे मैंने harrymc की प्रतिक्रिया के आधार पर व्हीप्ड किया है।

#!/usr/bin/bash

# NAME
#   nosleep - prevent sleep and hibernation while running a command
#
# SYNOPSIS
#   nosleep COMMAND [ARG]...

# Make sure the power scheme gets restored, even if Ctrl-C happens
cleanup()
{
  powercfg -setactive $SCHEME_GUID
  powercfg -delete    $TMP_GUID
  return $?
}
trap cleanup SIGINT

# Disable sleep and hibernate timers
export SCHEME_GUID=`powercfg -getactivescheme | gawk '{ print $4 }'`
export TMP_GUID=`powercfg -duplicatescheme $SCHEME_GUID | gawk '{ print $4 }'`
if [[ -z $TMP_GUID ]]; then
    echo "ERROR: could not duplicate the current power scheme"
    exit 254
fi
powercfg -setactive $TMP_GUID
powercfg -changename $TMP_GUID nosleep "temporary scheme for disabling sleep and hibernation"
powercfg -change -standby-timeout-ac 0
powercfg -change -hibernate-timeout-ac 0

# Run the command
"$@"

powercfg -setactive $SCHEME_GUID
powercfg -delete    $TMP_GUID

साइग्विन पर, मुझे उद्धरणों को हटाना पड़ा: फ्रॉम "$*"टू $*। अन्यथा मुझे एक से अधिक तर्क देते समय निम्नलिखित मिला (जैसे $nosleep sleep 1:/usr/bin/nosleep: line 31: sleep 1 command not found
निप्पेय

1
@ निप्पे, जो वास्तव में होना चाहिए "$@""$*"गलत है, क्योंकि यह सभी तर्कों को व्यक्त करता है, जबकि $*यह गलत है क्योंकि यह तर्कों को विभाजित करता है $IFSऔर खाली लोगों को निकालता है।
sch

यह स्पष्ट रूप से सुनिश्चित करता है कि भले ही Ctrl-C होता है, लेकिन पॉवर स्कीम बहाल हो जाती है, लेकिन क्या होगा, यहां तक ​​कि केवल एक स्क्रिप्ट के अवधि के लिए कंप्यूटर को जागृत रखने के लिए, बिना किसी सेटिंग को स्थायी रूप से बदलते हुए पावर रिक्वेस्ट बनाना होगा। लेकिन ऐसा लगता है कि ऐसा करने का कोई साफ, आसान तरीका नहीं है, इसलिए यह बहुत ही आसान है। हालाँकि, चुप्पी से खेलने वाला एक छिपा हुआ मीडिया प्लेयर एक गंदा लेकिन आसान तरीका होगा। AutoHotkey में मैं एक डिफ़ॉल्ट विंडोज साउंड (yay, पोर्टेबल स्क्रिप्ट) का उपयोग करके भी दूर जा सकता था। Loop { SoundPlay, %A_WinDir%\Media\ding.wav }, बिना waitतर्क के।
लेरॉय

2

nosleepCygwin में अब इस तरह की कमांड है। बस nosleepपैकेज स्थापित करें और के रूप में चलाएं

nosleep myscript.sh

2011 में एंड्रयू ई। शुलमैन द्वारा लिखित। देखें https://cygwin.com/ml/cygwin/2011-09/msg00151.html

लॉन्चपैड पर स्रोत । यह उपयोग करता है SetThreadExecutionState()(जैसे कि अनिद्रा पहले से ही उल्लेख किया गया है), एक अलग बिजली योजना नहीं बनाता है।

Usage: nosleep [OPTION...] command [args]
Run a command while inhibiting computer sleep or hibernation.

  -a, --awaymode             Force away mode instead of sleep mode
  -d, --display              Keep the display on
  -i, --ifacpower            Following options only apply if AC power is on
  -?, --help                 give this help list
  --usage                give a short usage message
  -V, --version              print program version

Report bugs to the Cygwin mailing list <cygwin@cygwin.com>.

ध्यान दें कि यह सिस्टम को स्वचालित रूप से निष्क्रिय होकर सोने से रोकता है , न कि किसी उपयोगकर्ता द्वारा अनुरोध किए जाने पर सोने से जाने वाली प्रणाली (जैसे कि लैपटॉप का ढक्कन बंद करते समय)।


2

संबंधित प्रश्न पर @LorenzCK के इस उत्तर से सुझाव :

Windows गतिशीलता केंद्र से प्रस्तुति मोड का उपयोग करें (यदि उपलब्ध हो)

%WINDIR%\System32\PresentationSettings.exe "/start"

साथ की जाँच करें powercfg -requestsकमांड प्रॉम्प्ट में। उत्पादन करना चाहिए:

DISPLAY:
[PROCESS] \Device\HarddiskVolume2\Windows\System32\PresentationSettings.exe
SYSTEM:
[PROCESS] \Device\HarddiskVolume2\Windows\System32\PresentationSettings.exe

अपसाइड यह शटडाउन या रीस्टार्ट पर क्लियर हो जाता है। अब आपको मूल बिजली सेटिंग्स को स्टोर करने और पुनर्स्थापित करने के बारे में चिंता करने की ज़रूरत नहीं है worry

यह मॉनिटर को नींद में जाने से रोकता है लेकिन आप अपनी स्क्रिप्ट में एक कमांड के साथ ऐसा कर सकते हैं। सरल लेकिन तृतीय-पक्ष समाधान: NirCmd nircmd monitor off या AutoHotkey SendMessage, 0x112, 0xF170, 2,, Program Manager बिल्ट-इन powercfg /requestsoverride process PresentationSettings.exe displayहालांकि काम नहीं करेगा।


1

अनिद्रा आपकी खिड़कियों को सोने के लिए जाने से रोकती है, लेकिन यह एक कमांड लाइन उपकरण नहीं है, इसलिए हार्मी कमांड के साथ आपकी स्क्रिप्ट बेहतर समाधान है

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