Linux сам выходит из спящего режима

Обновлено: 02.07.2024

В этой статье мы расскажем, как отключить режимы ожидания и гибернации в системах Linux. Но прежде чем мы это сделаем, давайте кратко рассмотрим эти два режима.

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

Приостановка работы системы помогает сэкономить электроэнергию. Чтобы вернуться к работе, нужно просто щелкнуть мышью или нажать любую кнопку клавиатуры. Иногда может потребоваться нажать кнопку питания.

  • Suspend to RAM (Normal Suspend): это режим, в который большинство ноутбуков автоматически переходят в случае бездействия в течение определенного времени или после закрытия крышки, когда компьютер работает от батареи. В этом режиме зарезервировано питание для оперативной памяти и отключается большинство компонентов.
  • Suspend to Disk (Hibernate): в этом режиме состояние машины сохраняется в пространстве подкачки, и система полностью отключается. Однако при включении все восстанавливается, и вы начинаете с того места, где остановились.
  • Suspend to both (Hybrid suspend): здесь состояние машины сохраняется в своп, но система не выключается. Батарея не разряжается, и вы можете безопасно возобновить работу системы с диска и продолжить работу. Этот метод намного медленнее, чем Suspend to RAM.

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


Проверьте, были ли внесены изменения, с помощью команды:


Из выходных данных мы видим, что все четыре состояния отключены.

Включение режима ожидания и гибернации в Linux

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



Чтобы система не перешла в режим ожидания после закрытия крышки, отредактируйте файл /etc/systemd/logind.conf.

Сохраните и выйдите из файла. Обязательно перезагрузитесь, чтобы изменения вступили в силу.

Здравствуйте Не смог нагуглить, может кто советом поможет куда копать.

В режиме полета проблема остается.

Что из логов или параметров вам добавить для определения причины?



Мышь оптическая? Проверь мышку.



Так ты не топай, а то спать ему не даёшь.


да, не топаю, тихонько подхожу, а он не спит

имхо, аппаратное что-то.



Вот решение от меня, через правила udev.

  • ACTION - когда выполнять правило, add значит при добавлении устройства
  • SUSBSYTEM - подсистема, тут описаны правила для сетевой карты и устройств ввода подключенных по USB

idVendor и idProduct можно узнать из вывода lsusb , вот как это выглядит у меня:

Тут важна строка ID , где эти параметры указаны через двоеточие.

ATTR="disabled" отключает пробуждение по событиям от самого устройства

RUN+="/bin/sh -c 'echo disabled > /sys$env/../../power/wakeup'" отключает пробуждение у контроллера, может быть полезно, если устройство нельзя настроить.

В последней строка настройка сетевой карты, тут важен ATTR=="14:88:fa:54:cc:52" , где указан MAC-адрес сетевой карты, ATTR="disabled" указывает, что надо отключить пробуждение на самом устройстве.

После этого перезагружаем компьютер и проверяем, что еще может пробуждать систему командой cat /proc/acpi/wakeup | grep enabled . В выводе видны адреса контроллеров, а не самих устройств.

Пример вывода у меня после применения udev правил:

PEG0 обычно так называют встроенную видеокарту.

RP09 и RP05 это что-то на шине PCI-E.

PXSX это кривое название контроллера, можно поискать его в выводе команды lspci , вот что у меня выдаёт

Значит это контроллер USB3.1 от ASMedia, который установлен дополнительно на моей материнской плате, его можно отключить способом, который был описан в приведённых раньше ссылках(через rc.local), если это нужно.

Главное отличие такого способа от тех, что были описаны по ссылкам через rc.local , так это то, что тут можно точно указать какие устройства не будут пробуждать компьютер из сна, а не бить по площадям, отключая пробуждение на всех устройствах контроллера.

В статье на Арчевики, предложили похожий способ, но с обратным эффектом и не такой универсальный, там предлагают вбивать адрес каждого контроллера руками.

В этой статье мы рассмотрим, как отключить режим гибернации и режим сна в системе 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

Как отключить режим сна и гибернации в Linux

Из выходных данных мы видим, что все четыре состояния были отключены.

Включить режим сна и гибернацию в 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.

Включить режим сна и гибернации в Linux

Включить режим сна и гибернации в Linux

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

$ sudo systemctl status sleep. target suspend.target hibernate.target hybrid-sleep. target

Проверка включения режима сна и гибернации на Linux

Проверка включения режима сна и гибернации на Linux Проверка приостановки и гибернации в Ubuntu

Если вы не желаете того чтоб ваш ноутбук при закрытии крышки уходил в режим ожидания (сна). Вам требуется отредактировать файл /etc/systemd / logind.conf.

$ sudo vim /etc / systemd/logind. conf

Добавьте в этот файл следующие строки:

[Login]
HandleLidSwitch=ignore
HandleLidSwitchDocked=ignore

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

Заключение

На этом все, в этой статье я подробна рассмотрел как отключить ждущий режим (сна) и гибернации в вашей системе Linux. Очень надеюсь, что руководство было полезным.

Когда я ухожу спать, я нажимаю кнопку Sleep на клавиатуре и компьютер переходит в спящий режим, но иногда он внезапно включается без каких-либо причин! Раньше я думал, что проблема в клавиатуре, у меня слегка залипает клавиша альт, думал что компьютер включается из за неё, но сейчас заметил, что это происходит как правило по утрам! Честно говоря, очень раздражает такое поведение, особенно когда он будит меня. Проблема актуальна на Ubuntu GNOME 17.04, но раньше (довольно давно) я пользовался Xubuntu и с ним происходило тоже самое.

UPD: в общем, я пробовал некоторое время отключать клавиатуру и мышь после перевода в спящий режим и в те дни компьютер сам не включался, но это ещё не показатель. Сегодня и позавчера компьютер включился ровно в 10:00 и 5:00 утра. При этом он разбудил меня относительно громким шумом. Я посмотрел в системыный монитор и самым прожорливым из незнакомых мне процессов был gsd-housekeeping , он задействовал около 100 мб памяти. Понятия не имею, что этот плагин делает; попробую его отключить.

2,566 1 1 золотой знак 14 14 серебряных знаков 28 28 бронзовых знаков

сам собой всплыл анекдот про реанимацию и уборщицу с пылесосом. // вы можете провести простой эксперимент: отключите все периферийные устройства и дождитесь утра.

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

Зависит от модели компьютера, версии ядра и пр., а вы не предоставили эту информацию.

@0andriy я сказал, что сменил дистрибутив, а проблема осталась. Да и вообще, я довольно часто обновляю ядро, т.е. версия ядра вряд ли имеет значение. А по поводу модели компьютера. Ну это не ноутбук, нет у него "модели". Какое конкретно железо может оказывать такое воздействие?

Ядро имеет отношение самое непосредственное, как и внутренние пошивки. Про то, что это не ноутбук вы упомянули только сейчас. О чём я и говорил -- если человек хочет, чтобы ему помогли, будет искать способы.

Спящий режим Ubuntu - это режим энергосбережения, позволяющий отключить питание компьютера, сохранив при этом текущее состояние операционной системы. Это очень удобно: пользователь сможет включить компьютер и продолжить работу с приложениями, которые были запущены до отключения питания. Например, редактировать уже открытый текстовый документ или смотреть фильм с того же тайм-кода. Данный режим доступен как на ноутбуках, так и на настольных компьютерах. Мы будем рассматривать аспекты его использования в дистрибутиве Ubuntu 18.04 LTS.

Вообще, существует три разновидности спящего режима: режим ожидания (Suspend to RAM), режим гибернации (Hibernate, Suspend to disk) и гибридный режим (Hybrid sleep, Suspend to both). Первый режим доступен в Ubuntu по умолчанию, второй и третий - деактивированы из-за многочисленных жалоб пользователей. Мы рассмотрим все три режима для того, чтобы читатель мог выбрать наиболее подходящий для него, гарантированно работающий режим самостоятельно.

1. Режим ожидания

Режим ожидания (Suspend to RAM) или простой спящий режим Ubuntu доступен в системе по умолчанию и предусматривает отключение питания компьютера с сохранением питания оперативной памяти. Благодаря этой особенности он работает на подавляющем большинстве компьютеров, хотя и имеет очевидный недостаток, связанный с затратами энергии. Конечно же, каждый случай индивидуален, ведь любой режим энергосбережения предполагает подготовку устройств силами операционной системы с последующей передачей управления прошивке материнской платы, поэтому сложно гарантировать корректную работу даже режима ожидания.

По умолчанию режим ожидания активируется при закрытии крышки ноутбука. Также он может активироваться с помощью функциональной клавиши ноутбука (обычно это клавиша с изображением полумесяца). Кроме того, его можно включить из системного меню, но не самым очевидным образом. Для этого нужно открыть системное меню, нажать клавишу Alt, после чего кнопка завершения работы будет заменена на кнопку перехода в режим ожидания Ubuntu (Рисунок 1).


Рисунок 1. Кнопки завершения работы и перехода в режим ожидания

Вы можете прямо сейчас нажать на эту кнопку и испытать режим ожидания в деле. Если после отключения питания компьютера и последующего нажатия кнопки включения вам удастся продолжить работу с ранее запущенными приложениями, то спящий режим работает корректно. Если же после некоторого ожидания вы видите лишь чёрный экран или элементы графического интерфейса системы оказываются неработоспособными, лучше отключить спящий режим Ubuntu. Для этого в первую очередь следует запустить приложение дли изменения параметров системы с помощью крайней левой круглой кнопки с пиктограммой инструментов в системном меню (Рисунок 2).


Рисунок 2. Кнопка для изменения параметров системы

После открытия окна приложения нужно перейти на вкладку Электропитание. Здесь следует убедиться в том, что в качестве значения параметра При нажатии кнопки выключения не установлено Перевести в режим ожидания, а также нажать на строку Автоматический режим ожидания и отключить переключатель При простое (Рисунок 3).


Рисунок 3. Отключение режима ожидания

В случае закрытия крышки ноутбука всё немного сложнее: нужно установить дополнительное приложение GNOME Tweaks с помощью команды:

sudo apt-get install gnome-tweaks

Далее нужно запустить это приложение (его имя в меню Доп. настройки GNOME), перейти на вкладку Электропитание и отключить переключатель Режим ожидания при закрытии ноутбука (Рисунок 4).


Рисунок 4. Параметры электропитания в GNOME Tweaks

Теперь при закрытии крышки ноутбук не будет переходить в режим ожидания как в старые добрые времена GNOME 2.

А это вызов соответствующего метода DBus:

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

2. Режим гибернации

Режим гибернации (Hibernate, Suspend to disk) деактивирован в Ubuntu по умолчанию и предусматривает отключение питания компьютера с переносом данных из оперативной памяти в раздел подкачки. Разумеется, для корректной работы данного режима размер раздела подкачки должен превышать объём доступной оперативной памяти. Кроме того, данный режим нередко работает некорректно из-за проблем с прошивками материнских плат. Ещё один его недостаток - затраты времени на запись и чтение данных. Для активации режима гибернации необходимо добавить параметр ядра ОС и создать файл конфигурации Polkit.

Начнём с параметра ядра ОС. Он предназначен для передачи имени файла устройства раздела подкачки, в котором будут сохраняться данные состояния ОС. Чтобы узнать имя этого файла, можно воспользоваться следующей командой:

Необходимое имя должно находиться в столбце NAME (Рисунок 5).

В случае его отсутствия у вас не активирован раздел подкачки.

Это имя следует добавить в строку параметров ядра ОС, передаваемую системным загрузчиком GRUB, в форме значения параметра resume. Для этого нужно открыть файл конфигурации /etc/default/grub и отредактировать строку GRUB_CMDLINE_LINUX_DEFAULT. Проще всего это сделать с помощью следующей команды:

Предположим, что именем файла устройства раздела подкачки является /dev/sda5. Тогда строку

придёётся заменить на строку

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash resume=/dev/sda5"

После этого нужно сохранить изменения в открытом файле (Рисунок 6).


Рисунок 6. Измененные параметры ядра Linux

В заключение нужно обновить конфигурацию системного загрузчика с помощью следующей команды:

Помимо этого следует создать файл конфигурации Polkit в директории /etc/polkit-1/localauthority/50-local.d/ с именем com.ubuntu.enable-hibernate.pkla и следующим содержимым:

Теперь приложение для изменения параметров системы позволит активировать режим гибернации при нажатии на кнопку включения (Рисунок 7).


Рисунок 7. Режим гибернации в меню приложения для изменения параметров системы

Это повод проверить спящий режим Ubuntu 18.04 с гибернацией. При отсутствии результата, вы можете снова деактивировать его, удалив созданный файл конфигурации с помощью команды:

sudo rm /etc/polkit-1/localauthority/50-local.d/com.ubuntu.enable-hibernate.pkla

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

gsettings set org.gnome.settings-daemon.plugins.power lid-close-ac-action 'hibernate'

gsettings set org.gnome.settings-daemon.plugins.power lid-close-battery-action 'hibernate'

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

sudo apt-get install dconf-editor

По окончании установки достаточно запустить её (имя в меню Редактор d-conf), осуществить переход org - gnome - settings-daemon - plugins - power и проверить значения параметров lid-close-ac-action и lid-close-battery-action (Рисунок 8).


Рисунок 8. Активированный режим гибернации при закрытии крышки ноутбука

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

gsettings set org.gnome.settings-daemon.plugins.power lid-close-ac-action 'suspend'

gsettings set org.gnome.settings-daemon.plugins.power lid-close-battery-action 'suspend'

Также может возникнуть вопрос: "А как активировать режим гибернации из системного меню?". Вообще, такой возможности не предусмотрено, но вы можете установить расширение GNOME Shell под названием "Hibernate Status Button". Установка расширения осуществляется с помощью Менеджера приложений Ubuntu (само расширение размещено в разделе Дополнения на вкладке Расширения GNOME Shell) (Рисунок 9).

После установки расширения в системном меню появится соответствующая кнопка (Рисунок 10).


Рисунок 10. Кнопка для перехода в режим гибернации

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

Ну и о командах для самостоятельной активации данного режима. Это команда для перехода в режим гибернации с помощью утилиты systemctl:

А это вызов соответствующего метода DBus:

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

3. Гибридный режим сна

Гибридный режим сна (Hybrid sleep, Suspend to both) объединяет в себе оба рассмотренных выше режима энергосбережения. Он деактивирован в Ubuntu по умолчанию и предусматривает отключение питания компьютера с копированием данных из оперативной памяти в раздел подкачки и сохранением питания оперативной памяти. Для корректной работы данного режима, как и режима гибернации, требуется раздел подкачки достаточного размера. С точки зрения пользователя это самый надёжный режим, ведь в случае разряда батареи данные состояния операционной системы могут быть извлечены из раздела подкачки.

Активация данного режима сна осуществляется вместе с активацией режима гибернации. При этом его поддержка не реализована в полной мере в окружении рабочего стола GNOME, поэтому он может быть задействован лишь посредством системной службы logind и рассмотренного выше расширения "Hibernate Status Button" после нажатия клавиши Alt.

Вы можете перевести свой компьютер в этот режим с помощью утилиты systemctl:

А также вызвав метод DBus:

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

Заключение

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

Читайте также: