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

267
user208769

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

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

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

0
Возможный дубликат [Linux: интерпретируется при чтении (ala php) для локальных файлов] (https://superuser.com/questions/1211877/linux-interpreted-on-read-ala-php-for-local-files) Kamil Maciorowski 6 лет назад 2

1 ответ на вопрос

0
grawity

Да, это называется FUSE . Ядро позволяет реализовать полнофункциональные файловые системы в пользовательском пространстве, и вы, возможно, уже использовали некоторые из них: sshfs, curlftpfs, ntfs-3g, archivefs, wikipediafs ...

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

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

Спасибо за ответ! Я подумал, что FUSE может каким-то образом включиться, но я не смог найти ничего, что сделало бы это более удобным для моего случая использования - выпивка и тому подобное могут быть хорошей отправной точкой. Спасибо! user208769 6 лет назад 0

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