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


357

Как я могу приостановить или перевести мой ноутбук в спящий режим с помощью командной строки, не устанавливая дополнительное программное обеспечение?


2
Для Ubuntu 16.04 см. Этот вопрос: askubuntu.com/questions/777178/suspend-command-in-ubuntu-16-04 и его ответsystemctl suspend
CJlano

Ответы:


312

Традиционно Ubuntu поддерживает довольно тупой метод приостановки и гибернации. Ни один из них не будет хорошо интегрироваться с другими приложениями, а иногда даже не будет работать на некоторых машинах. Новый метод не требует root и уведомляет все приложения, прослушивающие события power.

Системный метод

Начиная с Ubuntu 16.04, systemctlнеобходимо использовать call (см. Команду Suspend в Ubuntu 16.04 )

systemctl suspend

а также

systemctl hibernate

Новый метод

Смотрите ответ здесь на этой странице от Адама Пецника относительно использования dbus . В идеале вы должны создать ~/bin/suspendярлык / скрипт, который облегчит использование этого действия.

Для использования поверх ssh вы должны изменить правила policykit, как описано Питером В. Мёрчем

Старый метод

В соответствии с Ubuntu Forum вы можете использовать следующие команды:

pmi action suspend

а также

pmi action hibernate

Для этого необходимо установить пакет интерфейса powermanagement (не тестировался).

sudo apt-get install powermanagement-interface

Я также нашел команды sudo pm-suspendи sudo pm-hibernateдля работы на моем нетбуке.


21
у меня работает pm-suspend и pm-hibernate, и это легко. Требуется sudo, но это нормально. (Идея pmi была найдена ранее, но установка пакета для использования suspend - это очень плохо ...)
user1034

1
Обратите внимание, что вы должны apt-get install powermanagement-interfaceзапустить pmi.
nealmcb

1
11.10 работает только pm- *, также с добавленным powermanagament-интерфейсом
Omegafil

1
не работает с моей Ubuntu 12.10. послеapt-get install powermanagement-interface
somethis

1
новый метод теперь не работает, см. unix.stackexchange.com/questions/153099/…
ijk

188

Удобный для гномов способ - использовать dbus.

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

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

  1. Он заблокирует ваш экран (после возобновления), если у вас выбрана эта опция в gnome.

  2. Он не требует привилегий 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

Это было проверено на UbuntuGnome 14.04 .

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


15
Ваш ответ действительно должен быть первым. Это не-root способ сделать это без установленных пакетов. Подобно!
Турбо

11
То есть Hibernate, вы можете просто заменить последнюю строку наorg.freedesktop.UPower.Hibernate
Sheharyar

2
на моем 13.10 это работает. Однако, экран не заблокирован на резюме, даже если в «Безопасность и конфиденциальность», «Требовать пароль при выходе из ждущего» будет активирован.
andreas-h

3
У меня не сработало (Gnome 3.12, Ubuntu 14.04). Кажется, интерфейс [UPower.Suspend] был удален, в соответствии с bugs.launchpad.net/ubuntu/+source/gnome-power-manager/+bug/…
Ги Амброс

4
Интерфейс Suspend был перенесен в logind; askubuntu.com/questions/652978
Хуршид Алам

58

английский

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

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

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

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

Доброй ночи!

Français

Вообще-то, вы должны знать, что вам нужно знать, что вам нужно, чтобы узнать больше о том, что вам нужно радиовещание, а также о терминале и ленте:

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

et votre ordinateur s'endormira dans und heure. Quand vous vous réveillerez, il aura conservé en mémoire vos приложения Overtes.

Vous remplacer может оплатить 1hпар в.п. дие уоиз Voulez: hналить ль Heures, mвлить ле минут, sвлить ль secondes, dвлить ль Jours.

Доброй ночи!

Español

Приводит к сведению информацию о том, что все в порядке и в течение определенного времени, и в то же время, когда речь идет о радиопередаче, соло и терминале, опишите:

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

y tu computadora se quedará dormida en 1 hora. Cuando despiertes, allí habrán quedado abiertas tus imágenes y todas tus cosas.

Puedes reemplazar 1hpor lo que desees: hpara horas, mpara minutos, spara segundos, dpara días.

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


Это мой вариант использования, который я ищу! AFIK pm- * может быть запущен без прав суперпользователя
ruX

31

Для Ubuntu 12.04 LTS и Ubuntu 13.04

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

sudo pm-hibernate

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

sudo pm-suspend

"sudo pm-suspend" не работает на
Mint

Да, я думаю, что пакет не был установлен. ищите эти пакеты в синаптике.
rɑːdʒɑ

2
Недостаток этого метода заключается в том, что если вы используете графический интерфейс, pm-suspend не будет блокировать ваш сеанс, что может быть небезопасно.
Рауль Салинас-Монтеагудо

1
Он работает и на Ubuntu 15.10.
Searene

1
работает 14.04 лтс
Виталий Зданевич

22

Вы можете использовать файл /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 # Спящий режим dbus-send --session --dest = org.gnome.PowerManager \ --type = method_call --print-reply --reply-timeout = 2000 \ / org / gnome / PowerManager org.gnome.PowerManager.Hibernate

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


Первая идея дает мне: «bash: echo: write error: Недопустимый аргумент». Идея Dbus выводит: «Ошибка org.freedesktop.DBus.Error.UnknownMethod: метод« Suspend »с подписью» «на интерфейсе» org.gnome.PowerManager » не существует "
user1034

Я добавил небольшое объяснение к /sys/power/stateэтому. Кроме того, метод dbus был удален из Ubuntu, поэтому он больше не будет работать.
qbi

$ sudo echo -n mem > /sys/power/state-bash: /sys/power/state: Permission denied
Hubro

3
Это прекрасно работает. Для людей, испытывающих проблемы с этим методом при использовании sudo, в вашей текущей оболочке выполняется «pipe to file», иначе «>», поэтому он не получает привилегии суперпользователя, пока ваш эхо делал. Вы должны будете использовать sudo -iсначала, или трубу, чтобы sudo teeпонравиться так:echo mem | sudo tee /sys/power/state
RandomInsano

12

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

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

Я выяснил это, поиграв с gdbus, который может перечислить доступные интерфейсы:

Чтобы перечислить услуги, доступные на автобусе:

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

12

поскольку 15.04 Systemd является стандартной системой инициализации , так что новая команда будет использоваться:

systemctl suspend

Я использую Xubuntu 15.04. Команда systemctl suspendприостанавливает работу компьютера, но она не приводит к блокировке экрана, хотя я установил флажок «Блокировка экрана, когда система переходит в спящий режим» в меню «Настройки» -> «Диспетчер питания» -> «Безопасность». У кого-нибудь есть идеи, почему?
Теему Лейсти

Я обновился до Xubuntu 16.04. Команда по- systemctl suspendпрежнему приостанавливает работу компьютера. Теперь это также вызывает блокировку экрана, если и только если установлен флажок «Блокировка экрана, когда система переходит в спящий режим» в меню «Настройки» -> «Управление питанием» -> «Безопасность».
Теему Лейсти

8

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

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

Я полагаю, что это не зависит от конфигурации GNOME, но я не проверял это.


Приятно. Или xscreensaver-command --lockв зависимости от обстоятельств.
phyzome

3

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

... который работает в 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команды.


Мой XPS 13 9350 с Debian / Gnome был с проблемами приостановки / гибернации при закрытии крышки. После выполнения этой команды (и аналога спящего режима) она успешно перешла в режим ожидания (и спящий режим), а теперь закрытие и открывание крышки работают, как и ожидалось!
Виктор Шредер

1

Вот как перевести удаленный компьютер в режим ожидания через 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: 
[sudo] пароль для x: 
Подключение к 192.168.1.4 закрыто.

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


0

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


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

0

Обновление для тех, кто, как и я, все еще работает в системах 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

16.04 у меня работает (с рабочим столом Gnome):

gnome-screensaver-command --lock && compsleep

Я также установил его в качестве пользовательского сочетания клавиш через панель настроек Gnome в качестве клавиш «Shift-Super-X».

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.