Как я могу приостановить / спящий режим из командной строки?

После прочтения статьи в Википедии по этому вопросу я хотел бы предложить несколько дополнительных решений: Изменить порядок загрузки в BIOS :) Самый лучший и самый безопасный: используйте fdisk для удаления " bootable "из любых разделов на этом диске. Большинство MBR ищут «загрузочный» раздел для загрузки по цепочке, поэтому я ожидал бы, что GRUB просто ничего не сделает, если таких разделов нет. Не тестировали. Если это не поможет, попробуйте установить бесплатный клон стандартного MBR-кода: установите пакет mbr и используйте команду install-mbr следующим образом:

sudo apt-get install mbr
sudo install-mbr -i n -p D -t 0 /dev/sda

Кредиты: Статья в Википедии

Из чтения статьи в Википедии у меня сложилось впечатление, что единственной вещью, которая идентифицирует MBR, является ее подпись, которая находится в самом конце сектора (байты 510 и 511). Первые 446 байт MBR должны содержать машинные инструкции. Предполагается, что BIOS должен передать управление загрузчику независимо от фактического содержимого первых 446 байт, если присутствует подпись MBR:

На компьютерах IBM, совместимых с ПК, загрузочная прошивка, содержащаяся в BIOS ROM загружает и выполняет основную загрузочную запись. [14] ... Таким образом, ожидается, что начало MBR будет содержать инструкции машинного языка реального режима. [14] BIOS считывает MBR с запоминающего устройства в физическую память, а затем направляет микропроцессор в начало загрузочного кода. Из-за ограниченного размера раздела кода MBR он обычно содержит только небольшую программу, которая копирует дополнительный код (например, загрузчик) из запоминающего устройства в память. Затем управление передается этому коду, который отвечает за загрузку реальной операционной системы. ... Последовательность загрузки в BIOS загрузит первый действительный MBR, который он находит в физической памяти компьютера по адресу 0x7C00. Последняя инструкция, выполненная в коде BIOS, будет «прыгать» на этот адрес, чтобы выполнить непосредственное выполнение в начале копии MBR. Первичная валидация большинства BIOS - это подпись 0xAA55 в конце, хотя разработчик BIOS может выбрать другие проверки, такие как проверка того, что MBR содержит допустимую таблицу разделов без записей, относящихся к секторам за пределами сообщаемой емкости диска.

Итак, я понимаю, что MBR всегда должен содержать загрузчик, и обнуление первых 446 байтов этого не остановит BIOS от попытки загрузки с диска - но это, скорее всего, заставит компьютер зависать при попытке выполнить недопустимый код.

always Кроме того, в этой статье предполагается, что для того, чтобы диск выглядел «не загружаемым» для BIOS, вы должны фактически отредактировать подпись MBR на и сектора (используя любой редактор диска). Я не уверен, что это повлияет на ОС, увидев таблицу разделов на диске, хотя ... но по крайней мере вы всегда можете изменить эти байты обратно ...

1
задан 12 February 2018 в 00:18

12 ответов

Другим способом gnome является использование dbus.

dbus-send --system --print-reply \
    --dest="org.freedesktop.UPower" \
    /org/freedesktop/UPower \
    org.freedesktop.UPower.Suspend

Для этой команды есть два преимущества pm-suspend.

Он заблокирует ваш экран (после возобновления ), если этот параметр выбран в gnome. Он не требует привилегий root, поэтому его легко добавить в виде сочетания клавиш, например.

Как упоминалось в комментариях об обмене Suspend в последней строке на Hibernate, создается команда спящего режима:

dbus-send --system --print-reply \
    --dest="org.freedesktop.UPower" \
    /org/freedesktop/UPower \
    org.freedesktop.UPower.Hibernate

Если спящий режим выбрасывает Error org.freedesktop.UPower.GeneralError: not authorized, ваш пользователь может не допускается спящий режим. Измените или создайте /etc/polkit-1/localauthority/50-local.d/com.ubuntu.enable-hibernate.pkla, чтобы он содержал следующий раздел: (источник)

[Re-enable hibernate by default]
Identity=unix-user:*
Action=org.freedesktop.upower.hibernate
ResultActive=yes

Это было проверено на (source) .

Примечание: Это в основном то же самое, что и ответ qbi, но он обновлен для работы с более новыми версиями Ubuntu, включая спящий режим.

185
ответ дан 29 May 2018 в 12:51
  • 1
    Ваш ответ действительно должен быть первым. Это не-root no-packages-to-be-installed gnome. Подобно! – turbo 7 June 2012 в 21:26
  • 2
    В Hibernate вы можете просто заменить последнюю строку на org.freedesktop.UPower.Hibernate – Sheharyar 11 August 2013 в 13:46
  • 3
    на моем 13.10 он действительно работает. однако экран не заблокирован после возобновления, даже если в разделе «Безопасность и конфиденциальность», «Требовать мой пароль при пробуждении из Suspend», активирован . – andreas-h 22 February 2014 в 18:24
  • 4
    Не работал для меня (Gnome 3.12, Ubuntu 14.04). Кажется, интерфейс [UPower.Suspend] удален, согласно bugs.launchpad.net/ubuntu/+source/gnome-power-manager/+bug/… – Gui Ambros 25 May 2014 в 19:09
  • 5
    Интерфейс Suspend был перенесен на логин; askubuntu.com/questions/652978 – Khurshid Alam 6 August 2015 в 10:52

Русский

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

sudo bash -c "sleep 1h; pm-suspend"

и ваш компьютер засыпает через 1 час.

Вы можете заменить 1h на то, что вы хотите: h в течение часов, m в течение минут, s для

Спокойной ночи!

Английский

Si vous voulez juste que votre ordinateur se mette en ville vousleus vous endormir en ecoutant votre radio préférée, ouvrez Terminal et tapez:

sudo bash -c "sleep 1h; pm-suspend"

et votre ordinateur s'endormira dans une heure.

Vous pouvez remplacer 1h par ce que vous voulez: h pour les heures, m залить минуты, s

Bonne nuit!

Español

Si quieres suspender tu computadora en una hora porque quieres и dormir escuchando tu estación de radio favorita, tan solo abre el terminal y escribe:

sudo bash -c "sleep 1h; pm-suspend"

y tu computadora se quedará dormida en 1 hora.

Puedes reemplazar 1h por lo que desees: h para horas, m para minutos, s para segundos, [ f18] para días.

¡Buenas noches!

50
ответ дан 29 May 2018 в 12:51
  • 1
    Идеальное, простое решение! – wakeup 12 February 2014 в 08:19
  • 2
    Это мой прецедент, который я ищу! AFIK pm- * может работать без прав суперпользователя – ruX 29 July 2014 в 03:49
  • 3
    лучший ответ, простой, элегантный, без установки дополнительных пакетов – Louis 16 December 2015 в 12:04

Для Ubuntu 12.04 LTS и Ubuntu 13.04

Чтобы получить спящий режим:

sudo pm-hibernate

Чтобы получить Suspend:

sudo pm-suspend
30
ответ дан 29 May 2018 в 12:51
  • 1
    "sudo pm-suspend" не работает на мяту 13 mate :( – rsjethani 23 November 2012 в 16:16
  • 2
    Да, я думаю, что пакет не был установлен. ищите эти пакеты в синаптических. – Ten-Coin 23 November 2012 в 23:34
  • 3
    пакет установлен, я думаю, что «mate-power-manager» вмешивается в него. – rsjethani 24 November 2012 в 02:22
  • 4
    Недостатком этого метода является то, что если вы используете GUI, pm-suspend НЕ блокирует ваш сеанс, что может быть небезопасным. – Raúl Salinas-Monteagudo 18 February 2015 в 16:48
  • 5
    Он также работает на ubuntu 15.10. – Searene 18 December 2015 в 08:29

Вы можете использовать файл /sys/power/state для этого. Сначала выясните, какие состояния поддерживаются:

user@linux:_> cat /sys/power/state
standby mem disk

root@linux:~> echo -n mem > /sys/power/state  # suspend to ram
root@linux:~> echo -n disk > /sys/power/state  # suspend to disk

или через dbus:

# Приостановить dbus-send --session --dest = org.gnome.PowerManager \ --type = method_call --print-reply --reply-timeout = 2000 \ / org / gnome / PowerManager org.gnome.PowerManager.Suspend #Hibernate dbus-send --session --dest = org.gnome.PowerManager \ --type = method_call --print-reply --reply-timeout = 2000 \ / org / gnome / PowerManager org.gnome.PowerManager.Hibernate

В соответствии с этой записью в панели запуска вышеупомянутый интерфейс был удален. Так что в Ubuntu это не сработает.

22
ответ дан 29 May 2018 в 12:51
  • 1
    Первая идея дает мне: " bash: echo: write error: Invalid argument " Идея Dbus дает результат: «Ошибка org.freedesktop.DBus.Error.UnknownMethod: Method " Suspend " с сигнатурой "" на интерфейсе "org.gnome.PowerManager" не существует " – user1034 10 August 2010 в 01:58
  • 2
    Я добавил небольшое объяснение /sys/power/state -thing. Кроме того, метод dbus был удален из Ubuntu, поэтому он больше не будет работать. – qbi 10 August 2010 в 02:45
  • 3
    $ sudo echo -n mem > /sys/power/state - bash: /sys/power/state: Permission denied – Hubro 25 August 2014 в 02:01
  • 4
    Это отлично работает. Для людей, имеющих проблемы с этим методом при использовании sudo, «pipe to file», aka " " " запущен в вашей текущей оболочке, поэтому он не получает привилегий суперпользователя, в то время как ваше эхо. Сначала вам нужно использовать sudo -i, или pipe to sudo tee: echo mem | sudo tee /sys/power/state – RandomInsano 1 September 2014 в 09:22

Чтобы отключить систему (14.04) из командной строки (или комбинации клавиш), используйте:

dbus-send --system --print-reply --dest="org.freedesktop.login1" /org/freedesktop/login1 org.freedesktop.login1.Manager.PowerOff boolean:true

Я нашел это, играя с gdbus, который может отображать доступные интерфейсы: [!d1 ]

Чтобы просмотреть службы, доступные на шине:

dbus-send --system --dest=org.freedesktop.DBus --type=method_call --print-reply /org/freedesktop/DBus org.freedesktop.DBus.ListNames

Чтобы найти методы:

gdbus introspect --system --dest org.freedesktop.login1 --object-path /org/freedesktop/login1 --recurse
11
ответ дан 29 May 2018 в 12:51

Ответ dbus-send Адама Паэтница не работал, как предполагалось для меня на ясном; машина разбудила разблокировку, хотя диспетчер gnome-power установлен для блокировки экрана при пробуждении. Я хочу, чтобы экран был заблокирован при пробуждении, и обнаружил, что следующее:

$ gnome-screensaver-command --lock && pmi action hibernate

Я полагаю, это не зависит от конфигурации gnome, но я не тестировал это. [ ! d1]

8
ответ дан 29 May 2018 в 12:51
  • 1
    Ницца. Или xscreensaver-command --lock, в зависимости от обстоятельств. – phyzome 4 March 2017 в 05:49

, так как 15.04 systemD - стандартная система init, поэтому есть новая команда, которая будет использоваться:

systemctl suspend
8
ответ дан 29 May 2018 в 12:51
  • 1
    Я использую Xubuntu 15.04. Команда systemctl suspend приостанавливает работу компьютера, но это не приводит к блокировке экрана, даже если я проверил экран блокировки, когда система идет на спящий режим. установите флажок в настройках - & gt; Power Manager - & gt; Безопасность. Кто-нибудь может понять, почему? – Teemu Leisti 10 April 2016 в 16:28
  • 2
    Я обновился до Xubuntu 16.04. Команда systemctl suspend все еще приостанавливает работу компьютера. Теперь это также заставляет экран блокироваться, если и только если экран блокировки, когда система переходит в режим сна, установите флажок в настройках - & gt; Power Manager - & gt; Проверяется безопасность. – Teemu Leisti 22 June 2016 в 21:54

Новый интерфейс

... который работает в 15.10 Wily и, возможно, Utopic и Vivid.

dbus-send --print-reply --system                         \
    --dest=org.freedesktop.login1                        \
    /org/freedesktop/login1                              \
    org.freedesktop.login1.Manager.Suspend boolean:true

Полезно это не требует sudo, в отличие от команды pm-suspend.

2
ответ дан 29 May 2018 в 12:51
  • 1
    Мой XPS 13 9350 с Debian / Gnome был с проблемами приостановки / спячки при закрытии крышки. После выполнения этой команды (и эквивалента для спящего режима) она успешно перешла в режим приостановки (и спящий режим) и теперь закрывает и открывает крышку, как и следовало ожидать! – Victor Schröder 25 December 2016 в 22:29

Вот как поставить удаленную машину в режим ожидания по ssh:

ssh -t 192.168.1.4 'sudo nohup &>/dev/null bash -c "(sleep 1; echo -n mem >/sys/power/state) &"' x@192.168.1.4's password: [sudo] password for x: Connection to 192.168.1.4 closed.

/ sys / power / state работает в Ubuntu 13.10. pmi дает ошибку Dbus.

1
ответ дан 29 May 2018 в 12:51

Лично я экспериментировал с методом pmi. Однако, когда я попробовал это, у меня появилось сообщение об ошибке: Error org.freedesktop.DBus.Error.Spawn.ChildExited: Launch helper exited with unknown return code 1. Тем не менее, есть обходной путь в третьем комментарии к этому отчету об ошибке, который, похоже, сработал для меня (я использую Ubuntu 13.03).

0
ответ дан 29 May 2018 в 12:51

Обновление для тех, кто, как и я, все еще работает над системами KDE / Ubuntu 14.04. Чтобы заблокировать использование qdbus и приостановить использование dbus. Полная команда:

qdbus org.freedesktop.ScreenSaver /ScreenSaver Lock && dbus-send --system --print-reply --dest="org.freedesktop.UPower" /org/freedesktop/UPower org.freedesktop.UPower.Suspend

Чтобы спящий режим, т.е. приостановить работу с жестким диском вместо ОЗУ, замените команду «Suspend» в конце команды на «Hibernate».

Чтобы просто заблокировать экран без приостановки, xscreensaver-command -lock будет работать, если вы набираете только 1 дефис для опции «-lock» и только если заставка работает. На самом деле это не очень полезная команда. Использовать i3lock проще, но тогда вы не получите аккуратного диалогового окна входа в систему, чтобы вернуться к работе, как это будет при использовании qdbus.

0
ответ дан 29 May 2018 в 12:51

Следующее работает для меня в 16.04 (с настольным компьютером Gnome):

gnome-screensaver-command --lock && compsleep

Я также установил его как пользовательскую комбинацию клавиш с помощью панели настроек Gnome в виде клавиш "Shift-Super-X".

0
ответ дан 29 May 2018 в 12:51

Другие вопросы по тегам:

Похожие вопросы: