Для чого використовується команда mknod?


51

Я щойно почав використовувати Ubuntu в якості своєї основної ОС, і хотів дізнатися про речі, які я не повинен робити, і дізнатися про ті погані речі, які люди робили в минулому. Я натрапив на цей електронний лист про страшилки, які UNIX & Linux-адмініструвачі зробили у власній системі, коли вони з'явилися новими. Багато з них передбачали використання команди mknod як для дистрибуції, так і для вирішення проблеми. Я ніколи раніше не чув про цю команду, і сторінка man в Ubuntu не дуже допомагає. Отже, моє запитання полягає в тому, для чого використовується ця команда, і які приклади є корисними для щоденного використання?

Відповіді:


47

mknodспочатку використовувався для створення символів та блокування пристроїв, які заповнюються /dev/. В даний час програмне забезпечення, як-от udevавтоматично, створює та видаляє вузли пристроїв у віртуальній файловій системі, коли ядро ​​виявляє відповідне обладнання, але спочатку це /devбув лише каталог, /який був заповнений під час встановлення.

Так, так, у випадку майже повного катастрофи, що призведе до того, що /devвіртуальна файлова система не завантажується та / або виходить з udevладу видовищно, використовуючи mknodкропітку репопуляцію принаймні дерева рудиментарних пристроїв, щоб отримати щось резервне копіювання, можна зробити ... Але так, це жах у систематичному режимі час історій. Особисто я рекомендую рятувальний USB-накопичувач або компакт-диск.

Окрім створення іменованих труб, я не можу придумати єдиного можливого щоденного використання для цього кінцевому користувачеві, який би повинен був потурбуватися про себе, і навіть це розтягує визначення поняття "щоденне використання".


Тобто це ДУЖЕ спеціалізований спосіб створення віртуального файлу, який реально використовується пристроями, підключеними до системи, як спосіб спілкування з системою, без того, щоб навчитися спілкуватися з пристроєм через його драйвер?
Марк Томлін

1
Але udevце специфічно для Linux, чи не так? Можливо, інші системи, схожі на Unix, все ще створюють пристрої вручну?
Faheem Mitha

2
@mark Er, ні. Створення віртуальних файлів пристрою - це те, як програмне забезпечення повинно спілкуватися з пристроєм через його драйвер. Драйвер створює гачок у ядрі; mknod створює файл пристрою, який пов'язує гачок з файлом пристрою, до якого програмне забезпечення згодом може підключитися.
Шадур

@Faheem я не впевнений; Здається, FreeBSD використовує devfsта / або devdя не маю жодного особистого досвіду. Я підозрюю, що інші уніці розробили власні способи автоматизації процесу створення вузлів пристроїв.
Шадур

@mark Наприклад, Alsa генерує низку вузлів /dev/sndвідповідно до різних елементів кожного біта звукового обладнання, яке він виявляє та підтримує. Програмне забезпечення, яке використовує звук, може використовувати ці пристрої для створення звуку, не знаючи точно, про яку звукову карту вони розмовляють.
Шадур

7

Ви можете зробити з ним названу трубу.

Я використовую її з однією програмою для читання з неї, а іншою - для запису в неї.

Полегшує спілкування між процесами.

В іншому випадку ви можете створювати файли пристроїв для пристроїв, яких немає.

Також: http://publib.boulder.ibm.com/infocenter/aix/v6r1/index.jsp?topic=/com.ibm.aix.cmds/doc/aixcmds3/mknod.htm


Хоча ви відповідали правильно, Шадур дав зрозумілу відповідь для всіх рівнів читачів, тому я вважаю, що це найкраще для людей, які шукають відповідь на це питання.
Марк Томлін

Я знаю, я просто намагався пояснити з практичного підходу, як це роблю. Використання mknodдля чогось іншого, ніж виготовлення названих труб, більш ніж рідкісне.
полемон

5

Оскільки Oracle DBA, які працюють на необроблених пристроях для створення дискових груп Oracle ASM, ми регулярно використовуємо mknodдля зв’язку пристроїв.

Відповіді вище були мені дуже корисними, оскільки ми не є адміністраторами системи. Я просто хотів зазначити, що це може бути рідко з точки зору адміністраторів зберігання, mknodале з точки зору Oracle ASM це загальне використання. (Може, хтось може придумати кращий спосіб для нас?)


1
Я запускаю ASM в Linux і не маю жодних причин запускати mknod. У мене є кілька сценаріїв udev, які створюють символьні посилання, але не впевнені, для чого вам потрібен mknod ... Якщо ви не в Linux. звичайно.
derobert

@JayJee Пам'ятайте , що на сучасних системах Linux, якщо ви вносите зміни або доповнення /devз mknod, ці зміни будуть йти в наступний раз , коли система перезавантажується. Вам потрібно буде написати сценарій або udevфайл правила, який зробить зміни / доповнення для вас під час завантаження, щоб зробити їх стійкими.
telcoM

3

IMHO, навіть для створення названих труб, команда mkfifo буде кращою, ніж mknod. По-перше, це своє опис у своєму імені, по-друге, він дозволяє -m варіант змінювати параметри umask.


1
... і вона існувала до десятиліття після названих труб; багато з нас дізналися, mknod foo pколи це було єдиним способом.

Я ніколи навіть не чув про mknod до недавнього часу, коли я переглядав основні програми. Я завжди просто використовував mkfifo ...
Шість

0

Команда “mknod” була передана ліцензіатам у Unix (tm) Версії 4 AT&T. Я б рекомендував вам усім, що варто витратити час і гроші, щоб отримати копію

Технічний журнал Bell System, 57: 6. липень-серпень 1978 р. 1905-1929. Система розподілу часу UNIX. (Річі, ДМ; Томпсон, К.)

Це питання, а особливо ця стаття, призведе до того, щоб ви оцінили декілька основних концепцій, які дозволяють побудувати елегантну, компактну, швидку, стабільну, безпечну та універсальну операційну систему, якою була Unix (tm)). Різні системи, які зараз доступні, все ще досить універсальні ;-)

Я спробую згадати кілька таких.

1) встановлені та встановлені жорсткі біти та те, як використання зазначених бітів дозволяє розділити користувачів на довірені та ненадійні домени привілеїв. Хоп-пружини вічні, що довірені користувачі будуть рідше командувати систему "# cd /; rm -rf * .o », зауважте як неправильне використання привілею, так і« простір руйнування ». Зауважте також, що кінець речення з цитованою фразою диктує порядок повного зупинки та завершального лапки. Англійська граматика смокче (фм). dmr і ken пожертвували громадськість семінальним патентом, благословляючи їх.

2) доступ до пристрою через те саме простір імен, що і файли. Ось де простий елегантність невеликого інструменту в поєднанні з іншими простими інструментами для виконання діяльності, про яку не думали засновники.

3) Файл у просторі даних - це рядок. Структура накладається програмами в програмному просторі і не тісно пов'язана зі складною програмою Swiss-Army-Knife. Apple (R), Microsoft (R) та IBM (R), можливо, мали б кращі продукти, якби більшість з них читали BSTJ.

4) stdin, stdout, stderr.

5) оболонки, інтерпретаційні процесори команд, здатні легко поєднувати прості інструменти.

6) оптимізуйте код лише у внутрішніх циклах, витрачайте обмежений час та гроші там, де він рахується.

7) не вставляйте синтаксис вводу-виводу в процесори перекладу мови.

C. <FORTRAN

8) KISS.

9) "Простіше спроектувати та реалізувати розширення системи ayaeem для багатокористувацького обміну тимчасовими можливостями на хорошу систему в режимі реального часу, ніж інший спосіб", "мені, розширення для обміну часом на RSX-11D, реалізоване за допомогою невеликих інструментів, написаних у MACRO 11, коли unavoidat, інакше скрипт мови більш високого рівня був досить хорошим, 16 користувачів на 248k байті PDP-11 // 45 (16-ти твердотільна пам'ять, решта ядра). Одночасна розробка програми з FOCAL, BASIC, FORTRAN IV, C, MACRO-11, редагування посилань, виконання програми, пакетне, інтерактивне та збирання даних / контролю численних наукових експериментів з використанням LAB-11 та креативних індивідуальних інтерфейсів для A / D, D / A, годинник високої роздільної здатності, ...

Не спостерігається дратувальна затримка редагування за допомогою CRT 9600baud або 120cps принтерів 30cps DECwriters. Трохи похмурий стакато з принтером на 300 л / хв. UT200 та 2780 для RJE. Більш швидка розробка програми, ніж RSX-11M, RSX-11M +, IAS та ранні версії VMS.

Дійсно простий планувальник розподілу часу, реалізований як завдання в режимі реального часу, використовуючи задоволені характеристики пріоритетного ATL, реалізованого в якості деквізу.

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


Вибачте, будь ласка, помилки введення тексту. iPhone і Паркінсон не грають разом. C <FORTRAN <COBOL <PL / 1, лівіше краще.
k6mrm
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.