Почему нам нужна функция перезагрузки в различных двоичных файлах?

На самом деле это ничего не означает и проигнорировано.

Это часто происходит, когда произведено от нескольких мест, объединен, и не ясно, кто задание, это должно добавить наклонные черты, таким образом, обе стороны делают это, и Вы заканчиваете с двумя из них. Семантически в случае пути к каталогу, не имеет никакого значения и будет проигнорирован большинством программ.

Существуют другие ситуации в мире Unix, где у них есть значение. Иногда в начале пути они могли инициировать поиск пути самбы вместо пути локальной файловой системы, или после протокола в nfs они могут указать, что имя хоста, однако особенно в случае запаздывающей наклонной черты как Вы дало как пример, это не должно иметь значения очень.

Ради Вашей исправности как администратор или программист необходимо все еще избежать этих случаев по мере возможности. Вы никогда не знаете, когда что-то будет проанализировано неправильно, но если Вы приезжаете, Ваш путь не волнуется об этом.

12
03.03.2013, 16:50
3 ответа

Нам не обязательно нужны они оба, но у нас есть они оба из-за истории Unix и его кратности версий.

Из их соответствующих страниц справочника:

  • Утилита завершения работы появилась в 4.0BSD.
  • Утилита перезагрузки появилась в Версии 6 AT&T UNIX.

завершение работы более общего назначения, и более мощно, в то время как перезагрузка является более дружественной и легче помнить.

завершение работы позволяет Вам указывать временный аргумент (для перезапуска за 5 минут, например) и позволяет Вам делать много вещей помимо перезагрузки, включая:

  • можно просто начать пользователей и не на самом деле завершить работу
  • можно поместить систему для сна вместо закрытия
  • можно просто завершить работу, не перезагружая (как команда останова)
  • можно включать пользовательское предупреждающее сообщение для пользователей в системе

Однако, если Вы просто хотите перезагрузить систему теперь, легче ввести reboot чем shutdown -r now.

15
27.01.2020, 19:54
  • 1
    Забавный факт: Некоторые версии shutdown используйте теперь в качестве значения по умолчанию. Не пытайтесь получить справку для завершения работы с shutdown -h когда-либо, особенно не на сервере где-нибудь в центре обработки данных. –  Residuum 10.10.2011, 17:17

Две команды делают что-то другое, однако они могут закончить тем, что назвали друг друга, который является, почему они, кажется, делают то же самое!

reboot вызовет ядро для фактического инициирования аппаратной перезагрузки. Однако это только сделает это, если система будет готова к завершению работы - все демоны и пользовательские процессы должны быть остановлены, размонтированные файловые системы, и т.д. Таким образом, это проверяет систему runlevel, и если это не будет 0 или 6, то затем это на самом деле вызовет shutdown команда для Вас.

shutdown заставляет систему runlevel быть измененной. Изменение runlevel (к 0 для останова или 6 для перезагрузки) запускает много скриптов в/etc/rc0.d или rc6.d, которые закрывают демонов, размонтировали файловые системы и т.д. Наконец эти сценарии вызывают halt или reboot - на этот раз система находится в корректном runlevel, и они сообщают ядру к перезагрузке (или останов).

6
27.01.2020, 19:54

В дополнение к тому, что записал бунтарь, между этими двумя программами существует важное различие: shutdown находится в /sbin, в то время как reboot находится в /usr/bin.

Почему это имеет значение, Вы спрашиваете? Я скажу Вам.

Вещи под /usr те, которые не должны быть доступными, пока система не загружается достаточно далеко, что система минимально функциональна. Каталоги верхнего уровня, которые традиционно никогда не монтируются в отдельных файловых системах — /bin, /etc, /sbin, и т.д. — как ожидают, будут доступны, в то время как система достигает этого минимально полезного состояния. Существуют различные последствия этого дизайна; например, это - плохой стиль для записи пункта "остановки" сценария SysV init, который использует программы в /usr/bin если существует альтернатива в /bin или /sbin.

shutdown ключевая утилита, один всегда доступный. reboot утилита удобства только.

6
27.01.2020, 19:54
  • 1
    reboot находится в /sbin в Debian (с SysVinit) и Ubuntu (с выскочкой). –  Gilles 'SO- stop being evil' 14.05.2011, 00:16
  • 2
    Хорошо, так метаответ: знайте вашу систему.:) Я чаще всего использую CentOS. –  Warren Young 14.05.2011, 00:21
  • 3
    То же для Дуги (systemd), обоих в/sbin –  daisy 03.03.2013, 17:04
  • 4
    Действительно, в systemd операционных системах Linux ни один не ключевая утилита, как с systemd все эти команды (поскольку systemd doco имеет его), команды "совместимости". Действительно, предпосылка вопроса является ложью. Они не находятся в различных двоичных файлах. Для получения дополнительной информации см. unix.stackexchange.com/a/196014/5132. –  JdeBP 14.04.2015, 11:04

Теги

Похожие вопросы