Динамическое или виртуальное содержимое файла, похожее на /sys/*

Динамическое или виртуальное содержимое файла, похожее на /sys/*

Представьте, что вам нужен файл, например /etc/hosts, но каждый раз, когда файл считывается, вместо того, чтобы считывать его из файловой системы, его содержимое представляет собой вывод приложения, например скрипта, который выполняет поиск конфигурации в сайтах Apache с поддержкой

Мне кажется, что это должно быть возможно, например, код ядра генерирует почти все в /sysи /proc, которые, как я полагаю, он монтирует как виртуальные файловые системы. Существует ли уже какой-то универсальный оверлей виртуальной файловой системы пользовательского пространства, который позволил бы мне делегировать скрипт или двоичный файл в качестве вывода, который должен отображаться при каждом чтении файла, или этот вариант использования просто встречается не так уж часто?

(Я полагаю, что его неправильное использование может значительно замедлить работу системы, и, вероятно, есть лучшие способы — в приведенном выше случае предпочтительнее было бы запустить cron-задачу каждые 10 минут — но мне интересно, встречалось ли это раньше и предпринимались ли попытки сделать это)

решение1

Да, это называетсяПРЕДОХРАНИТЕЛЬ. Ядро позволяет реализовать полнофункциональные файловые системы в пользовательском пространстве, и вы, возможно, уже использовали некоторые из них: sshfs, curlftpfs, ntfs-3g, archivefs, wikipediafs...

Интерфейс FUSE немного более низкоуровневый, чем вы описываете (файловая система по-прежнему должна индивидуально обрабатывать открытия, чтения, записи...), но у него есть привязки к различным языкам от Python доБаш. Большинство из них имеют пример «hello world», который можно адаптировать для предоставления вывода внешней программы в качестве данных.

В настоящее время FUSE работает на Linux, различных BSD, macOS, Solaris...

Связанный контент