Spis treści:

Kategoria:PowerShell


Wyłączanie komputera po wskazanym czasie

Każdy musi spać

Organizm człowieka to skomplikowana maszyna. Dużo bardziej skomplikowana niż znane nam i używane przez nas komputery. Taka żywa maszyna, o ile jest zdrowa, potrzebuje snu. Zaraz, zaraz! Ale co to ma wspólnego z komputerem?

Dziś zajmę się nieco luźniejszym zadaniem, bardziej praktycznym, bardziej dostępnym dla przeciętnego komputerowca. O ile znajomość budowy indeksów SQL Server, technik wirtualizacji danych i obsługa wyjątków WCF to wiedza dość specjalistyczna, o tyle wyłączanie komputera jest zadaniem bardzo przyziemnym. Kto nigdy nie wyłączał komputera i uważa, że nigdy tego nie będzie robił, może w tym momencie zakończyć czytanie.

Potrzeba matką wynalazków

Pomysł wpisu pojawił się bardzo naturalnie. Zdarza się, że wieczorem, po całym dniu zmagań wszelakich kładę się na łóżku i włączam muzykę - dla relaksu. Czasem włączam jakieś wiadomości dostępne online, bo warto wiedzieć co się w świecie dzieje. Nie wiem jak jest u innych, ale zdarza mi się podczas opisanych czynności zasnąć. A komputer chodzi, chodzi całą noc. Niepotrzebnie.

Wiadomo, że nabijają się rachunki za prąd, że coś świeci, że coś szumi. Z muzyki jednak nie zrezygnuję. Rozwiążę to w inny sposób.

Niech się komputer wyłączy po 30 minutach

Dopóki nie przejrzałem wyników z wyszukiwarki nie zdawałam sobie sprawy z rangi problemu. W Internecie dostępnych jest kilkadziesiąt, o ile nie kilkaset, aplikacji zajmujących się czasowym wyłączaniem komputera. Powiem, wiecej - sam kiedyś taką aplikacje napisałem, w ramach uczenia się Delphi. Wydaje się, że wystarczy pobrać gotową aplikację, zainstalować ją i odtrąbić sukces. Mam jednak lepszą propozycję.

Po co cokolwiek instalować? Po co ściągać aplikacje z nieznanych źródeł? Po co wrzucać do swojego systemu dodatkowe pliki, skoro wszystko, czego nam potrzeba, jest juz na naszym komputerze? Aplikacja nazywa się shutdown.exe i znajduje się w katalogu z syatemem Windows, np. C:\Windows\system32\shutdown.exe. Spośród wielu parametrów przedstawię dwa najważniejsze:

  • -s (lub /s) - Wyłącza komputer.
  • -t XX (lub /t XX) - Pozwala określić czas, po którym komputer powinien się zamknąć. XX oznacza czas, podany w sekundach, po którym nastąpi wyłączenie.

Całą instrukcja będzie więc wyglądała następująco:

shutdown -s -t 1800

Instrukcję mozna wpisać w oknie konsoli, jako polecenie Uruchom, w oknie PowerShell, w oknie Wyszukaj programy i pliki. Po naciśnięciu Enter zostaniemy poinformowani o planowanym zamknięciu systemu. Wartość 1800 oznacza czas, w sekundach, po którym system zostanie zamknięty (30 minut * 60 sekund = 1800 sekund).

Proste rozwiązanie, które pozwala nam posłuchać muzyki z Internetu do snu. Gdy w trakcie tej nieskomplikowanej czynności półświadomego odsłuchiwania ulubionych przebojów zaśniemy, komputer wyłączy się sam.

Anulowanie zamykania systemu

Zdarza się, że po jakimś czasie zreflektujemy się i uznamy, że nie chcemy wyłączać komputera. Być może zupełnie nam się nie chce spać i boimy się, że zaraz komputer się wyłączy a my zostaniemy sam na sam z martwą ciszą. Nic straconego - akcję zamykania czasowego mozna anulować. Służy do tego parametr -a (lub /a):

shutdown -a

Znów zostaniemy grzecznie poinformowani o anulowaniu procesu zamykającego.

Mamy dużo otwartych aplikacji - hibernacja

Wczesna wiosna. Mały niedźwiadek z trudem wytacza się z jaskini. Jest wychudzony, ledwie stoi na łapkach, oczka ma podkrążone i przekrwione.
Przejęta niedźwiedzica pyta:
- Synku, co się stało? Czy na pewno na całą zimę poddałeś się hibernacji, jak prosiłam?
- Hibernacji? Myślałem, że powiedziałaś masturbacji...
Gdy mamy dużo otwartych aplikacji warto rozważyć inną opcję nocnego wytłumienia komputera - hibernację. Zwykłe wyłączenie sprawia, że zamykane są wszystkie aplikacje, w tym te, które mogą mieć niezapisane dane. Aby się przed tym ustrzec i nie stracić wszystkiego, można zapisać stan pamięci operacyjnej na twardym dysku i dopiero wtedy zamknąć system. Kolejne uruchomienie odczyta te dane i wystartujemy dokładnie w tym samym miejscu, w którym skończyliśmy. Ta operacja to właśnie hibernacja.

Hibernację warto też rozważyć gdy nasz system uruchamia się bardzo długo. Odczytanie stanu sprzed hibernacji będzie zawsze szybsze niż uruchomienie systemu Windows i ponowne wczytanie wielu procesów, które razem z systemem są uruchamiane.

Wydawać by się mogło, że instrukcja czasowego wyłączania z hibernacją będzie wyglądała następująco:

shutdown -h -t 1800

Problem w tym, że instrukcje -h i -t nie działają jednocześnie. Da się to jednak obejść...

W oknie konsoli cmd można wpisać taką oto instrukcję:

timeout -t 10 && shutdown -h

Dla posiadaczy PowerShell (zdecydowanie zachęcam do zainstalowania i nauczenia się) instrukcja może wyglądać na przykład tak:

timeout -t 10;shutdown -h

Program timeout nie jest skomplikowany. Parametr -t określa czas w sekundach, jaki musi upłynąć przed zakończeniem jego pracy. Aby anulować wykonanie skryptu można użyć kombinacji klawiszy Ctrl + Break. W wersji PowerShell można użyć kombinacji klawiszy Ctrl + c.

Kategoria:PowerShell

, 2013-12-20

Komentarze:

Kamil (2014-02-22 16:03:58)
Witam czy jest taka możliwość że komputer od nowości ma wklepane wyłączanie się? Bo mam taki problem że komputer wyłącza mi się co 30 minut za każdym razem, już nie wiem co ma zrobić
Adam (2014-03-18 09:32:07)
Kamil jest to normalne, że po 30 minutach komputer się wyłącza. Zapewne masz Windows 7 wejdź w ->Panel Sterowania->System i zabezpieczenia->Opcje Zasilania->i na tym który masz naznaczony kropeczką napis kliknij w Zmień Ustawienia Planu. Gotowe :)
borys (2015-01-20 13:11:30)
Mam ten sam problem co Kamil. Można zmieniać ustawienia (chyba od paru sekund do nigdy) a komputer i tak wyłączy się po 30 minutach. Przypuszczam że w ramach aktualizacji podesłali złośliwe oprogramowanie.
ams8 (2017-01-02 19:59:09)
Czy jest możliwe przejście w stan hibernacji jeśli aplikacja ma wybraną opcję shutdown?
Windows-7, aplikacja: TotalMedia nagrywa wybraną audycję TV, po zakończeniu nagrywania są tylko 2 opcje: nic nie rób albo shutdown, brak opcji hibernate.
Dodaj komentarz
Wyślij
Ostatnie komentarze
Dzieki za rozjasnienie zagadnienia upsert. wlasnie sie ucze programowania :).
Co się stanie gdy spróbuję wyszukać:
SELECT * FROM NV_Airport WHERE Code='SVO'
SELECT * FROM V_Airport WHERE Code=N'SVO'
(odwrotnie są te N-ki)
Będzie konwersja czy nie znajdzie żadnego rekordu?