2013-04-03 1 views
8

У меня есть несколько процессов, которые говорят друг с другом через именованные каналы. В настоящее время я создаю все свои каналы локально и сохраняю приложения в одном рабочем каталоге. В какой-то момент предполагается, что эти программы могут (и будут) запускаться из разных каталогов. Мне нужно создать эти каналы, которые я использую в известном месте, поэтому все различные приложения смогут найти нужные им каналы.Какое место для размещения именованных каналов в Linux?

Я новичок в работе над Linux и не знаком с структурой файловой системы. В Windows я бы использовал что-то вроде папки AppData для хранения этих труб. Я не уверен, что эквивалент в Linux.

Каталог /tmp выглядит, как будто он может функционировать просто красиво. Я читал в нескольких местах, что он очищается при выключениях системы (и это нормально, я не могу повторно создавать трубы, когда я начинаю создавать резервные копии.), Но я видел, как некоторые другие люди говорят, что они теряют файлы в то время как система работает, как будто она периодически очищается, чего я не хочу, пока мои приложения используют эти трубы!

Есть ли место, более подходящее для конкретных магазинов приложений? Или будет /tmp быть местом, которое я хотел бы сохранить в этих (поскольку они в конце концов, временные)?

ответ

7

Я видел SaltStack используя /var/run. Единственная проблема заключается в том, что вам нужен root-доступ для записи в этот каталог, но предположим, что вы собираетесь запустить ваш процесс в качестве системного демона. SaltStack создает /var/run/salt во время установки и изменяет владельца на salt, чтобы позже его можно было использовать без привилегий root.

Я также проверил Filesystem Hierarchy Standard и даже если это не очень важно, так много, и они говорят:

Системные программы, поддерживающие переходные сокетов UNIX-домена необходимо поместить их в этом каталоге.

Поскольку названные трубы - это нечто очень похожее, я бы пошел тем же путем.

+0

Прошу прощения за то, что вы не видели ответ раньше, но это именно тот ответ, который я искал. Я не знал о «[Стандарте иерархии файловой системы] (http://en.wikipedia.org/wiki/Filesystem_Hierarchy_Standard#Directory_structure)», и, судя по всему, у него есть всевозможные информативные лакомства для начинающего разработчика Linux, такого как я. В дополнение к '/ var/run', кажется, что'/var/tmp' также приемлемо для моего варианта использования, так как он также сохраняет их при перезагрузках. Опять же, спасибо! – nitz

+0

Рад, что я помог ;-) – tchap

3

На новых дистрибутивах Linux с Systemd /run/user/<userid> (созданного pam_systemd при входе в систему, если она не существует) может быть использован для открытия сокетов и положить .pid файлы там вместо /var/run где только корень имеет доступ. Также обратите внимание, что /var/run является символической ссылкой на /run, поэтому может использоваться /var/run/user/<userid>. Для получения дополнительной информации проверьте this thread. Идея состоит в том, что системные демоны должны иметь каталог /var/run/<daemon name>/, созданный во время установки с надлежащими разрешениями, и помещать туда свои файлы сокетов/pid, тогда как демоны, запускаемые пользователем (например, pulseaudio), должны использовать /run/user/<userid>/. Другой вариант - /tmp и /var/tmp.

Смежные вопросы