Почему корневой каталог обозначен / знак?

Наблюдение журнала в режиме реального времени

Я нашел, что во время завершения работы обычно существует логотип Ubuntu и мигающие индикаторы, который показывают вместо журнала процесса завершения работы. Если существуют ошибки, то их отчасти показывают, но грязно. Однако при закрытии, если я нажимаю клавишу Windows и r (Metar), затем я добираюсь для наблюдения успеха и отказа системных служб, как они происходят. Таким образом я знаю то, что точно повреждается. Никакая идея, характерно ли это сочетание клавиш для моей установки Kubuntu или что; я не добавил его.. Один из тех я нашел случайно, так или иначе...

Просмотр журналов после перезагрузки

Когда система перезагружается, сообщения об ошибках должны быть сохранены в файл журнала. Какой файл журнала зависит, на котором повреждается/неправильно конфигурируется сервис. Соответствующий журнал почти определенно будет в /var/log/ (или подкаталог этого). ls, less, grep и find были единственные программы, в которых я нуждался для нахождения сообщений об ошибках в журналах...

После того как Вы нашли ошибку и сервис, который вызвал ее, затем Вы не должны должны быть перезагружать для тестирования новой конфигурации; просто перезапустите сервис.. Надо надеяться, можно протестировать фиксированную конфигурацию с командой как:

sudo service <service name> restart

96
03.12.2013, 12:32
3 ответа

Наклонная черта вправо / символ-разделитель, который разделяет каталоги в путях в подобных Unix операционных системах. Этот символ, кажется, был выбран когда-то в 1970-х, и согласно анекдотическим источникам, причины могли бы быть связаны с этим предшественник к Unix, операционной системе Multics, используемой > символ, поскольку разделитель пути, но разработчики Unix уже зарезервировал символы > и < показать перенаправление ввода-вывода на командной строке оболочки задолго до того, как у них была многоуровневая файловая система. Таким образом, когда время настало для разработки файловой системы, они должны были найти, что другой символ показал разделение элемента пути.

Вещь отметить вот состоит в том что в терминале Lear-Siegler ADM-3A, широко использующемся в течение 1970-х, от который среди других вещей практика использования ~ символ для представления корневого каталога происходит, / ключ рядом с> ключ:

keyboard layout of the Lear-Siegler ADM-3A terminal

Что касается того, почему корневой каталог обозначен синглом /, это - конвенция, скорее всего, под влиянием того, что корневой каталог является каталогом верхнего уровня иерархии каталогов, и в то время как другие каталоги могут быть под ним, обычно нет причины относиться к чему-либо вне корневого каталога. Так же сама запись каталога не имеет никакого имени, потому что это - граница видимого дерева каталогов.

109
27.01.2020, 19:30
  • 1
    , "в то время как другие каталоги могут быть под ним, обычно нет причины относиться к чему-либо вне корневого каталога". Я не понимаю это. Я не уверен, под каким направлением Вы подразумеваете "под", но нет ничего "вне" иерархии, смонтированной в /. Файловые системы Unix являются единственным деревом с точками монтирования для различных дисков. –  alexis 03.12.2013, 16:53
  • 2
    Существует также chroot и такой - Вы ни к чему не можете получить доступ вне нового корня, но это не означает, что они не там. –  Bobson 03.12.2013, 17:16
  • 3
    @Gilles, физическое местоположение диска не является вопросом. Любой раздел диска вне корневого раздела в этом смысле, но он смонтирован под корнем в иерархии файловой системы. Bobson, положительная сторона у chroot, но это не соответствует тому, что сказал Thomas: После chroot дело не в этом "обычно нет причины" для выхода наружу системного корня; это невозможно. На Unix все в файловой системе находится под корнем. –  alexis 03.12.2013, 21:35
  • 4
    "После chroot дело не в этом "обычно нет причины" для выхода наружу системного корня; это невозможно". Это просто неправильный. В то время chroot() был представлен, это не имело никаких подобных тюрьме свойств вообще, это просто влияло на разрешение пути. Даже сегодня привилегированные процессы могут убежать из chroot дизайном. Я также упомянул chroot() в более раннем комментарии. –  Thomas Nyman 04.12.2013, 07:59
  • 5
    IIRC, конвенция Multics, не только используемая > как разделитель каталога, но также и < обращаться к родительскому каталогу: < отдельно было эквивалентно .., в то время как <foo было эквивалентно ../foo. Я всегда находил это эстетически приятным. –  Mark Reed 12.12.2013, 01:07

В компонентах пути на Unix не могут использоваться только два символа: нулевой символ, который завершает строки в C (язык ядра) и наклонная черта, которая резервируется как разделитель пути. Кроме того, компоненты контура не могут быть пустыми строками.

Так, в пути у нас есть только два вида маркеров: наклонная черта и компонент.

Предположим, что, не добавляя новых маркеров, мы хотели бы поддерживать поддержку два типа путей, относительных и абсолютных. Кроме того, мы хотели бы смочь обратиться к корневому каталогу, который не имеет никакого имени (он не имеет никакого родителя, который дал бы ему имя).

Как мы можем представить относительные пути, полные пути, и обратиться к корневому каталогу, с помощью только наклонную черту?

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

Пути, которые начинаются с наклонной черты, не имеют смысла, итак, почему бы не использовать ведущую наклонную черту в качестве маркера, который указывает, "этот путь является абсолютным, а не относительным".

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

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

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

Затем мы могли бы также добавить запаздывающую наклонную черту, которая может означать, что "этот путь утверждает, что последний компонент контура является названием каталога, а не регулярного файла или любого другого типа объекта: та запаздывающая наклонная черта обозначает, что каталог так же к пути ведущая наклонная черта обозначает корневой каталог".

Со всем этим выше синтаксиса у нас все еще есть синтаксис с неназначенным значением: удвойте наклонные черты, тройные наклонные черты, и т.д.

Почему не только представляют другой маркер и делают это по-другому. Это, вероятно, потому что разработчики проявили минималистические подходы в целом. (Почему делает ed редактор только отображает a ? когда Вы делаете что-то не так?) Наклонную черту легко ввести, не требуя никакого сдвига. Язык пути только с двумя типами маркера (компонент и наклонная черта) легко помнить и использовать.

Другой важный фактор - то, что легкие манипуляции путями являются возможными использующими только строковыми представлениями. Например, мы можем "повторно базироваться" полные пути к новому родительскому каталогу довольно легко:

OLD_PATH=/old/path
NEW_HOME=/new/home

NEW_PATH="$NEW_HOME$OLD_PATH"  /new/home/old/path

Это не работало бы, если бы мы указали на полные пути некоторым другим способом, как ведущий знак доллара или безотносительно:

OLD_PATH=^old/path  # ^ means absolute path
NEW_HOME=^new/home

# now we need more string kung-fu than just catenation
NEW_PATH="$NEW_HOME/${OLD_PATH#^}"

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

11
27.01.2020, 19:30
  • 1
    "Наклонная черта легко ввести, не требуя никакого сдвига". Возможно, Вы выходите легкий там через водоем, но здесь в Финляндии мы не только должны нажать сдвиг, но также и достигнуть всех через к строке числа также.; P –  Thomas Nyman 03.12.2013, 21:16
  • 2
    @ThomasNyman Быть, что, как это может, внешние раскладки клавиатуры были, вероятно, не беспокойством о Ken Thompson. Наклонную черту было легко ввести для разработчиков Unix и их ранних пользователей. Установка –  Kaz 04.12.2013, 00:38
  • 3
    Достаточно ярмарка. Хотя я был главным образом шуточным, я действительно нахожу это интересным (и иногда забавный), как некоторый особенности в программном обеспечении с долгим наследием может быть объяснен особенностями в современных аппаратных средствах. –  Thomas Nyman 04.12.2013, 09:48
  • 4
    @ThomasNyman Ха-ха, интересно, входит ли сам Bill Joy в систему и обновляет {необходима цитата} части на той странице ADM-3A, будет некоторый "Wikidickhead" затем противостоять с: "эта статья содержит исходное исследование". :) –  Kaz 04.12.2013, 10:00
  • 5
    @ThomasNyman, Теперь я полагаю, что существуют клавиатуры "педали", посредством чего можно ввести / использование Вашей правой ноги. Точно так же, как проигрывание фортепьяно. –  Pacerier 23.01.2015, 11:31

Первая иерархическая файловая система, поскольку мы знаем это сегодня, была разработана для Multics. Дизайн описан в “Файловой системе Общего назначения Для Внешней памяти” R.C. Daley и P.G. Neumann. Существенная характеристика этой файловой системы - то, что каталог является файлом, который может содержаться в каталоге как любой другой файл. Файловая структура формирует дерево, в котором все узлы, не являющиеся листом являются каталогами. Корень дерева всегда является каталогом. Каждый файл имеет имя (имя записи), который уникален в рамках его родительского каталога. Корневой каталог не имеет имени, так как он не содержится в другом каталоге.

Для обозначения файла необходимо описать путь от корня дерева. Multics приняла естественный синтаксис для путей где если P путь к каталогу и F название файла, затем P>F синтаксис для названного файла F в каталоге, путь которого P.

В течение тех времен, когда Вы не хотите обременять себя каталогами, Multics имела понятие рабочего каталога. Пустое имя файла без признака каталога интерпретируется как файл в рабочем каталоге.

Объединение этих правил, foo файл в рабочем каталоге; foo>bar файл в дочернем каталоге foo из рабочего каталога, и так далее. Эти правила описывают относительные пути, но дополнительное правило необходимо для создания полных путей, начинающих с корневого каталога. Учитывая, что чтение пути слева направо соответствует перемещению от корня до листов дерева, корень должен быть обозначен специальным маркером слева от пути. Так как имена файлов никогда не пусты (потому что это часто сбивало бы с толку), никакой относительный путь никогда не запускается с символа >, который делает это удобным маркером для абсолютных путей. Таким образом >foo названный файл foo в корневом каталоге, >foo>bar названный файл bar в названном каталоге foo в корневом каталоге, и так далее. Это оставляет корневой каталог, который мог быть пустой строкой; однако, часто не удобно использовать пустую строку в качестве пути, так вместо этого это записано >, который обладает дополнительным преимуществом, что путь является абсолютным, если и только если его первый символ >.

Unix принял этот дизайн от Multics. Так как Unix уже использовал символ > для перенаправления вывода в его командном процессоре его разработчики выбрали другой символ / разделить каталоги в путях.

56
27.01.2020, 19:30

Теги

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