Определение
В большинстве ОС под управлением подсистемы иницализации systemd все старые программы для управления питания являются символьными ссылками на подкоманды systemctl
для сохранения обратной совместимости
systemctl reboot
— перезагрузка
systemctl poweroff
/systemctl shutdown
— выключение
systemctl halt
— завершает работу системы, останавливая все службы и процессы и размонтировав ФС, но оставляет компьютер включенным
PS: systemctl
понимает из чего он был запущен за счет использования argv[0]
, что является стандартной конструкцией в языке C, вот кусок исходного кода systemctl
(уменьшил табуляцию для удобочитаемости):
int systemctl_dispatch_parse_argv(int argc, char *argv[]) {
assert(argc >= 0);
assert(argv);
if (invoked_as(argv, "halt")) {
arg_action = ACTION_HALT;
return halt_parse_argv(argc, argv);
} else if (invoked_as(argv, "poweroff")) {
arg_action = ACTION_POWEROFF;
return halt_parse_argv(argc, argv);
} else if (invoked_as(argv, "reboot")) {
arg_action = ACTION_REBOOT;
return halt_parse_argv(argc, argv);
} else if (invoked_as(argv, "shutdown")) {
arg_action = ACTION_POWEROFF;
return shutdown_parse_argv(argc, argv);