Поиск по сайту:

Учебное пособие по команде Linux mkfifo для начинающих (с примерами)


На этой странице

  1. Команда Linux mkfifo
  2. Q1. Что такое именованные каналы?
  3. Вопрос 2. Как идентифицировать именованные каналы?
  4. Вопрос 3. Как установить настраиваемые права доступа?
  5. Заключение

Даже если вы являетесь умеренным пользователем командной строки Linux, вы должны знать о каналах — фундаментальной функции командной строки, которая позволяет процессам обмениваться данными. Кроме того, существует концепция именованных каналов (да, каналов с именами, чтобы вы могли делать больше с каналами). Команда mkfifo позволяет создавать такие именованные каналы.

В этом уроке мы обсудим основы mkfifo, используя несколько простых для понимания примеров. Но прежде чем мы это сделаем, стоит упомянуть, что все приведенные здесь примеры были протестированы на Ubuntu 22.04 LTS.

Команда Linux mkfifo

Команда mkfifo в основном позволяет создавать FIFO (также известные как именованные каналы). Ниже приведен синтаксис команды:

mkfifo [OPTION]... NAME...

И вот как это объясняет справочная страница инструментов:

Create named pipes (FIFOs) with the given NAMEs.

Ниже приведены несколько примеров в стиле вопросов и ответов, которые должны дать вам хорошее представление о том, как работает mkfifo.

Q1. Что такое именованные каналы?

Чтобы понять это, вы должны сначала ознакомиться с концепцией основных пайпов. Вы наверняка видели команды, содержащие вертикальную черту (|). Этот стержень называется трубой. Что он делает, так это создает канал связи между двумя процессами (когда выполняется полная команда).

Например:

ls | grep .txt

Упомянутая выше команда состоит из двух программ: grep. Обе эти программы разделены вертикальной чертой (|). Итак, что здесь делает pipe, так это создает канал связи между этими программами — когда вышеупомянутая команда выполняется, вывод ls подается в качестве входных данных для grep. Итак, наконец, вывод, который отображается на терминале, состоит только из тех записей, в которых есть строка .txt.

Итак, это было быстрое освежение обычных труб. Теперь приходит концепция именованных каналов. Как следует из самого названия, это каналы с именами. Вы можете создать именованный канал с помощью команды mkfifo. Например:

mkfifo pipe2

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

Например, предположим, что ls — это процесс, запущенный в первом терминале, и вы хотите увидеть его вывод в другом терминале. Итак, вот что вы можете сделать:

ls > pipe2

и вот что вы можете сделать во втором терминале:

cat < pipe2

Q2. Как идентифицировать именованные каналы?

Доступ к именованным каналам можно получить обычно, как к файлам. Это означает, что вы можете использовать команду ls для доступа к ним. Если вы видите права доступа для именованного канала, вы увидите букву p в начале. Это означает, что рассматриваемый файл является именованным каналом. Вот пример:

Q3. Как установить настраиваемые права доступа?

Как видно из предыдущих вопросов и ответов, права доступа по умолчанию для именованных каналов — rw, rw и r (соответственно для пользователя, группы и других). Однако при желании вы также можете установить собственные разрешения, что можно сделать с помощью параметра -m.

Например:

mkfifo pipe3 -m700

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

Чтобы узнать больше о mkfifo, вы можете использовать опции --help и --version.

Заключение

Таким образом, в зависимости от того, какую работу вы выполняете в командной строке Linux, команда mkfifo может оказаться для вас очень полезной. Как только вы закончите с базовым использованием, которое мы здесь обсуждали, вы можете узнать больше об этом инструменте, перейдя на его справочную страницу.