Parus16.ru

Парус №16
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Выключение компьютера в линукс

Выключение компьютера в линукс

Добрый день! Уважаемые читатели и подписчики IT блога Pyatilistnik.org. В прошлой статье мы разобрали методы перезагрузки Windows из PowerShell. Сегодня я хочу логически закончить эту статью и показать вам методы, позволяющие вам выключить компьютер без мышки используя оболочку PowerShell и старую, добрую командную строку. Я вам покажу, как вы можете создать себе ярлык или exe файл, выполняющий данную задачу.

Зачем использовать CMD и PowerShell для выключения компьютера

Логично, что большинство людей всегда для завершения работы за компьютером будут использовать графические окна и мышку, это правильно, так как это проще и быстрее, но бывает ряд случаев, что вы как продвинутый пользователь или тем более системный администратор, просто обязаны уметь выполнять все задачи без GUI интерфейса. Вот вам примерный список ситуаций:

  • Вам как системному администратору может выпасть честь работать с Windows Server Core, которая не имеет графического интерфейса и если вам вдруг нужно завершить работу такого сервера или виртуальной машины для обслуживания, вы обязаны это уметь.
  • Вторая ситуация может возникнуть, на компьютерах, где политиками или иными методами была выключена возможность завершать работу компьютера. Вот вам пример, что есть только пункт «Выход«.

Отсутствует кнопка завершение работы

  • Третья ситуация, это различные сценарии, подразумевающие использование скриптом, например массово выключить компьютеры по списку, полет фантазии тут огромный.
  • Так же не нужно забывать про удаленное выключение систем, PowerShell, как и был призван одним из основных инструментов по удаленному управлению Windows, но командная строка так же позволяет это выполнить.

Как выключить компьютер через командную строку

Для начала давайте я вам напомню, как производилось выключение компьютера из командной строки, если вы постоянный читатель моего блога, то помните, что мы уже создавали задание по выключению систему по таймеру, там мы так же использовали cmd. Что мы делаем, открываем окно командной строки, желательно в режиме администратора, чтобы все команды у вас точно отработали.

Есть такая замечательная команда Shutdown, она имеет два режима работы, первый это консольный, а второй графический, да не удивляйтесь. Давайте для начала посмотрим справку по данной утилите, для этого выполните команду:

справка команды shutdown

Утилита имеет большое количество ключей для различных сценариев.

Самый простой сценарий, нужно завершить работы локального компьютера и для того, чтобы выключить компьютер через командную строку вы вводите:

Как выключить компьютер через командную строку

У вас появится всплывающее окно, где будет указано, что ваш сеанс будет завешен. Для завершения работы Windows осталось менее 1 минуты. Тут вам дают возможность успеть сохранить важные данные в программах и документах.

Всплывающее окно при выполнении команды shutdown

Теперь давайте поиграемся с таймером, у вас может быть желание немедленного завершения работы или наоборот вы хотите задать время превышающее стандартную минуту, тут нам поможет ключ /t, в там случае команда будет выглядеть так:

При t = 0 у меня будет произведено моментальное выключение компьютера, если же я например задам 180, что равносильно трем минутам, то вы увидите вот такое окно:

Отложенное выключение компьютера через командную строку

Если у вас время в ключе /f задано более , то вы можете столкнуться с ситуацией, что какие-то приложения могут не дать завершить работу системы и выключить компьютер. В таких сценариях вы можете принудительно их завершать, для этого есть ключ /f:

Читайте так же:
Видеокарта gigabyte gt 430

Или вы вообще можете захотеть, выключить компьютер через 2 часа. это в секундах 7200. Так же есть отдельный ключ, который сразу завершает работу вашей системы, без ввода времени, этот ключ /p. В итоге можно выключить компьютер командой

команда shutdown с комментарием

Если вы хотите задать комментарий при выключении компьютера из командной строки и задать причину, то есть ключи /c и /d. Ключ /c задает комментарий, который не может быть длиннее, чем 512 символов. Ключ /d указывает причину, тут может быть совместный ключ «p«, означающий запланированное завершение или же ключ «u«, означающий что причину указывает пользователь.

Как выключить компьютер через командную строку

В логах Windows вы можете обнаружить событие 1074 с нашим комментарием. Согласитесь, что это отличный инструмент выключить компьютер без помощи мышки.

Событие 1074 после выключения компьютера через командную строку

Удаленное выключение компьютера из командной строки

CMD может легко взаимодействовать и с удаленными системами, давайте я покажу, как вы можете завершить работу Windows у двух удаленных компьютеров, у меня это будет система с Windows 10 под именем W10-cl02. Для этого мы используем ключ «m«.

Тут я принудительно завершаю работу удаленного компьютера W10-cl02. Так же вы можете произвести удаленное выключение компьютера и из графического интерфейса, для этого есть ключ -i. Вводим команду:

В результате у вас откроется форма «Диалог удаленного завершения работы», я его уже вам показывал при массовом выключении компьютеров.

Удаленное выключение компьютера из командной строки

Нажимаем кнопку «Добавить» и вводим нужные вам сервера и рабочие станции которые вы планируете выключить.

Добавление компьютеров для выключения

В выборе действий, указываем «Завершение работы», ставим галку «Предупредить пользователей об этом действии» если нужно сделать отложенное выключение, можете хоть выставить 2 часа. Указываете причину и комментарий при необходимости.

Предупредить пользователей об этом действии

Выскочит предупредительное окно, произойдет выключение компьютера через определенное время, заданное вами ранее.

предупредительное окно при выключении компьютера через cmd

Как видите утилита командной строки shutdown.exe даже в нынешнее время Windows 10, является отличным инструментом, умеющим выключать компьютер с Windows по нужному сценарию. дополнительную информацию про утилиту shutdown вы можете посмотреть по ссылке:

Как как выключить компьютер через PowerShell

Теперь давайте обратимся к более современному инструменту, а именно к оболочке PowerShell. Открываем ее в режиме администратора, нас будет интересовать командлет Stop-Computer. Если вы его просто введете в оболочке на локальном компьютере, то у вас начнется завершение работы.

Удаленное выключение компьютера из PowerShell

Теперь давайте посмотрим справку по данному командлету, для этого введите

Справка Stop-Computer

Как видим командлет имеет много дополнительных ключей.

Удаленное выключение компьютера из PowerShell

Командлет Stop-Computer имеет ключ -ComputerName через который можно указать список систем, требующих завершения работы. У меня есть два удаленных компьютера с Windows 10, w10-cl02 и w10-cl03. Давайте их выключим, вводим команду:

Если на текущий момент на удаленных компьютерах. кто-то работает, то вы получите ошибку:

+ CategoryInfo : InvalidOperation: (w10-cl02:String) [Stop-Computer], InvalidOperationException
+ FullyQualifiedErrorId : InvalidOperationException,Microsoft.PowerShell.Commands.StopComputerCommand

Stop-Computer : Не удается выполнить команду на конечном компьютере («w10-cl03») из-за следующей ошибки: Невозможно инициировать завершение работы системы, так как компьютер используется другими пользователями.
строка:1 знак:1
+ Stop-Computer -ComputerName w10-cl02, w10-cl03
+

+ CategoryInfo : InvalidOperation: (w10-cl03:String) [Stop-Computer], InvalidOperationException
+ FullyQualifiedErrorId : InvalidOperationException,Microsoft.PowerShell.Commands.StopComputerCommand

Невозможно инициировать завершение работы системы, так как компьютер используется другими пользователями

Чтобы это обойти вы можете добавить ключик -Force, который сделает принудительное выключение

Читайте так же:
Завис ноутбук самсунг что делать

Форсированное выключение компьютера через powershell

Если вам необходимо выполнить выключение от имени определенной учетной записи, то вы можете воспользоваться ключом -Credential:

В окне запроса учетных данных Windows, укажите пароль. В итоге я выключил два компьютера и все можно сделать и без использования мышки.

выключил два компьютера и все можно сделать и без использования мышки

Также командлет Stop-Computer имеет ключ -WsmanAuthentication, который позволяет производить подключения по разным протоколам аутентификации. Возможные варианты:

  • Basic
  • Default
  • Digest
  • Negotiate.

Напоминаю, что по умолчанию используется CredSSP .но я в моем примере буду использовать Kerberos, так как привык работать со службой удаленного управления Windows (WinRM).

[info]Stop-Computer -ComputerName w10-cl02, w10-cl03 -Force -WsmanAuthentication Kerberos[/info]

Как выключить компьютер со списком компьютеров в текстовом файле

Может возникнуть ситуация, что вы или ваши коллеги могут подготовить тестовый файл со списком компьютеров, которые потребуется выключить. Stop-Computer легко справится с этой задачей. Кладу на диск C: файл computers.txt, после чего выполняю команды.

Скрипт выключения компьютера через powershell

Выключение компьютера с задержкой по времени через PowerShell

И так, как выключить компьютер через определенное время, так как у вас легко может возникнуть такой сценарий. Для решения вопроса со временем есть командлет Start-Sleep.

Выключение компьютера с задержкой по времени через PowerShell

В результате выполнения команды, у меня завершится работа на двух удаленных компьютерах. Или можно вот так со списком компьютеров в текстовом файле.

Удаленное выключение компьютера из PowerShell

Дополнительную информацию, по командлету Stop-Computer я вам советую поискать на сайте Microsoft

Как выключить компьютер через WMI запрос

Так же используя командную строку или оболочку PowerShell вы можете выполнить команду с использованием WMI, чтобы завершить работу компьютера. Для этого введите команду:

[info](Get-WmiObject Win32_OperatingSystem -EnableAllPrivileges).Win32Shutdown(1)[/info]

В результате у вас будет произведено корректное завершение работы в вашей системе Windows, так же можно сделать форсированное выключение, для этого выполните:

Как выключить компьютер через WMI запрос

Создание ярлыка выключения компьютера

Если вы хотите вынести себе функцию выключения вашего компьютера в виде отдельного файла-ярлыка, вы можете это легко реализовать. Щелкаете правой кнопкой мыши по рабочему столу и выбираем пункт «Создать — Ярлык»

Создание ярлыка выключения компьютера

Задаем параметры для нашего ярлыка, тут вы вводите нужную вам команду, в моем случае, это команда, которая немедленно выключает компьютер.

Как в Linux узнать даты выключения и перезагрузки компьютера

Может быть множество причин, почему вы хотите узнать, когда ваш компьютер на Linux выключался, перезапускался и как долго он работает. Эта информация может пригодиться в поиске и устранении проблем, которые могли случиться, когда вы не наблюдали за системой. К счастью, Linux в большинстве дистрибутивов тщательно в автоматическом режиме ведёт журнал системных событий. Доступ к сохранённой информации из командной строки также очень простой.

Последнее включение

Как узнать, когда Linux последний раз был включён? Если вам нужно определить время и дату последнего включения, то вы можете использовать команду who с опцией -b. Эта команда выведет точное число и время включения. Для выполнения команды не нужны привилегии root:

В какое время включался компьютер

С помощью команды last вы можете получить список, когда система включалась или перезагружалась. Это необязательно время, когда использовалась команда reboot, или когда нажималась кнопка «Перезагрузить» на рабочем столе. Это журнал событий, когда система была загружена.

Последнее включение Linux

Если вам нужно узнать только время последнего включения компьютера с Linux, то вы можете использовать предыдущую команду, но передать её вывод по конвейеру команде head с опцией -1, чтобы она вывела только одну строку. Чтобы узнать также и время предпоследней загрузки, то замените опцию на -2 — будут выведены две строки.

Читайте так же:
Быстрая команда печать на клавиатуре

Выключения

Команда last работает аналогичным образом и для выключений. Она перечисляет случаи, когда компьютер был полностью выключен. Эта команда выводит диапазоны, когда компьютер был отключён. Чтобы узнать время перезагрузки (если вам важно отделить эти случаи от включения), то вы можете проанализировать эти данные и данные от предыдущей команды, чтобы получить то, что вам нужно.

Последнее выключение

Как и с перезагрузками, если данных слишком много, то вы можете передать вывод по конвейеру команде head для получения только последнего времени отключения. Конечно, можно указывать разные опции, например, -3 для вывода трёх последний периодов простоя.

Время работы — аптайм (Uptime)

Наконец если вам нужно узнать, как долго ваш компьютер работает, вы можете использовать команду uptime, чтобы получить эту информацию. Дополните её с флагом -p, чтобы вывод был намного более читаемым. Вы получите значение в днях, часах и минутах, которое ваш компьютер включён начиная с последней загрузки.

Надеюсь эти команды помогут решить то, что вы хотите узнать о жизни вашей системы, когда вас нет рядом, о неожиданных перезагрузках и выключениях. Если в проблему вовлечены другие программы, то вы можете проверить определённые файлы журналов в «/var/log».

Выполнение скрипта при запуске или выключении linux

Если на вопрос: «как добавить программу в автозагрузку?» — начинающие пользователи находят ответ достаточно быстро, то вопрос о запуске скрипта, при выключении/перезагрузки, ставит их в тупик. В статье будет описан стандартный способ для автоматического выполнения команд при включении и выключении linux, а также более простой способ для пользователей, у которых установлен gdm и графический интерфейс, например ubuntu.

Консольный вариант.

Немного теории.
Следует знать, что в Linux существует 7 уровней запуска. Однако, использоваться могут только 6.
Как у всех уважающих себя программ отсчёт начинается с 0-ля.
0 — Остановка или выключение системы.
1 — Однопользовательский режим.
2 — Многопользовательский режим, но без поддержки сети.
3 — Тоже самое, но с сетью.
4 — Добавили для красоты Не используется.
5 — Графический режим с загрузкой X сервера.
6 — Перезагрузка.
Если перейти в папку /etc (В некоторых дистрибутивах /etc/rc.d) то можно увидеть папки с 7-мью уровнями запуска.

Например при выключении компьютера, выполнятся все скрипты из папки rc0.d

Тут следует остановится по подробнее. Дело в том, что самих скриптов (а точнее сценариев) в этой папке нету, а есть только ссылки на файлы, которые лежат в папке /etc/init.d. Эти сценарии выполняют различные задачи, в зависимости от параметра start или stop (например /etc/init.d/reboot start и /etc/init.d/reboot stop это разные команды, а /etc/init.d/reboot вообще не будет работать). Если в ссылке стоит первая буква S, то значит сценарию подаётся параметр start, а если стоит буква K(от слова kill), то параметр stop. Цифра после буквы обозначает порядок выполнения сценария.
Например, на выше вставленном скриншоте вначале выполниться команда /etc/init.d/hddtemp stop, а уже позже /etc/init.d/networking start.
Хватит теории. Переходим к практике.
Для того, чтобы добавить команду в автозагрузку, достаточно поместить её в файл /etc/rc.local.

Читайте так же:
Включить wifi адаптер через командную строку

В этой части статьи в качестве редактора будет использоваться nano, но вы можете пользоваться своим любимым редактором, например gedit.

И помещаем наши команды чуть выше строчки с exit 0.
Для того, что бы команды выполнялись перед выключением или перезагрузкой нам нужно создать сценарий в папке /etc/init.d

Вставляем следующий код:

Если будет подаваться только один сигнал, то просто закомментируйте строку поставив в начале команды знак #
Например

Теперь делаем файл исполняемым:

Создать ссылки можно вручную, но проще это сделать через команду update-rc.d
Например:

Точки важны (обе). Исследуя просторы интернета, у меня сложилось впечатление, что синтаксис этой программы иногда меняется. Актуальные примеры можно посмотреть по команде «man update-rc.d». Примеры будут в низу.

Эта команда создаст по 2 ссылки в каталогах /etc/rc.d (второе число в команде) и /etc/rc6.d (третье число в команде). Причём вначале будет выполняться сценарий с параметром stop (т.к. стоит 1), а уже потом с параметром start (т.к. стоит 20).
Если второй параметр не нужен, то можно выполнить команду:

Советую ставить приоритет повыше (т.е. число после start или stop должно быть маленьким), желательно меньше 20. В обратном случае у меня иногда зависал компьютер при попытке перезагрузиться.

Для пользователей ubuntu, да и многих других современных дистрибутивов с gdm можно воспользоваться…

Графический вариант.

Что касается автозагрузки то можно воспользоваться способом описанным здесь.
Или просто открыть «автоматически запускаемые приложения» командой:

Для выполнения скрипта при выключении компьютера, помещаем его в файл /etc/gdm/PostSession/Default

выключение компьютера (linux) с помощью python

и еще несколько других. но ничего не происходит, когда я запускаю его, компьютер проходит через код без сбоев или появления каких-либо сообщений об ошибках и завершает сценарий нормально, не выключая компьютер.

Как выключить компьютер в python?

Похоже, что команды, которые я пробовал, требуют корневого доступа. Есть ли какой-нибудь способ отключить машину от скрипта без повышенных привилегий?

9 ответов

  • Windows 10 Linux подсистема-Python-строка в буфер обмена компьютера

У меня есть скрипт python, в котором я хочу поместить строку в буфер обмена компьютера. У меня это работает в Linux, Mac, а ранее в Windows, используя cygwin. Мне пришлось изменить одну строку кода, чтобы заставить его работать в соответствующих системах. Я не могу скопировать строку в буфер.

Возможный Дубликат : Выключение компьютера с помощью Java Я создаю личную программу, которая выключит мой компьютер через определенное время или в определенное время time/date. однако я использую несколько операционных систем и хочу сделать это с помощью одной простой программы Java. Есть ли.

Многие из дистрибутивов linux требуют привилегий суперпользователя для выполнения shutdown или halt , но тогда почему, если вы сидите на своем компьютере, вы можете отключить его, не будучи root? Вы открываете меню, нажимаете Shutdown , и оно отключается без того, чтобы вы стали root , верно?

Хорошо. обоснование этого заключается в том, что если у вас есть физический доступ к компьютеру, вы можете в значительной степени вытащить шнур питания и отключить его в любом случае, поэтому в настоящее время многие дистрибутивы позволяют отключать питание, хотя доступ к локальной системной шине доступен через dbus . Проблема с dbus (или, скорее, с услугами, предоставляемыми через него)? Она постоянно меняется. Я бы рекомендовал установить инструмент просмотра dbus, такой как D-feet (имейте в виду: его все еще довольно сложно визуализировать, но это может помочь)

Читайте так же:
Блок питания xilence 500w

Если у вас все еще есть HAL в вашем дистрибутиве (находится на пути к устареванию), попробуйте это:

Это работает на Ubuntu 12.04 (я просто выключил компьютер, чтобы убедиться, что он работает). Если у вас есть что-то новенькое. ну, это может не сработать. Это недостаток этого метода: он очень специфичен для распределения.

Возможно, вам придется установить пакет dbus-python , чтобы это сработало ( http://dbus.freedesktop.org/doc/dbus-python/doc/tutorial.html )

UPDATE 1 :

Я провел небольшое исследование, и похоже, что это делается в более новых версиях с Ubuntu по ConsoleKit . Я проверил приведенный ниже код в моем Ubuntu 12.04 (который имеет устаревший HAL и более новый ConsoleKit), и он действительно выключил мой компьютер:

UPDATE 2:

Вероятно, почему вы можете сделать это, не будучи root , заслуживает более широкого объяснения. Давайте сосредоточимся на более новом ConsoleKit ( HAL намного сложнее и запутаннее, IMHO).

ConsoleKit — это служба, работающая в вашей системе под именем root :

Теперь d-bus — это просто система передачи сообщений. У вас есть служба, например ConsoleKit , которая предоставляет интерфейс для d-bus . Одним из доступных методов является Stop (показано выше). разрешения ConsoleKit управляются с помощью PolKit , который (несмотря на то, что он основан на обычных разрешениях Linux) предлагает немного более тонкое зерно контроля для «who can do what» . Например, PolKit может сказать что-то вроде: «Если пользователь вошел в систему, то позвольте ему что-то сделать. Если он удаленно подключен, то не надо.» . Если PolKit определяет, что вашему пользователю разрешено вызывать метод ConsoleKit Stop , этот запрос будет передан (или через ) d-bus в ConsoleKit (который впоследствии выключит ваш компьютер, потому что он может это сделать. потому что это того стоит. потому что это root )

Подводя итог: вы не можете выключить компьютер, не будучи root . Но вы можете сказать службе, работающей под именем root , чтобы она отключила систему для вас.

BONUS :

Я прочитал в одном из ваших комментариев, что вы хотите выключить компьютер после выполнения трудоемкой задачи, чтобы предотвратить его перегрев. Знаете ли вы, что вы, вероятно , можете включить его в определенное время, используя RTC? (Видишь это и это ) Довольно круто, а? (Я так разволновался, когда узнал, что могу это сделать. ) 😀

  • Java-выключение компьютера после запуска программы

Возможный Дубликат : Выключение компьютера с помощью Java Привет, У меня есть программа Java, которая будет работать 20 раз и займет около 3 часов. После этого я хочу, чтобы мой компьютер выключился или чтобы я вышел из системы как пользователь. Могу ли я сделать это непосредственно из моей.

голоса
Рейтинг статьи
Ссылка на основную публикацию
Adblock
detector