Linux poweroff или shutdown

What is the difference between shutdown and poweroff commands?

I’ve a home server I’m playing around with 🙂 I want to learn server administration. I have a hard time understanding the difference between shutdown -h now and poweroff -h now My logic tells me it’s the same thing. But with the shutdown, Linux halts, and power stays on — I can see all lights up and cooler rotating. Strange, the only way to turn off my box completely is to use poweroff -h Any clarification will be appreciated!

2 Answers 2

When called with —force or when in runlevel 0 or 6, this tool invokes the reboot(2) system call itself and directly reboots the system. Otherwise this simply invokes the shutdown(8) tool with the appropriate arguments.

  • The reboot() system call is the kernel function used to reboot, halt or poweroff the machine. It is called reboot for historical reasons, but performs all three functions, depending on parameters that are passed to it.
  • The difference between halt and poweroff is that in halt mode the control is returned to a «ROM monitor» (think BIOS), whereas poweroff simply powers the system board off. (I have never seen this distinction in effect on PC architectures; on Sun machines it’s different, though.)
  • So, when the poweroff program is invoked when the Linux system is in runlevel 0 or 6, it will immediately power off the system via the reboot(RB_POWEROFF) system call.
  • In any other case, poweroff will just behave as an alias for shutdown now .

I’m not so good at reading technicalities. I still don’t get the difference. I might be stupid, but for me reboot is reboot. I don’t get why power-off has to reboot anything.

So if poweoff just pulls the power to the system board, isn’t this bad? Isn’t it just like pulling the plug? No chance for programs to end gracefully? Is there a safe way to shutdown remotely?

@PeterSnow Normally poweroff is just an alias for shutdown now , so it will initiate a graceful shutdown process. At the end of this process, poweroff —force is called, which actually powers the motherboard off.

To the original question «shutdown» vs. «poweroff»: As the names imply, «shutdown» ends in something like «cli(); while(1);» while «poweroff» communicates somehow with the power supply before ending execution in a similar or same loop like «shutdown». (Only for the case that there is a problem with the power supply.)

Читайте также:  Запуск x window system linux

In case of Raspberry Pi, by default, it is the same. However, there is a standard kernel overlay available, which can be loaded by modifying /boot/config.txt:

which changes (by default) GPIO26 (Pin 37) to an Output driving High. As this pin is not used by default, and unused pins are inputs without pullup/pulldown, a simple circuitry can cut power supply at High level. Note (for the designer of circuitry): This pin will revert to Low after power cut, of course! So use a flipflop.

As the overlay name «gpio-poweroff» should imply, it is called (somehow by systemd) on «poweroff», not on «shutdown» or «halt».

Источник

Выключение Linux из командной строки

Выключение компьютера — действие, с которым обычные пользователи сталкиваются чуть ли не каждый день. Если выключать сервер приходится довольно редко, то обычные, десктопные компьютеры подвержены этой операции очень даже часто. Большинство пользователей выключают linux в графическом интерфейсе системы. В окружении рабочего стола KDE это делается через главное меню, а в Gnome и Unity даже есть специальная кнопка на панели для решения этой задачи.

Но не всегда есть возможность выключить компьютер linux таким образом. Например, если окружение рабочего стола не работает, то больше ничего не остается, кроме того, чтобы выполнять выключение компьютера из командной строки. К тому же выключение компьютера linux через терминал единственно возможный способ для серверов, где нет графического интерфейса. Как вы увидите, этот способ также намного гибче обычного выключения, поскольку вы можете настроить нужное время отключения, или же выключить компьютер, дождавшись завершения работы определенной программы.

Процесс выключения Linux

Часто для выключения Linux из терминала используется утилита shutdown. Есть также команды poweroff, halt, но они для нестандартных случаев. Также выключить linux из консоли можно с помощью сочетаний клавиш SysRQ. Но сначала давайте рассмотрим синтаксис команды shutdown. Естественно, команда shutdown в Linux или любая другая не самостоятельно завершает работу системы и выключает компьютер. Она всего лишь передает запрос на выключение системе инициализации, а затем ядру. А уже они выполняют ряд сложных операций по подготовке и выключению компьютера. Если кратко, то вот они:

  • Завершение процессов пользователя.
  • Сигнал SIGTERM всем процессам.
  • Сигнал SIGKILL всем процессам.
  • Монтирование файловых систем в режиме только для чтения.
  • Подготовка внешних устройств к отключению.
  • Блокировка пространства пользователя, чтобы гарантировать, что ни один код пользователя больше не будет запущен.
  • Завершение работы и отключение питания большинства периферических устройств.
  • Отключение питания компьютера.

Теперь вы понимаете суть процесса выключения и то почему нельзя просто выдернуть шнур питания с розетки. Если это сделать, компьютер отключится моментально и не выполнит всех необходимых операций, а это может грозить потерей не сохраненных или даже недавно сохраненных данных, повреждением файловой системы и т д. Поэтому желательно выключать компьютер правильно с помощью shutdown или других специальных утилит.

Читайте также:  Виртуальная машина linux online

Синтаксис и опции shutdown

Синтаксис команды очень простой:

$ shutdown [опции] [время] [сообщение]

Опции задают параметры отключения, их мы рассмотрим ниже. Время можно задавать в виде чч:мм в 24 часовом формате. Также можно использовать запись +минуты, указывающую через сколько минут от текущего момента нужно выключить компьютер с Linux. Также доступна константа now, указывающая, что выключать нужно прямо сейчас. Параметр сообщение позволяет задать сообщение, которое будет выведено в терминал перед выключением.

Вот основные опции утилиты:

  • —help — вывести справку по программе
  • -H, —halt — отключить питание, не завершая процессы и не перемонтируя файловые системы
  • -P, —poweroff — нормальное выключение
  • -r, —reboot — перезагрузка
  • -k — не выполнять реальных действий, а только вывести сообщение
  • —no-wall — выключить компьютер, но не выводить сообщение
  • -c — отменить запланированное выключение linux из командной строки

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

Выключение компьютера в Linux

1. shutdown

Самая простая и самая часто используемая команда выключения компьютера linux, отключит компьютер немедленно:

Как видите, используется обычное выключение, и константа времени now, тоесть сейчас.

Теперь попробуем запланировать выключение компьютера linux через пять минут:

sudo shutdown -h +5 «Компьютер будет выключен через 5 минут»

Мы запланировали вывод сообщения перед выключением. Чтобы отменить команду shutdown выполните:

Точно так же мы можем указать точное время выключения, например в девять вечера:

Как я уже говорил, не только команда shutdown linux умеет выключать компьютер, есть еще несколько утилит способных на это. Рассмотрим их тоже.

2. reboot

Команда reboot обычно используется для перезагрузки системы, но она также умеет выключать компьютер. Мы не будем ее подробно рассматривать, потому, что она еще проще команды shutdown. Для выключения нужно задать опцию -p:

3. halt

Эта команда тоже выключает компьютер. Только делает она это очень по-своему. Она не выполняет никаких подготовительных действий перед выключением, а просто отключает питание:

Использование halt может повредить систему

4. poweroff

Это аналог halt, делает в точности то же самое:

5. SysRQ

Помните, в начале статьи, я говорил о сочетании клавиш для включения компьютера? Рассмотрим этот вопрос подробнее.

SysRQ — это подсистема, реализованная на уровне ядра. Ядро обрабатывает все нажатия клавиш, а с помощью этой подсистемы, оно может принимать от пользователя команды, даже когда система полностью зависла. Основное предназначение этой подсистемы — работа с компьютером в проблемных ситуациях, например, если вы думаете что ваш компьютер заразил вирус, или компьютер завис и его нужно выключить. Для доступа к SysRq используются сочетания клавиш Alt+PrtScr+номер

Читайте также:  Linux set partition label

Самое интересное, что мы можем выполнить безопасное выключение компьютера linux. Для этого зажмите клавиши Alt + PrtScr и поочередно нажимайте:

  • R — разблокировать клавиатуру;
  • E — послать всем процессам сигнал SIGTERM;
  • I — послать всем процессам сигнал SIGKILL;
  • S — перенести все данные из кеша файловых систем на диск;
  • U — перемонтировать файловые системы только для чтения;
  • B — перезагрузить.

Также вместо всего этого можно воспользоваться сочетанием клавиш Alt+PrtScr+O, в таком случае, вся процедура будет выполнена автоматически, эта команда поддерживается не всеми ядрами.

6. Графический интерфейс

Выключить компьютер в графическом интерфейсе ещё проще. Для этого кликните по иконке выключения в правом верхнем углу, а затем выберите Выключить/Завершить сеанс, затем Выключение.. и снова Выключить:

Выводы

Теперь вы знаете все что нужно, о том, как выключить Linux через терминал. Если вас застигнет врасплох ошибка или зависание компьютера, вы знаете что делать. Если остались вопросы — пишите в комментариях!

Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.

Источник

is there any difference between /usr/bin/poweroff and /usr/bin/shutdown? [duplicate]

In most systems, every «shutdown» command is just a symlink to a common program/script which changes its behaviour based on how (with which «name») is invoked.

So, poweroff does a kind of shutdown which powers off the machine (usually via ACPI APIs), too and it’s equivalent to shutdown -hP , while shutdown as a command is more generic and can do many thigs after «stopping» the OS, based on with which flags is called.

For example shutdown -r reboots the machine while shutdown -h just stops the OS (and the machine is still powered on, while not usable).

It’s an oversimplification to say that poweroff is equivalent to shutdown -hP . It’s equivalent to that in the van Smoorenburg toolset, but in the systemd toolset both the -h and -P options are the defaults anyway and it is equivalent to plain shutdown now . The now is important, by the way. unix.stackexchange.com/a/196471/5132 unix.stackexchange.com/a/465337/5132

@JdeBP I agree the now is important (as +mmm minutes, btw) but the OP was asking about differences, not syntax 😉

right, but as far as I can see both programs are a symlink to systemctl, I don’t see how systemctl is being used. What makes it interesting is that those flags mention here have not use with systemctl

now is important because without it there is a difference. Pay close attention to the user manual of the systemd toolset.

Источник

Оцените статью
Adblock
detector