- DESCRIPTION¶
- OPTIONS¶
- DIAGNOSTICS¶
- NOTES¶
- AUTHOR¶
- SEE ALSO¶
- DESCRIPTION
- OPTIONS
- EXIT STATUS
- NOTES
- SEE ALSO
- Выключение Linux из командной строки
- Процесс выключения Linux
- Синтаксис и опции shutdown
- Выключение компьютера в Linux
- 1. shutdown
- 2. reboot
- 3. halt
- 4. poweroff
- 5. SysRQ
- 6. Графический интерфейс
- Выводы
- System halt in linux
- 1 Answer 1
DESCRIPTION¶
halt notes that the system is being brought down in the file /var/log/wtmp, and then either tells the kernel to halt, reboot or power-off the system.
If halt or reboot is called when the system is not in runlevel 0 or 6, in other words when it’s running normally, shutdown will be invoked instead (with the -h or -r flag). For more info see the shutdown(8) manpage.
The rest of this manpage describes the behavior in runlevels 0 and 6, that is when the systems shutdown scripts are being run.
OPTIONS¶
-n Don’t sync before reboot or halt. Note that the kernel and storage drivers may still sync. This implies -d. -w Don’t actually reboot or halt but only write the wtmp record (in the /var/log/wtmp file). -d Don’t write the wtmp record. -f Force halt or reboot, don’t call shutdown(8). -i Shut down all network interfaces just before halt or reboot. Warning: This may not work on interfaces which do not have an IP address and should ideally be handled by a network manager service. -h Put all hard drives on the system in stand-by mode just before halt or power-off. -p When halting the system, switch off the power. This is the default when halt is called as poweroff.
DIAGNOSTICS¶
If you’re not the superuser, you will get the message `must be superuser’.
NOTES¶
Under older sysvinit releases, reboot and halt should never be called directly. From release 2.74 on halt and reboot invoke shutdown(8) if the system is not in runlevel 0 or 6. This means that if halt or reboot cannot find out the current runlevel (for example, when /var/run/utmp hasn’t been initialized correctly and /var/run/runlevel does not exist) shutdown will be called, which might not be what you want. Use the -f flag if you want to do a hard halt or reboot.
The -h flag puts all hard disks in standby mode just before halt or power-off. Right now this is only implemented for IDE drives. A side effect of putting the drive in stand-by mode is that the write cache on the disk is flushed. This is important for IDE drives, since the kernel doesn’t flush the write cache itself before power-off.
The halt program uses /proc/ide/hd* to find all IDE disk devices, which means that /proc needs to be mounted when halt or poweroff is called or the -h switch will do nothing.
AUTHOR¶
SEE ALSO¶
DESCRIPTION
poweroff, reboot, and halt may be used to power off, reboot, or halt the machine. All three commands take the same options.
OPTIONS
The following options are understood:
Power off the machine, when either halt or poweroff is invoked. This option is ignored when reboot is invoked.
Force immediate power-off, halt, or reboot. If specified, the command does not contact the init system. In most cases, filesystems are not properly unmounted before shutdown. For example, the command reboot -f is mostly equivalent to systemctl reboot -ff, instead of systemctl reboot -f.
EXIT STATUS
On success, 0 is returned, a non-zero failure code otherwise.
NOTES
These commands are implemented in a way that preserves basic compatibility with the original SysV commands. systemctl(1) verbs poweroff, reboot, halt provide the same functionality with some additional features.
Note that on many SysV systems halt used to be synonymous to poweroff, i.e. both commands would equally result in powering the machine off. systemd is more accurate here, and halt results in halting the machine only (leaving power on), and poweroff is required to actually power it off.
SEE ALSO
Powered by archmanweb, using mandoc for the conversion of manual pages.
The website is available under the terms of the GPL-3.0 license, except for the contents of the manual pages, which have their own license specified in the corresponding Arch Linux package.
Выключение Linux из командной строки
Выключение компьютера — действие, с которым обычные пользователи сталкиваются чуть ли не каждый день. Если выключать сервер приходится довольно редко, то обычные, десктопные компьютеры подвержены этой операции очень даже часто. Большинство пользователей выключают linux в графическом интерфейсе системы. В окружении рабочего стола KDE это делается через главное меню, а в Gnome и Unity даже есть специальная кнопка на панели для решения этой задачи.
Но не всегда есть возможность выключить компьютер linux таким образом. Например, если окружение рабочего стола не работает, то больше ничего не остается, кроме того, чтобы выполнять выключение компьютера из командной строки. К тому же выключение компьютера linux через терминал единственно возможный способ для серверов, где нет графического интерфейса. Как вы увидите, этот способ также намного гибче обычного выключения, поскольку вы можете настроить нужное время отключения, или же выключить компьютер, дождавшись завершения работы определенной программы.
Процесс выключения Linux
Часто для выключения Linux из терминала используется утилита shutdown. Есть также команды poweroff, halt, но они для нестандартных случаев. Также выключить linux из консоли можно с помощью сочетаний клавиш SysRQ. Но сначала давайте рассмотрим синтаксис команды shutdown. Естественно, команда shutdown в Linux или любая другая не самостоятельно завершает работу системы и выключает компьютер. Она всего лишь передает запрос на выключение системе инициализации, а затем ядру. А уже они выполняют ряд сложных операций по подготовке и выключению компьютера. Если кратко, то вот они:
- Завершение процессов пользователя.
- Сигнал SIGTERM всем процессам.
- Сигнал SIGKILL всем процессам.
- Монтирование файловых систем в режиме только для чтения.
- Подготовка внешних устройств к отключению.
- Блокировка пространства пользователя, чтобы гарантировать, что ни один код пользователя больше не будет запущен.
- Завершение работы и отключение питания большинства периферических устройств.
- Отключение питания компьютера.
Теперь вы понимаете суть процесса выключения и то почему нельзя просто выдернуть шнур питания с розетки. Если это сделать, компьютер отключится моментально и не выполнит всех необходимых операций, а это может грозить потерей не сохраненных или даже недавно сохраненных данных, повреждением файловой системы и т д. Поэтому желательно выключать компьютер правильно с помощью shutdown или других специальных утилит.
Синтаксис и опции 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. Для этого зажмите клавиши Alt + PrtScr и поочередно нажимайте:
- R — разблокировать клавиатуру;
- E — послать всем процессам сигнал SIGTERM;
- I — послать всем процессам сигнал SIGKILL;
- S — перенести все данные из кеша файловых систем на диск;
- U — перемонтировать файловые системы только для чтения;
- B — перезагрузить.
Также вместо всего этого можно воспользоваться сочетанием клавиш Alt+PrtScr+O, в таком случае, вся процедура будет выполнена автоматически, эта команда поддерживается не всеми ядрами.
6. Графический интерфейс
Выключить компьютер в графическом интерфейсе ещё проще. Для этого кликните по иконке выключения в правом верхнем углу, а затем выберите Выключить/Завершить сеанс, затем Выключение.. и снова Выключить:
Выводы
Теперь вы знаете все что нужно, о том, как выключить Linux через терминал. Если вас застигнет врасплох ошибка или зависание компьютера, вы знаете что делать. Если остались вопросы — пишите в комментариях!
Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.
System halt in linux
I was looking at reboot.c in the Linux kernel. http://lxr.free-electrons.com/source/kernel/reboot.c There is a call to kernel_halt it says that this function will Shutdown everything and perform a clean system halt. What does a clean system halt mean? Can any one explain what this halt actually does? I am also wondering about syscore what kind of operations are considered as syscore operation?
0 void kernel_halt(void) 161
1 Answer 1
syscore_shutdown() will check all registered syscore operations (drivers/base/syscore.c»Execute all the registered system core shutdown callbacks.«) for non-NULL operation shutdown and will execute them. Syscore operations are registered using register_syscore_ops , and most drivers register only resume and suspend fields of syscore_ops.
There is partial list of syscore registrations with shutdown field as of linux kernel version 3.13 for x86/x86_64:
261 /* Put the i8259A into a quiescent state that 262 * the kernel initialization code can get it 263 * out of. 264 */ 265 outb(0xff, PIC_MASTER_IMR); /* mask all of 8259A-1 */ 266 outb(0xff, PIC_SLAVE_IMR); /* mask all of 8259A-2 */
2026 * Disable machine checks on suspend and shutdown. We can't really handle 2027 * them later. . 2037 wrmsrl(MSR_IA32_MCx_CTL(i), 0);
3) kernel/irq/generic-chip.c irq_gc_shutdown : for each element in gc_list , try to run ct->chip.irq_pm_shutdown(data); ; the «@irq_pm_shutdown: function called from core code on shutdown once per chip» (description)
84 static void ledtrig_cpu_syscore_shutdown(void) 85 < 86 ledtrig_cpu(CPU_LED_HALTED); 87 >. 61 case CPU_LED_HALTED: 62 /* Will turn the LED off */ 63 led_trigger_event(trig->_trig, LED_OFF);
What does a clean system halt mean?
Unmount cleanly everything, switch off all hardware.
I am also wondering about syscore what kind of operations are considered as syscore operation?
Syscore is used to register some functions to work at suspend/restore and shutdown. Very small number of drivers registers syscore shutdown virtual functions, for example: turning PC case LEDs (not keyboard’s leds off, disabling interrupts, disabling machine checks (I think like ECC error, because there will be nobody to report them to system log), .
Can any one explain what this halt actually does?
This halt: switches to the 0 CPU core, because only it can do reboot or shutdown, runs all registered pre-shutdown handlers, then prints «System halted» and and asks hardware to do actual poweroff.
162 kernel_shutdown_prepare(SYSTEM_HALT); 163 migrate_to_reboot_cpu(); 164 syscore_shutdown(); 165 pr_emerg("System halted\n"); 166 kmsg_dump(KMSG_DUMP_HALT); 167 machine_halt();