- Перезагрузка Linux через консоль
- Перезагружаем Linux через консоль
- Способ 1: Команда reboot
- Способ 2: Команда shutdown
- Способ 3: Init Script
- Способ 4: Служба системных сообщений D-Bus
- Способ 5: Горячие клавиши SysRq
- Способ 6: Удаленная перезагрузка
- Способ 7: Перезагрузка в Recovery Mode
- выключить комп через терминал(shutdown) без sudo. как ?
- Если systemd, то всё просто
Перезагрузка Linux через консоль
Обладатели разных дистрибутивов Linux время от времени сталкиваются с необходимостью перезагрузки операционной системы, что требуется делать после внесения каких-либо изменений в параметры или при появлении неполадок. Обычно поставленная задача осуществляется через графический интерфейс, но этот вариант не всегда получается использовать эффективно. Именно поэтому многие прибегают к вводу терминальных команд, которые и отвечают за подачу сигнала на перезагрузку. Сегодня мы хотим рассказать вам обо всех доступных способах перезапуска Линукс через консоль на примере Ubuntu.
Перезагружаем Linux через консоль
Как вы уже знаете, сегодняшние инструкции будут основаны на Ubuntu, однако и обладателям других дистрибутивов они тоже окажутся полезными, поскольку различия практически никогда не наблюдаются. Если же вдруг вы увидите сообщение об ошибке при попытке ввода какой-то команды, в следующих строках отобразится информация о том, почему этот запрос не может быть выполнен. Используйте полученные сведения, чтобы найти альтернативу, например, в официальной документации. Мы же переходим к рассмотрению всех методов, а их существует достаточное количество.
Способ 1: Команда reboot
О команде reboot наверняка слышали даже самые начинающие пользователи операционных систем Linux. Вся ее суть как раз и заключается в отправке текущего сеанса на перезагрузку, а дополнительные аргументы при этом не указываются.
- Откройте меню приложений и запустите оттуда «Терминал». Для этого вы можете задействовать и другой удобный вариант, например, стандартную горячую клавишу Ctrl + Alt + T.
Действие перезагрузки через reboot обязательно выполняется от имени суперпользователя, поэтому вводимая строка выглядит так: sudo reboot .
Соответственно, потребуется подтвердить учетную запись, написав пароль от нее. Учитывайте, что вводимые символы пароля в консоли никогда не отображаются.
Компьютер сразу же завершит свою работу, и через несколько секунд запустится новый сеанс в обычном режиме. Автоматически включится виртуальная консоль с графической оболочкой, даже если до этого вы использовали другой терминал.
Способ 2: Команда shutdown
Иногда юзеру требуется, чтобы ПК перезапустился через определенное количество времени, например, через несколько минут. Команда reboot не очень подходит для таких целей, поэтому мы предлагаем воспользоваться альтернативой в виде shutdown.
- Запустите «Терминал» и укажите sudo shutdown -r +1 , где +1 — время, через которое команда будет приведена в действие. В данном случае это одна минута. Укажите 0 или now, если хотите запустить интересующий процесс немедленно.
Команда shutdown тоже зависит от суперпользователя, поэтому для ее активации понадобится ввести пароль.
Способ 3: Init Script
Некоторые дистрибутивы поддерживают Init Script, о чем более детально вы можете прочесть в их официальных документациях. Там же будет написано и об основных настройках, связанных с данными скриптами. Сейчас мы опустим все эти моменты, поскольку они не вписываются в рамки этого материала. Расскажем лишь то, что у init есть шесть параметров, где 0 — выключение компьютера, а 6 — перезагрузка сеанса. Именно последний параметр мы и будем применять сейчас. Для его активации в консоли придется ввести sudo init 6 . Как вы уже поняли из приставки sudo, это действие тоже осуществляется только через root.
Способ 4: Служба системных сообщений D-Bus
Как вы наверняка заметили, все три приведенных выше способа для активации требовали наличия пароля суперпользователя, однако не у всех юзеров есть возможность ввести его. Специально для таких целей мы и предлагаем воспользоваться службой системных сообщений D-Bus. Это стандартная утилита Linux, позволяющая программам взаимодействовать друг с другом, а длинная и непонятная команда, отправляющая систему на перезапуск, следующая: /usr/bin/dbus-send —system —print-reply —dest=»org.freedesktop.ConsoleKit» /org/freedesktop/ConsoleKit/Manager org.freedesktop.ConsoleKit.Manager.Restart . После ее ввода и активации текущий сеанс сразу же будет завершен.
Способ 5: Горячие клавиши SysRq
Этот метод только косвенно связан с консолью, поскольку через нее производится настройка, а дальнейшая перезагрузка выполняется через горячие клавиши. Однако мы решили включить его в этот список из-за необычности и особенностей использования. Горячие клавиши SysRq пригодятся в тех ситуациях, когда графическая оболочка попросту не отвечает.
- Запустите «Терминал» и введите там echo 1 > /proc/sys/kernel/sysrq .
Следом откройте файл конфигурации через удобный текстовый редактор, например, sudo nano /etc/sysctl.conf .
Этот файл расположен в системном разделе, поэтому для открытия понадобятся права суперпользователя.
Опуститесь вниз файла и вставьте туда строку kernel.sysrq = 1 .
Сохраните настройки и закройте текстовый редактор.
После этого потребуется зажать Alt + SysRq + Код клавиши. Об этом мы детальнее поговорим далее.
Корректный перезапуск осуществляется путем указания определенной последовательности кодов клавиш. Каждый из них имеет следующий вид:
- R — вернет управление клавиатурой, если работа той была непредвиденно завершена.
- E — пошлет всем процессам сигнал SIGTERM, что приведет к их завершению.
- I — делает то же самое, но только через сигнал SIGKILL. Требуется в тех случаях, если некоторые процессы не были завершены после SIGTERM.
- S — отвечает за синхронизацию файловых систем. Во время этой операции вся информация будет сохранена на жестком диске.
- U — отмонтирует ФС и смонтирует их заново в режиме только для чтения.
- B — запустит процесс перезагрузки компьютера, игнорируя все предупреждения.
Вам осталось только нажать каждую эту комбинацию в этой же очередности, чтобы перезагрузка прошла корректно.
Способ 6: Удаленная перезагрузка
Некоторые пользователи активно задействуют специальные инструменты по удаленному управлению рабочими столами. Часто в подобных решениях имеются соответствующие команды, позволяющие отправить необходимый компьютер на перезапуск. Например, обратите внимание на следующий параметр SSH: ssh root@remote-server.com /sbin/reboot . Именно по этому принципу происходит перезапуск выбранного удаленного ПК на этом сервере. Если вы используете другие средства управления, прочтите официальную документацию, чтобы получить нужные сведения.
Способ 7: Перезагрузка в Recovery Mode
В качестве последнего способа мы хотим рассказать, как осуществляется перезагрузка ПК в Recovery Mode, поскольку многие пользователи теряются в этом меню и просто выключают компьютер через кнопку, а потом заново его запускают. В случае, когда вы перешли в режим восстановления, можете запустить консоль и использовать любой из приведенных выше методов:
- В меню восстановления вас интересует пункт «Продолжить нормальную загрузку» или «Перейти в командный интерпретатор суперпользователя». В первом случае просто начнется старт ОС в обычном режиме, а второй пункт запустит консоль в root.
Если вы запускаете терминал, то подтвердите эту операцию нажатием на клавишу Enter.
Далее остается только ввести подходящую команду, например, reboot , чтобы отправить ПК на перезапуск.
Как видите, существует огромное количество методов, позволяющих быстро перезагрузить систему Linux через консоль. Осталось только понять, какой из этих вариантов следует использовать в определенной ситуации, чтобы соответствовать возникшим условиям, которые требуют перезапуска ОС.
Помимо этой статьи, на сайте еще 12315 инструкций.
Добавьте сайт Lumpics.ru в закладки (CTRL+D) и мы точно еще пригодимся вам.
Отблагодарите автора, поделитесь статьей в социальных сетях.
Источник
выключить комп через терминал(shutdown) без sudo. как ?
приветствую. пишу для себя программку для выключения/перезагрузки системы по таймеру(аналог EasyShutdown под linux), ребутить систему решил через библиотеку subprocess(python) которая запускает скрипты bash в python’e, но не знаю как сделать, что бы можно было перезагрузить машину без su/sudo.
Можно через dbus и ConsoleKit
Проще через судов, а если серьёзно то добавить пользователя в группу, не помню какую так как нет возможности проверить
этот вариант не катит, надо что бы программа запускалась «с коробки» на разных машинах, а не только у меня.
спасибо, буду пробовать, хотя не до конца понимаю что это за кусок кода.
зафига тебе выключать чужие машины
нее, ты не так понял 🙂 просто что бы программка работала на разных компьютерах(под разными учетными записями), а не только у меня(потому-что я прописал права доступа)
ConsoleKit — это такой демон, обслуживащий пользовательские сессии. Им можно управлять через dbus. Только вот его вроде выпиливают сейчас повсюду. Если у тебя systemd, то фокус не прокатит. Может заглянут знатоки и подскажут, как это сделать через logind.
А пароль кто будет вводить?
которая запускает скрипты bash в python’e
может сразу на баше написать?
да, прочитал о ConsoleKit так там в разных версиях может по разному себя вести, bash не катит, т.к. это будет аплет для unity с менюшками на Gtk, даже не знаю как быть, хотелось бы универсальность программки, что бы под разными версиями запускался системы/пакетов.
Вроде бы с правами надо разбираться через polkit.
:NOPASSWD — настраивается в /etc/sudoers.
Стрёмно как-то давать беспарольный sudo даже на одну команду. Хотя может это паранойя. Но всё равно ТСу это не подходит.
если ты делаешь утилиту для других людей, утилиту (работающую «из коробки») для которой нужны повышенные привелегии, такие как «вылючение компьютера» или «стереть все файлы из /home/» (шутка) — то просто укажи в документации к утилите это требование.
. мол — «запускайте от root или через sudo».
второй вариант: раздели свою утилиту на две слабосвязанные части. одна часть это сервисный-юнит (запускаемый через systemd и висящий в системе постоянно), а вторая часть это клиентская часть. клиентская часть — будет связываться со своей серверной частью через dBus, например.
кстати, во втором варианте — я разумеется вижу угрозу безопасности (так как кроме именно твоей программы — связаться с серверной частью сможет также и программа злоумышленника, которая не имеет повышенных полномочий).
спасибо, буду пробовать, хотя не до конца понимаю что это за кусок кода.
Тогда уж не вызывать bash из python только для того, чтобы дернуть dbus-send, а использовать dbus-python.
Если systemd, то всё просто
poweroff или systemctl poweroff . По дефолту разрешения таковы, что единственный активный пользователь сможет вырубить машину без получения прав суперпользователя.
В случае с systemd такой демон уже написали и называется он logind 🙂
Источник