Разница между командами выключения *nix
Техническая разница между различными командами выключениями системы.
*nix-систему можно выключить различными способами: можно использовать poweroff, shutdown, init, halt.
Результат выполнения команд выключения:
poweroff (команда выключения) посылает команду ACPI на выключение системы (как при однократном нажатии кнопки выключения питания);
shutdown (команда завершения) — позволяет выполнить отложенные операции с питанием. При этом утилита выводит оповещение всем залогинившимся пользователям о предстоящем завершении работы и может с помощью файла /run/nologin блокировать вход в систему за 5 минут до времени выключения (если указан аргумент времени) После вызываются системные и локальные {init/rc}.d-скрипты с параметром stop.. В конце вызывается тот же poweroff;
halt (команда останова) отдаёт команду аппаратному обеспечению приостановить все функции CPU, но оставляет систему включённой (в некоторых случаях использование команды без параметров полностью выключает ПК). На машинах с архитектурой x86 обычно происходит выключение, но на машинах Sun управление возвращается в «ROM monitor» для получения информации о состоянии системы. Как и reboot, команда сбрасывает кэш файловой системы на диск и посылает всем процессам сигналы TERM и KILL;
init (команда изменения уровня выполнения системы) — при переходе на уровень выполнения 0 производится остановка системы командой halt с помощью выполнения скриптов, соответствующих этому уровню.
В большинстве современных *nix-систем для обратной совместимости со старыми проприетарными ОСями эти команды выполняют одно и то же и ссылаются на один и тот же файл. Например, команды poweroff и shutdown представляют из себя символические ссылки на /bin/systemctl:
user@localhost:/sbin$ ls -l poweroff
lrwxrwxrwx 1 root root 14 Sep 5 18:01 poweroff -> /bin/systemctl
user@localhost:/sbin$ ls -l shutdown
lrwxrwxrwx 1 root root 14 Sep 5 18:01 shutdown -> /bin/systemctl