Archlinux не выключается компьютер
Вы когда-нибудь пытались выключить систему Linux, но обнаруживали, что она отказывается выключаться? Мы все были там! Даже самая лучшая технология с открытым исходным кодом иногда имеет проблемы! Если вам надоело нажимать выключатель питания, чтобы выключить зависший ПК с Linux, или, может быть, вы не можете физически выключить его, так как это удаленный компьютер, это руководство для вас! Вот как выключить компьютер с Linux, который не выключается!
Примечание: при принудительном отключении системы Linux может произойти потеря данных. Всегда проверяйте регулярное резервное копирование ваших данных, чтобы предотвратить потерю. Для получения справки о способах резервного копирования файлов в Linux щелкните здесь!
Почему не выключается компьютер Linux?
Есть несколько путей решения этой проблемы:
- Во первых, нам необходимо понять в чём именно проблема, какой сервис её вызывает и попытаться её решить;
- Во вторых, мы можем уменьшить время ожидания от 90 до пяти секунд, для большинства сервисов этого будет вполне достаточно.
А теперь давайте рассмотрим пути решения проблемы.
Чтобы понять, почему система не может выключиться, нам сначала необходимо посмотреть лог её выключения. И тут у нас тоже есть два пути: либо отключить заставку и выводить лог в реальном времени, либо записывать лог выключения с помощью journalctl.
1. shutdown
Самая простая и самая часто используемая команда выключения компьютера linux, отключит компьютер немедленно:
sudo shutdown -h now
Как видите, используется обычное выключение, и константа времени now, тоесть сейчас.
Теперь попробуем запланировать выключение компьютера linux через пять минут:
sudo shutdown -h +5 "Компьютер будет выключен через 5 минут"
sudo shutdown -c
Точно так же мы можем указать точное время выключения, например в девять вечера:
sudo shutdown -h 21:00
Как я уже говорил, не только команда shutdown linux умеет выключать компьютер, есть еще несколько утилит способных на это. Рассмотрим их тоже.
Метод 1 — отключение питания
Первый способ выключить систему Linux — это использовать выключить команда. Эта команда мгновенно завершает работу вашей системы Linux без предупреждения. Чтобы использовать эту команду, вы должны получить доступ к окну аварийного терминала в режиме телетайпа.
Чтобы получить доступ к режиму TTY в вашей системе Linux, нажмите Ctrl + Alt + F2. Открыв аварийную консоль TTY, найдите экран входа в систему и введите «root» в качестве пользователя. В качестве альтернативы используйте имя пользователя, если учетная запись root отключена.
Если вы вошли в систему с учетной записью root, введите выключить в консоль командной строки, чтобы мгновенно все выключить.
Или сделай sudo -s чтобы получить root-доступ с обычным пользователем, выполните:
Не можете получить доступ к телетайпу, так как вы используете удаленное соединение? Получите root на удаленной консоли SSH с помощью:
Затем с root-доступом введите выключить команда для мгновенного выключения удаленного компьютера.
Метод 3 — systemctl poweroff / reboot
В наши дни система инициализации Systemd встроена в большинство операционных систем Linux. Одним из наиболее значительных преимуществ использования системы инициализации Systemd является то, что она имеет множество применений, которые легко понять, поскольку синтаксис командной строки упрощен.
Если вы пытаетесь выключить компьютер с Linux и не можете использовать команды poweroff или reboot, используя systemctl poweroff так же хорош, как и сообщает системе инициализации Systemd (инструменту, который помогает вашей системе Linux включаться и выключаться, а также выполнять множество других действий), чтобы все выключилось.
Как и все другие команды в этом руководстве, лучший способ принудительно выключить систему, особенно если она зависла или не отвечает, — это получить доступ к аварийной консоли TTY, нажав Ctrl + Alt + F2.
Когда аварийная консоль TTY появится на экране, введите «root» в ящик пользователя, чтобы войти в учетную запись root и получить доступ к командной строке root. Или войдите в систему с обычным пользователем, если вы не можете использовать учетную запись root. Оттуда запустите systemctl poweroff команда, чтобы выключить все мгновенно.
Или, если вы используете обычного пользователя, сделайте:
Не можете использовать режим телетайпа? Введите следующие команды в терминал SSH.
3. Настройка таймаутов в systemd
Если никакое из предыдущих решение не помогло, и в системе просто баг, который не позволяет ей адекватно выключиться, то вы всё ещё можете уменьшить время ожидания до того, как процессу будет отправлен сигнал экстренного завершения. Для этого откройте файл /etc/systemd/system.conf и добавьте туда такие строки:
sudo vi /etc/systemd/system.conf
Теперь система будет ждать только 5 секунд перед тем, как завершить проблемный процесс. Также на некоторых форумах рекомендуют установить сервис watchdog, чтобы он следил за правильностью работы системного таймера. Это тоже делается очень просто:
sudo apt install watchdog
sudo systemctl enable watchdog
sudo systemctl start watchdog
Способ 2 — перезагрузка
В перезагружать — это еще один способ взять под контроль систему Linux и принудительно перезагрузить ее. Возможно, вы захотите использовать этот метод, а не poweroff, поскольку иногда при работе с командой poweroff возникают проблемы.
Чтобы использовать команду перезагрузки, вам необходимо иметь доступ к консоли TTY. Чтобы получить к нему доступ, нажмите Ctrl + Alt + F2 на клавиатуре. Затем, когда появится консоль командной строки, введите «root» в ящик пользователя, чтобы войти в систему с правами root. Или, если вы отключили root-доступ, войдите в систему с традиционной учетной записью.
После входа в систему с учетной записью root воспользуйтесь перезагружать команда для перезапуска системы Linux, фактически заставляя ее выключить и снова включить.
В перезагружать command также имеет возможность полностью отключить систему с помощью переключателя командной строки. Этот переключатель, известный как «f», будет указывать перезагружать команда для полного выключения системы Linux, а не перезапуска. Чтобы использовать его, введите команду ниже.
Используете традиционную учетную запись пользователя, а не пользователя root? Делать:
Или завершите работу с помощью:
Те, кто не может использовать режим TTY, должны выполнить следующие команды в сеансе терминала. Обязательно используйте «-F» если вы хотите сделать перезагружать команда принудительного выключения.
6. Графический интерфейс
Выключить компьютер в графическом интерфейсе ещё проще. Для этого кликните по иконке выключения в правом верхнем углу, а затем выберите Выключить/Завершить сеанс, затем Выключение.. и снова Выключить:
2. reboot
Команда reboot обычно используется для перезагрузки системы, но она также умеет выключать компьютер. Мы не будем ее подробно рассматривать, потому, что она еще проще команды shutdown. Для выключения нужно задать опцию -p:
5. SysRQ
Помните, в начале статьи, я говорил о сочетании клавиш для включения компьютера? Рассмотрим этот вопрос подробнее.
SysRQ - это подсистема, реализованная на уровне ядра. Ядро обрабатывает все нажатия клавиш, а с помощью этой подсистемы, оно может принимать от пользователя команды, даже когда система полностью зависла. Основное предназначение этой подсистемы - работа с компьютером в проблемных ситуациях, например, если вы думаете что ваш компьютер заразил вирус, или компьютер завис и его нужно выключить. Для доступа к SysRq используются сочетания клавиш Alt+PrtScr+номер
Самое интересное, что мы можем выполнить безопасное выключение компьютера linux. Для этого зажмите клавиши Alt + PrtScr и поочередно нажимайте:
- R - разблокировать клавиатуру;
- E - послать всем процессам сигнал SIGTERM;
- I - послать всем процессам сигнал SIGKILL;
- S - перенести все данные из кеша файловых систем на диск;
- U - перемонтировать файловые системы только для чтения;
- B - перезагрузить.
Также вместо всего этого можно воспользоваться сочетанием клавиш Alt+PrtScr+O, в таком случае, вся процедура будет выполнена автоматически, эта команда поддерживается не всеми ядрами.
Процесс выключения Linux
Часто для выключения Linux из терминала используется утилита shutdown. Есть также команды poweroff, halt, но они для нестандартных случаев. Также выключить linux из консоли можно с помощью сочетаний клавиш SysRQ. Но сначала давайте рассмотрим синтаксис команды shutdown. Естественно, команда shutdown в Linux или любая другая не самостоятельно завершает работу системы и выключает компьютер. Она всего лишь передает запрос на выключение системе инициализации, а затем ядру. А уже они выполняют ряд сложных операций по подготовке и выключению компьютера. Если кратко, то вот они:
- Завершение процессов пользователя.
- Сигнал SIGTERM всем процессам.
- Сигнал SIGKILL всем процессам.
- Монтирование файловых систем в режиме только для чтения.
- Подготовка внешних устройств к отключению.
- Блокировка пространства пользователя, чтобы гарантировать, что ни один код пользователя больше не будет запущен.
- Завершение работы и отключение питания большинства периферических устройств.
- Отключение питания компьютера.
Теперь вы понимаете суть процесса выключения и то почему нельзя просто выдернуть шнур питания с розетки. Если это сделать, компьютер отключится моментально и не выполнит всех необходимых операций, а это может грозить потерей не сохраненных или даже недавно сохраненных данных, повреждением файловой системы и т д. Поэтому желательно выключать компьютер правильно с помощью shutdown или других специальных утилит.
Выводы
Статья распространяется под лицензией Creative Commons ShareAlike 4.0 при копировании материала ссылка на источник обязательна.
Выключение компьютера - действие, с которым обычные пользователи сталкиваются чуть ли не каждый день. Если выключать сервер приходится довольно редко, то обычные, десктопные компьютеры подвержены этой операции очень даже часто. Большинство пользователей выключают linux в графическом интерфейсе системы. В окружении рабочего стола KDE это делается через главное меню, а в Gnome и Unity даже есть специальная кнопка на панели для решения этой задачи.
Но не всегда есть возможность выключить компьютер linux таким образом. Например, если окружение рабочего стола не работает, то больше ничего не остается, кроме того, чтобы выполнять выключение компьютера из командной строки. К тому же выключение компьютера linux через терминал единственно возможный способ для серверов, где нет графического интерфейса. Как вы увидите, этот способ также намного гибче обычного выключения, поскольку вы можете настроить нужное время отключения, или же выключить компьютер, дождавшись завершения работы определенной программы.
2. Лог выключения в journalctl
Затем два раза перезапустите компьютер. Первый раз мы перезапускаем, чтобы настройки логирования вступили в силу, а второй, чтобы собрать лог последнего выключения Linux. После того, как загрузка завершиться, вы можете посмотреть лог с помощью такой команды:
sudo journalctl -b -1 -n300
sudo journalctl -b -1 -u session-c1.scope
Если вы увидели ошибку и смогли её решить, то ваша система будет выключаться уже мгновенно, если же нет, то всё ещё есть несколько путей решения.
Синтаксис и опции shutdown
Синтаксис команды очень простой:
Вот основные опции утилиты:
Вот в принципе и все опции утилиты, их больше чем достаточно для такого простого действия. Теперь можно переходить к примерам, но сначала давайте рассмотрим, что же происходит во время включения Linux.
3. halt
Эта команда тоже выключает компьютер. Только делает она это очень по-своему. Она не выполняет никаких подготовительных действий перед выключением, а просто отключает питание:
Использование halt может повредить систему
4. poweroff
Это аналог halt, делает в точности то же самое:
Выключение компьютера в Linux
Перезагрузить
Команда Systemd poweroff заставляет все выключиться, но если это не сработает, попробуйте перезагрузка systemctl команда для принудительного перезапуска машины.
Или, для обычного пользователя, воспользуйтесь судо команда.
Наконец, если вы не можете получить доступ к режиму TTY для перезагрузки, попробуйте выполнить следующую команду ниже.
Демоны запускаемые при старте:
UPDATE: что выдала hwdetect то и запихал в модули.
UPDATE: Спасибо. «Poweroff» работает.
ты стебёшься чтоли, зачем тебе столько модулей
набери в кансоле poweroff
hwdetect не всегда корректно выхлоп даёт. Автоопределение как-то надёжнее.
runlevel 1 is used to put to system into a state where administrative tasks can be performed; this is the default if neither the -h or -r flag is given to shutdown.
Нужно было использовать shutdown -h now.
Автоматическое определение у меня тоже включено, но не работает wi-fi, web-камера и микрофон. Нужен ли «hal» в демонах?
Спасибо. После установки демона ОС стала реагировать на нажатие клавиши ждущего режима. Но при нажатии её экран моргает и выбрасывает на login manager (у меня установлены Slim и XFCE4). Это как то связано с тем что Slim у меня запускается не как демон, а через inittab?
> но не работает wi-fi
помойму там наоборот надо сделать
If you are having trouble getting the wireless working with either the default kernel or the driver from the UAR, try blacklisting the rt2800lib module by modifying /etc/rc.conf:
This fixed wireless for me (using kernel 2.6.33-ARCH).
Нетбуки отличаются. Я пробовал по этой статье ставить, но все закончилось пересборкой ядра. Вот модули от wi-fi: th9k_common ath9k_hw ath9k ath cfg80211.
ACPI глючит, попробуй более старое ядро.
Это обычное поведение любого компа с systemd, лечиться заменой на openrc,например.
Ну и как оно на вкус?
Отлично, тот же арч, но без сисямбды. Есть пара нюансов, вроде того, что они elogind криво собирают второй раз подряд, но там строчку в пкгбилд дописать буквально, в общем новичку сложновато наверное будет, но мне норм.
Сам ты 4.2, у меня на ванильном арче была проблема, как у ТС’а, я просто забил ее, все равно перезагружаюсь пару раз в месяц, а как мигрировал на артикс (по сути весь процесс - это удаление сисямблы и установка инита на выбор, опенрс, рунит и еще что-то, s6 кажется. Ну и добавление реп/ключей) - проблема пропала и не возвращалась полгода уже. Я не утверждаю, что системудю нельзя настроить и вылечить баг, может и можно, но во-первых, не факт что это будет легко, во-вторых, без нее лучше,чем с ней.
А УМВР на дебиане из коробки, ничего не настраивал.
Это проблемы с ACPI в ядре и инит тут ни при чём.
Ты, арчешколотрон, должен страдать даже во время каникул.
А чего вы хотели? Это же арч линукс!
В дебиане сисямбда может быть пропатчена из коробки, поэтому не ловил баг. Ок, как тогда ты объяснишь то, что с системд у меня так было каждый ребут, а стоило сменить его на опенрс - проблема пропала? Я согласен, что ИНИТ тут ни при чем, но так же верно, что сисямбда давно уже не только инит.
Эта проблема есть не только в арче.
В дебиане пакеты патчат что бы они были совместимы между собой. А арче - нет. Поэтому оно и работает через жопу. И это касается не только вероятного systemd, а допустим тех же mkinitcpio, dracut и т.д. Добавь сюда AUR и получится вообще нечто неконтролируемое. А systemd никогда и не был «просто инитом», это набор слабо связанных приложений для управления системой. И то что у тебя «работает» тоже ни о чём не говорит, с systemd --force reboot оно тоже «работает», убивая все сервисы и принудительно размонтируя файловые системы (Судя по информации из гугла), но так забивать на некорректную работу каких-то сервисов или ФС может прийти в голову разе что адептам всякой некроты.
Для кого-то отсутствие патчей в арче наоборот, преимущество.
За то и не любим) PS у сисямбды еще и ребут свой,оказывается, жесть. Ну в принципе, не удивительно, учитывая что с обычным оно через ж работает.
Для начала нужно посмотреть лог shutdown. Как его добыть описано здесь.
А пропатчить это ядро нельзя? Даже если это сложнее, мне этот вариант предпочтительнее
Имеет ли смысл ради исправления одной проблемы так глобально что-то в системе менять? Уже подозреваю что это займет полдня
Зато софт самый свежий.
А пропатчить это ядро нельзя? Даже если это сложнее, мне этот вариант предпочтительнее
А как ты узнаешь какой патч накладывать? Потом ещё это ядро пересобирать, накладывать патч и пересобирать при каждом обновлении, и тд. Нет, ты попробуй разные версии ядер постарее сначала, найди рабочее и зафиксируй его.
Я не из-за этого на арче сижу, а из-за того что в репозиториях, в том числе в aur есть все программы которые мне нужны, тогда как в остальных приходилось скачивать пакеты с сайтов и ставить
Сразу после установки, как правило, любая операционная система будет работать очень хорошо и быстро. Но со временем ошибки могут накапливаться и вызывать различные проблемы с использованием ОС.
В сегодняшней статье мы рассмотрим такую ошибку, как "не выключается Linux". Разберём, почему может возникнуть такая проблема, методы её отладки и исправления.
1. Лог выключения в реальном времени
Первый способ не настолько информативный, но всё же может быть полезным. Для отключения заставки откройте /etc/default/grub и в строке GRUB_CMDLINE_LINUX_DEFAULT замените слова quiet splash на verbose:
Затем перезагрузите компьютер. Сначала вы будете видеть полный лог загрузки, а при выключении вы увидите полный лог выключения. Преимущество этого пути в том, что вы увидите, на какой команде загрузка зависает, и сможете понять, куда копать дальше. Например, часто бывает, что Linux не может выключиться из-за ошибки "a stop job is running for Session c2 of user", т.е. мы не можем завершить сессию пользователя. Ещё выключению могут препятствовать примонтированные удалённые файловые системы.
Выводы
Теперь вы знаете все что нужно, о том, как выключить Linux через терминал. Если вас застигнет врасплох ошибка или зависание компьютера, вы знаете что делать. Если остались вопросы - пишите в комментариях!
Читайте также: