স্ক্রিপ্টগুলিতে ঘুম আটকাবেন


13

কমান্ড লাইনে বা সাইগউইনের সাথে কোনও প্রোগ্রাম চালানোর সময় উইন্ডোজকে স্লিপ মোডে যেতে বাধা দেওয়ার কী উপায় আছে? আদর্শভাবে, আমি এমন কিছু প্রত্যাশা করছি যা ব্যবহার করা যেতে পারে:

nosleep myscript.sh

পটভূমি

কখনও কখনও আমি দীর্ঘমেয়াদী কাজগুলি ম্যানুয়াল ব্যাকআপ বা বড় ফাইল স্থানান্তরের মতো শুরু করি এবং আমি দেখতে পেয়েছি যে উইন্ডোজ প্রায়শই এই সমাপ্তির আগে ঘুমায়। আমি কমান্ডটি চালু করতে এবং কমান্ডটি চলাকালীন স্লিপ মোড প্রতিরোধ করতে সক্ষম হতে চাই তবে কমান্ডটি শেষ হয়ে গেলে এটি স্বয়ংক্রিয়ভাবে আবার কাজ করতে চাই।

উত্তর:


14

powercfgপিসি ঘুম না হওয়া অবধি অপেক্ষা করার সময়টি পরিবর্তন করতে আপনি কোনও স্ক্রিপ্টে ব্যবহার করতে পারেন :

স্ট্যান্ডবাইতে কখনও যাবেন না:

powercfg -change -standby-timeout-ac 0

15 মিনিটে স্ট্যান্ডবাইতে যান:

powercfg -change -standby-timeout-ac 15

ধন্যবাদ। পাওয়ারসিএফজি প্লাস কিছু বাশ যাদু কেবল আমার প্রয়োজন।
মিঃ ফুজ

দুর্ভাগ্যক্রমে এটি পূর্ববর্তী সেটিংসটি মুছে ফেলে এবং আপনাকে এটি ম্যানুয়ালি পুনরুদ্ধার করতে হবে।
লিয়ারয়

8

এখানে হ্যারিমিকের প্রতিক্রিয়ার উপর ভিত্তি করে একটি বাশ স্ক্রিপ্ট রয়েছে।

#!/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

থেকে: Cygwin, আমি কোট অপসারণ করতে হয়েছে "$*"থেকে $*। অন্যথায় আমি একাধিক যুক্তি দেওয়ার সময় নিম্নলিখিতগুলি পেয়েছি (যেমন $nosleep sleep 1:/usr/bin/nosleep: line 31: sleep 1 command not found
নিপ্পে

1
@ নিপ্পি, এটি আসলে হওয়া উচিত "$@""$*"এটি ভুল কারণ এটি সমস্ত আর্গুমেন্টকে সম্মতি জানায়, অন্যদিকে $*ভুল হিসাবে এটি যুক্তিগুলিকে বিভক্ত করে $IFSএবং খালিগুলি সরিয়ে দেয়।
sch

এটি ঝরঝরে করে নিশ্চিত করে তোলে যে বিদ্যুৎ প্রকল্পটি পুনরুদ্ধার হবে এমনকি সিটিআরএল -সি ঘটে গেলেও, তবে আরও পরিষ্কার কী হবে কেবল কোনও সেটিংস স্থায়ীভাবে পরিবর্তন না করে স্ক্রিপ্টের সময়কালের জন্য কম্পিউটারকে জাগ্রত রেখে একটি পাওয়ার অনুরোধ তৈরি করা। তবে দেখে মনে হচ্ছে এমন কোনও পরিষ্কার ও সহজ উপায় নেই যে এটি পরিচালনা করার মতো অবস্থা। যাইহোক, একটি লুকানো মিডিয়া প্লেয়ার নিঃশব্দ খেলছে এটি একটি নোংরা তবে সহজ উপায়। অটোহটকিতে আমি ডিফল্ট উইন্ডোজ সাউন্ড (ইয়ে, পোর্টেবল স্ক্রিপ্ট) ব্যবহার করেও পালাতে পারি। Loop { SoundPlay, %A_WinDir%\Media\ding.wav }, waitতর্ক ছাড়াই ।
লিয়ারয়

2

nosleepসাইগউইনে এখন এমন কমান্ড রয়েছে। কেবল nosleepপ্যাকেজ ইনস্টল করুন এবং হিসাবে চালান

nosleep myscript.sh

অ্যান্ড্রু ই। শুলম্যান লিখেছেন ২০১১ সালে। 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>.

মনে রাখবেন যে এটি সিস্টেমটিকে স্বয়ংক্রিয়ভাবে অলস অবস্থায় ঘুমাতে বাধা দেয়, কোনও ব্যবহারকারীর অনুরোধ করা হলে সিস্টেমটি ঘুমাতে বাধা দেয় না (যেমন ল্যাপটপের lাকনা বন্ধ করার সময়)।


2

সম্পর্কিত উত্তর সম্পর্কে @ লোরেঞ্জকেকে এই উত্তর থেকে পরামর্শ :

উইন্ডোজ গতিশীলতা কেন্দ্র থেকে উপস্থাপনা মোড ব্যবহার করুন (যদি উপলভ্য থাকে)

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

powercfg -requestsকমান্ড প্রম্পটে চেক করুন । আউটপুট করা উচিত:

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

উপরের দিকে এটি শাটডাউন বা পুনরায় চালু করার সময় পরিষ্কার হয়ে যায়। আসল পাওয়ার সেটিংস oring সংরক্ষণ এবং পুনরুদ্ধার করার জন্য এখন আপনাকে চিন্তা করার দরকার নেই 👍

এটি মনিটরদের ঘুমাতে যেতে বাধা দেয় তবে আপনি এটি আপনার স্ক্রিপ্টের একটি কমান্ড দিয়ে করতে পারেন। সহজ কিন্তু তৃতীয় পক্ষের সমাধান: NirCmd nircmd monitor off বা AutoHotkey SendMessage, 0x112, 0xF170, 2,, Program Manager দ্য বিল্ট-ইন powercfg /requestsoverride process PresentationSettings.exe displayযদিও কাজ করবে না।


1

অনিদ্রা আপনার উইন্ডোজগুলিকে ঘুমাতে যেতে বাধা দেয় তবে এটি কোনও কমান্ড লাইন সরঞ্জাম নয়, সুতরাং হ্যারিমিক কমান্ড সহ আপনার স্ক্রিপ্টটি আরও ভাল সমাধান

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.