How can I suspend/hibernate from command line?
Traditionally ubuntu supported a fairly blunt method of suspend and hibernate. Neither would integrate well with other apps and sometimes not even work on some machines. This new method doesn’t require root and notifies all applications listening for power events.
Systemd Method
Starting with Ubuntu 16.04, systemctl call must be used (See Suspend command in Ubuntu 16.04)
New Method (obsolete)
Obsolete circa Ubuntu 16.04; use systemctl instead, as above.
See the answer here on this page from Adam Paetznick regarding the use of dbus. Ideally you would create a ~/bin/suspend shortcut/script that makes the use of this action easy.
Old Method
According to the Ubuntu Forum you can use the following commands:
This requires that you install the powermanagement-interface package (not tested).
sudo apt-get install powermanagement-interface
I have also found the commands sudo pm-suspend and sudo pm-hibernate to work on my netbook.
pm-suspend and pm-hibernate works for me and it’s easy. Requires sudo but that’s OK. (Found pmi idea before but installing a package to use suspend is well bad. )
The gnome-friendly way is to use dbus.
dbus-send --system --print-reply \ --dest="org.freedesktop.UPower" \ /org/freedesktop/UPower \ org.freedesktop.UPower.Suspend
There are two advantages to this command over pm-suspend .
- It will lock your screen (upon resume) if you have that option selected in gnome.
- It does not require root privilege, so it is easy to add it as a keyboard shortcut, for example.
As mentioned in the comments exchanging the Suspend in the last line to Hibernate creates a hibernate command:
dbus-send --system --print-reply \ --dest="org.freedesktop.UPower" \ /org/freedesktop/UPower \ org.freedesktop.UPower.Hibernate
If the hibernation throws Error org.freedesktop.UPower.GeneralError: not authorized your user might not be allowed to hibernate. Edit or create /etc/polkit-1/localauthority/50-local.d/com.ubuntu.enable-hibernate.pkla so it contains the following section: (source)
[Re-enable hibernate by default] Identity=unix-user:* Action=org.freedesktop.upower.hibernate ResultActive=yes
Note: This is basically the same as qbi’s answer, but updated to work for newer versions of Ubuntu as well as including hibernate.
Спящий режим
Спящий режим (hibernate) – энергосберегающий режим операционной системы компьютера, позволяющий сохранять содержимое оперативной памяти на энергонезависимое устройство хранения данных (жесткий диск) перед выключением питания.
При засыпании все данные процессов вытесняются в swap файл, а также в swap сохраняются некоторые настройки устройств, и после этого система переходит в режим с полным отключением питания.
При включении компьютера система начинает загружаться как обычно, но если в процессе загрузки ядро обнаруживает образ памяти сохраненный в swap, то загрузка в нормальном режиме прекращается и начинается восстановление состояния оперативной памяти из swap-а. Кроме этого восстанавливаются настройки устройств (видеоадаптер, сетевые карты, и пр.).
И вот именно с восстановлением работоспособности устройств компьютера и связаны все основные проблемы с режимом сна. Не всегда драйвера устройств позволяют осуществить необходимые действия по сохранению и восстановление настроек после сна. И это может приводить к зависанию компьютера после попытки проснуться.
Еще одна неприятность этого режима проявляется при больших объемах оперативной запоминающей памяти компьютера. Речь идет об объемах оперативной памяти от 8Gb и выше (что в последние годы встречается все чаще). Если памяти много, то и много придется сохранять в swap при засыпании и соответственно вычитывать из swap при просыпании. Из за этого засыпание и просыпания могут занять довольно значительное время. Может оказаться, что вам проще и гораздо быстрее все-таки сохранить свою работу и выключить нормально компьютер, а потом, после обычной загрузки, открыть свои рабочие файлы заново.
Именно из-за озвученных выше особенностей режима сна в последних версиях Ubuntu по умолчанию этот режим энергосбережения отключен.
Настройка
Для поддержки работы данного режима у вас должен присутствовать swap-раздел или (рекомендуется) swap-файл.
Рекомендации по созданию swap-раздела можно просмотреть здесь. Вариант со swap-файлом является более удобным в использовании (но чуть более сложным при создании) т.к. он не занимает отдельный раздел, легко удаляется, его размер можно легко изменить (без необходимости менять разметку диска и двигать/изменять размеры других разделов).
Но учтите, не на любой файловой системе можно создать (и использовать) swap-файл: из за некоторых особенностей организации размещения файлов на диске swap-файл нельзя использовать на файловой системе btrfs (без специальных ухищрений).
Создание swap-файла
Про рекомендуемый размер swap-файла можно узнать здесь.
sudo dd if=/dev/zero of=/swapfile bs=1M count=4096
sudo chmod 600 /swapfile && sudo mkswap /swapfile
sudo swapoff -a sudo swapon /swapfile
echo "/swapfile swap swap defaults,pri= 0 0"| sudo tee -a /etc/fstab
Настройка гибернации в swap-файл
mount | grep " / " sudo blkid
Укажите первый физический блок swap-файла. Его можно узнать с помощью swap-offset из пакета uswsusp :
echo "resume=UUID= resume_offset=" | sudo tee /etc/initramfs-tools/conf.d/resume
resume=UUID=your UUID> resume_offset=youroffset>
sudo update-grub sudo update-initramfs -u
Проверьте работу гибернации с помощью команды pm-hibernate из пакета pm-utils :
Если у вас все работает — переходите к следующему пункту. Если нет — воспользуйтесь утилитой uswsusp .
Если у вас все заработало — радуйтесь, если нет — придется конфигурировать uswsusp :
sudo dpkg-reconfigure -pmedium uswsusp
На вопрос «Продолжить без работоспособного пространства подкачки?» в случае использования swap-файла отвечаем «Да», пространство подкачки в диалоге указываем по UUID (/dev/disk/by-uuid/ ), раздел не шифруем (иначе может случиться подобное описанному здесь). После этого автоматически будет сформирован uswsusp.conf с необходимыми параметрами. Пробуем опять:
Если заработало, заменяем вызов pm-hibernate на s2disk :
echo "SLEEP_MODULE=uswsusp" | sudo tee -a /etc/pm/config.d/module
Снова проверьте гибернацию (возможно, перед этим потребуется перезагрузка):
Если не заработало с uswsusp , используйте TuxOnIce — он обычно работает без проблем.
Если гибернация заработала, то остается только активировать кнопку «Спящий режим» в меню выключения. Для этого:
sudo nano /var/lib/polkit-1/localauthority/10-vendor.d/com.ubuntu.desktop.pkla
[Disable hibernate by default in upower] Identity=unix-user:* Action=org.freedesktop.upower.hibernate ResultActive=no [Disable hibernate by default in logind] Identity=unix-user:* Action=org.freedesktop.login1.hibernate ResultActive=no
Если гибернация работает по вызову pm-hibernate , но не работает по кнопке «Спящий режим» в меню выключения, то, возможно, проблема в том, что эта кнопка вызывает команду systemctl hibernate , которая по умолчанию не поддерживает uswsusp (подробно эта проблема в LXDE описана здесь).
sudo cp /lib/systemd/system/systemd-hibernate.service /etc/systemd/system/ sudo nano /etc/systemd/system/systemd-hibernate.service
ExecStart=/lib/systemd/systemd-sleep hibernate
ExecStart=/bin/sh -c 's2disk && run-parts --regex .\* -a post /lib/systemd/system-sleep'
Как отключить режим сна и гибернации в Linux
В этой статье мы рассмотрим, как отключить режим гибернации и режим сна в системе Linux. Но прежде чем мы сделаем это, давайте кратко рассмотрим эти два режима.
Режим гибернации при его включении, система Linux записывает свое текущее состояние в файл. Далее при включении все эти данные восстанавливаются и вы продолжаете работу с места остановки. Т.е. все открытые документы, папки, файлы остаются в таком же состояние, как до режима гибернации.
Режим сна помогает экономить электроэнергию, когда вы не используете свою систему. Чтобы вернуться к использованию вашей системы, требуется просто щелкнуть мышью или нажать на любую кнопку клавиатуры. Иногда вам может потребоваться нажать кнопку питания.
В Linux есть 3 режима различных режима ожидания:
- Suspend to RAM (Ждущий режим): этот режим используют большинство ноутбуков. И автоматически входят в этот режим в случае бездействия по истечению определенного периода времени. А так же при закрытии крышки ноутбука, когда компьютер работает от аккумулятора. В этом режиме питание остается для оперативной памяти, а большинство компонентов отключаются.
- Suspend to Disk (Hibernate): в этом режиме состояние ПК сохраняется в файле подкачки, и система полностью выключается. Однако включив его, все восстанавливается и вы продолжаете с того места, где оставались.
- Suspend to both (Гибридная приостановка): здесь состояние машины сохраняется в swap, но система не выключается. А так же компьютер выполняет приостановку системы в ОЗУ. Если у вас не установлена батарея тогда, вы можете безопасно возобновить работу системы с диска и продолжить свою работу. Этот метод намного медленнее, чем приостановка работы в ОЗУ.
Отключить Режим сна и Гибернацию в Linux
Чтобы предотвратить ждущий режим или переход вашей системы Linux в спящий режим, вам необходимо отключить следующие systemd:
$ sudo systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target
Вы должны получить вот такой результат, как показан ниже:
hybrid-sleep.target
Created symlink /etc/systemd/system/sleep.target → /dev/null.
Created symlink /etc/systemd/system/suspend.target → /dev/null.
Created symlink /etc/systemd/system/hibernate.target → /dev/null.
Created symlink /etc/systemd/system/hybrid-sleep.target → /dev/null.
Отключить ждущий режим и гибернацию в Ubuntu
Далее требуется перезагрузить систему и снова войти.
Проверьте были ли внесены изменения в систему с помощью команды:
$ sudo systemctl status sleep. target suspend.target hibernate.target hybrid-sleep. target
Из выходных данных мы видим, что все четыре состояния были отключены.
Включить режим сна и гибернацию в Linux
Чтобы снова включить ждущий режим и гибернации требуется выполнить команду:
$ sudo systemctl unmask sleep. target suspend.target hibernate.target hybrid-sleep. target
Вот такой результат вы должны получить:
Removed /etc/systemd/system/sleep.target.
Removed /etc/systemd/system/suspend.target.
Removed /etc/systemd/system/hibernate.target.
Removed /etc/systemd/system/hybrid-sleep.target.
Чтобы убедиться в том что команда выполнена корректна, введите команду:
$ sudo systemctl status sleep. target suspend.target hibernate.target hybrid-sleep. target
Проверка приостановки и гибернации в Ubuntu
Если вы не желаете того чтоб ваш ноутбук при закрытии крышки уходил в режим ожидания (сна). Вам требуется отредактировать файл /etc/systemd / logind.conf.
$ sudo vim /etc / systemd/logind. conf
Добавьте в этот файл следующие строки:
[Login]
HandleLidSwitch=ignore
HandleLidSwitchDocked=ignore
Сохраните и закройте файл. Не забудьте перезагрузиться, чтобы изменения которые в сделали вступили в силу.
Заключение
На этом все, в этой статье я подробна рассмотрел как отключить ждущий режим (сна) и гибернации в вашей системе Linux. Очень надеюсь, что руководство было полезным.