Вы можете заменить свое правило на:
$(PACKAGES):
stow --no-fold $@
В ОС на основе init
/sbin/telinit
связан с /sbin/init
, а в ОС на основе systemed
он связан с /sbin/systemed
. Так,это способ связи с init
или systemed
или аналогичным программным обеспечением.
Результат telinit 6
и reboot
один и тот же, но они реализуют разные мысли.
Цитата изhttp://www.tutorialspoint.com/unix_commands/init.htm
A runlevel is a software configuration of the system which allows only a selected group of processes to exist.
Таким образом, изменение runlevel
не эквивалентно rebooting
или power off
.
В init
на основе ОС runlevel
постоянно упоминается /etc/inittab
. При запуске система init
читает файл, чтобы решить, какие группы процессов следует запустить. Уровень запуска 6 говорит, что не запускайте никаких процессов и перезагружайтесь.
Изменение в /etc/inittab
необратимо. Если файл изменен, init
изменяет уровень запуска -при перезагрузке и остается на нем до дальнейшего изменения файла.
Эффект telinit
однократный и без перезагрузки. После перезагрузки init
снова считывается с /etc/inittab
и соответственно запускается уровень -.
Теперь запустите -уровень 6 говорит init
, чтобы убить все дочерние процессы и перезагрузиться. Сtelinit 6
init
убить все дочерние процессы и перезагрузиться. Включив команду reboot
, init проделайте то же самое. Но это не означает, что изменение уровня запуска -эквивалентно перезагрузке. Потому что, если вы навсегда измените уровень запуска -вашей системы на 6, используя /etc/inittab
, она будет продолжать перезагружаться.
Если вы используете telinit 6
для перезагрузки системы, а не команду reboot
, это не будет иметь никакого значения.
В Linux существует система инициализации под названием SysVinit, которая создана по образцу системы инициализации UNIX System V. Некоторые версии Linux на самом деле все еще используют эту систему, поддерживают с ней совместимость, например SysVcompat от Systemd, или заменили ее частично (без sysvcompat, но все еще используют скрипты sysv, такие как Debian ), или заменили все вместе, например, «чистый» Системные системы.
Именно SysV реализует концепцию уровней выполнения. Скрипты помещаются в /etc/rc{runlevel}.d/, где runlevel — это уровень запуска. SysV также определяет упорядоченное поведение уровней выполнения по умолчанию, включая то, к какому из них следует перейти по умолчанию. Каждый сценарий на каждом уровне выполнения запускается со своими функциями запуска или завершения работы в зависимости от того, повышается этот уровень выполнения или понижается. Таким образом, в системе sysvinit да, когда вы загружаете ее первый запуск /sbin/init, и эта программа впоследствии запускает функции запуска каждого скрипта на каждом уровне выполнения. Я также должен отметить, что у вас может быть установлено больше сценариев, чем указано в /etc/rc *, и именно так вы включаете и отключаете сценарии и, следовательно, службы, которыми они управляют.
Системы, не использующие sysv, вообще не должны этого делать, как systemd. Проще говоря, systemd имеет модули, которые определяют свои зависимости, такие как другие службы, точки монтирования, таймеры или цели, такие как «network.target». Вместо того, чтобы вдаваться в подробности о systemd, я просто скажу, что systemd поддерживает полную совместимость со сценариями sysv, но не обязательно с его уровнями выполнения. Кроме того, init может запускаться первым, или systemd может запускаться, а затем запускать все сценарии sysv. Или ваш дистрибутив мог бы заменить все ваши сценарии sysv модулями systemd. В большинстве дистрибутивов будут установлены сценарии совместимости, чтобы такие вещи, как reboot
или telinit
, работали через systemd.