Вопрос или проблема
Я решил использовать свой Eee PC 1001HA в качестве домашнего сервера. Он подключён через Wi-Fi к роутеру и работает на Ubuntu Server 12.04. Всё функционирует нормально, за исключением одной раздражающей проблемы:
когда я закрываю крышку, ssh-сервер прекращает работу и, я предполагаю, wlan0 тоже.
Я проверял BIOS, но ничего не нашёл, не было опции касательно крышки. Мой wlan0 — это RaLink RT3090.
Проверил ls -lrt /var/log
между закрытиями крышки, но не смог понять эти дьявольские логи. Могу поделиться ими, если нужно.
pm-powersave.log
кажется обновляется между движениями крышки. Так что предполагаю, что мне нужно отключить этот “сервис энергосбережения”. Могу ли я это сделать? Мне всё равно, если сервер будет работать весь день.
Помните, что интерфейса нет, это нетбук с крышкой, и он подключён к адаптеру переменного тока.
правка: Это всего лишь обходное решение, но я могу быстро нажать кнопку питания и закрыть крышку. Таким образом, сервер загружается нормально и автоматически подключается к беспроводной сети. (нашёл здесь)
Чтобы отключить переход в режим сна, мне пришлось отредактировать файл /etc/systemd/logind.conf
и изменить строку:
#HandleLidSwitch=suspend
на
HandleLidSwitch=ignore
Дополнительно убедитесь, что в файле есть эта строка:
LidSwitchIgnoreInhibited=no
Затем перезапустите ОС с помощью:
sudo service systemd-logind restart
Выключить экран ноутбука при закрытии
Это сработало для меня на новой установке Ubuntu Server LTS 18.04.1.
Ответ от @user386160 отлично помог предотвратить переход моего ноутбука в режим сна. Но я обнаружил, что мой монитор оставался включённым, даже когда крышка была закрыта (т.е. вырабатывая ненужное тепло).
Вот дополнительные шаги, которые я предпринял, чтобы выключить экран ноутбука, когда экран был закрыт:
sudo apt-get install acpi-support vbetool
echo "event=button/lid.*" | sudo tee -a /etc/acpi/events/lid-button
echo "action=/etc/acpi/lid.sh" | sudo tee -a /etc/acpi/events/lid-button
sudo touch /etc/acpi/lid.sh
sudo chmod +x /etc/acpi/lid.sh
sudo nano /etc/acpi/lid.sh
Затем установите содержимое файла lid.sh
следующим образом:
#!/bin/bash
grep -q close /proc/acpi/button/lid/*/state
if [ $? = 0 ]; then
sleep 0.2 && vbetool dpms off
fi
grep -q open /proc/acpi/button/lid/*/state
if [ $? = 0 ]; then
vbetool dpms on
fi
просто чтобы подтвердить, я пользователь 14.04 LTS Server на Dell X100e.
sudo apt-get install acpi-support
sudo vi /etc/default/acpi-support # и затем установите SUSPEND_METHODS="none"
sudo /etc/init.d/acpid restart
Сразу могу закрыть крышку, никаких проблем.
Просто постю, чтобы подтвердить решение предыдущих пользователей как единственное необходимое исправление. В данный момент нет необходимости делать что-то ещё дополнительно.
Другой подход,
для меня на Ubuntu Server 20.10, изменение logind.conf не помогло (хотя я сделал это, не тестировал это решение без этих изменений в файле), и команда
sudo systemctl mask sleep.target suspend.target hibernate.target
hybrid-sleep.target
-подход вызвал 100% загрузку процессора, но из этого manpage
https://manpages.ubuntu.com/manpages/cosmic/man5/systemd-sleep.conf.5.html
мне удалось заставить это работать (без перезагрузки или чего-то подобного), отключив сон полностью;
В /etc/systemd/sleep.conf добавьте следующие строки
AllowSuspend=no
AllowHibernation=no
AllowSuspendThenHibernate=no
AllowHybridSleep=no
Хотя это может быть не вариантом, если вы хотите иметь возможность ставить его в сон и т.д. в какой-то другой ситуации, но, по крайней мере, это сработало для меня.
Всё перестаёт работать, потому что…ноутбук переходит в режим сна! (режим ожидания).
Чтобы остановить это, просто отключите событие ACPI lid-button.
Отредактируйте /etc/acpi/event/lidbtn
и закомментируйте последние две строки:
# /etc/acpi/events/lidbtn # Вызывается, когда пользователь закрывает или открывает крышку event=button[ /]lid # закомментируйте это строку с помощью # action=/etc/acpi/lid.sh # тоже самое здесь
Перезагрузите систему, и это должно помочь.
Я использую 14.04 LTS на ASUS EEE.
Решение, предложенное Стефаном, не сработало для меня. Однако, этот ответ сработал.
Редактирование файла /etc/systemd/logind.conf помогло, но не только добавлением
HandleLidSwitch=ignore
Я также должен был добавить строки:
HandleLidSwitchDocked=ignore
и
LidSwitchIgnoreInhibited=no
Я думаю, что установка опции SUSPEND_METHODS="none"
в /etc/default/acpi-support
делает то же самое
Это сработало для меня — моя установка Ubuntu Server не имела /etc/acpi/event/lidbtn, но я установил пакет acpi-support, и он появился.
Пакет устанавливает много других связанных с X11 пакетов, но не включает графический режим, не волнуйтесь.
Как только я закомментировал последние две строки, как выше, мой ноутбук продолжал работать с закрытой крышкой.
Подход, который сработал для меня, работающий на Ubuntu Server 22.04 на MacBook Pro 7,1; отредактируйте файл login.conf и используйте команду setterm в CLI. Это также помогло удостовериться, что экран и подсветка логотипа выключены.
Отредактируйте файл: /etc/systemd/logind.conf
Настройте эти два параметра:
HandleLidSwitch=ignore
HandleLidSwitchExternalPower=ignore
Также в терминале введите:
setterm --blank 1 --powerdown 2
Ответ или решение
Для того чтобы сохранить работу сервера на Ubuntu с закрытой крышкой ноутбука, вам нужно внести изменения в настройки системы, чтобы предотвратить переход ноутбука в спящий режим. Ниже приведены шаги, которые помогут вам достигнуть этой цели.
Шаг 1: Редактирование конфигурационного файла logind.conf
-
Откройте терминал и выполните следующую команду для редактирования файла конфигурации
logind.conf
:sudo nano /etc/systemd/logind.conf
-
Найдите строки, содержащие
HandleLidSwitch
иHandleLidSwitchDocked
, и измените их на следующее:HandleLidSwitch=ignore HandleLidSwitchDocked=ignore LidSwitchIgnoreInhibited=no
-
Сохраните изменения и выйдите из редактора (в
nano
для этого нажмитеCTRL + X
, затемY
, чтобы подтвердить, иEnter
для выхода).
Шаг 2: Перезапуск службы systemd-logind
Для того чтобы изменения вступили в силу, перезапустите службу systemd-logind
:
sudo systemctl restart systemd-logind
Шаг 3: Удаление действий для кнопки крышки (опционально)
Если изменения в logind.conf
не сработали, вы можете устранить события, связанные с кнопкой крышки.
-
Убедитесь, что у вас установлен пакет
acpi-support
:sudo apt-get install acpi-support
-
Отредактируйте файл события кнопки крышки:
sudo nano /etc/acpi/events/lidbtn
-
Закомментируйте последние две строки:
# event=button[lid]lid # action=/etc/acpi/lid.sh
-
Сохраните изменения и перезапустите службу ACPI:
sudo /etc/init.d/acpid restart
Шаг 4: Дополнительные настройки
Для отключения экрана, когда крышка закрыта, вы можете использовать vbetool
. Для этого выполните следующие действия:
-
Установите необходимые пакеты:
sudo apt-get install acpi-support vbetool
-
Создайте файл скрипта:
sudo nano /etc/acpi/lid.sh
-
Вставьте следующий код в
lid.sh
:#!/bin/bash grep -q close /proc/acpi/button/lid/*/state if [ $? = 0 ]; then sleep 0.2 && vbetool dpms off fi grep -q open /proc/acpi/button/lid/*/state if [ $? = 0 ]; then vbetool dpms on fi
-
Сделайте файл исполняемым:
sudo chmod +x /etc/acpi/lid.sh
Шаг 5: Проверка работы
После того как все изменения были внесены, закройте крышку ноутбука и убедитесь, что сервер продолжает работу и SSH-сервер остается доступным.
Эти шаги помогут вам удержать ваш сервер на Ubuntu рабочим, даже когда крышка ноутбука закрыта.