Dynamischer oder virtueller Dateiinhalt, ähnlich wie /sys/*

Dynamischer oder virtueller Dateiinhalt, ähnlich wie /sys/*

Stellen Sie sich vor, Sie möchten eine Datei - zum Beispiel /etc/hosts - aber jedes Mal, wenn die Datei gelesen wird, wird sie nicht aus dem Dateisystem gelesen, sondern ihr Inhalt ist die Ausgabe einer Anwendung - zum Beispiel eines Skripts, das die Konfiguration in Apaches Sites-enabled grepst.

Ich denke, das sollte möglich sein, zum Beispiel generiert Kernelcode so ziemlich alles in /sysund /proc, die er, glaube ich, als virtuelle Dateisysteme mountet. Gibt es bereits eine Art allgemeines Userspace-Overlay für virtuelle Dateisysteme, das es mir ermöglichen würde, ein Skript oder eine Binärdatei als Ausgabe zu delegieren, die angezeigt werden soll, wenn eine Datei gelesen wird, oder kommt dieser Anwendungsfall einfach nicht sehr oft vor?

(Ich kann mir vorstellen, dass sein Missbrauch ein System erheblich verlangsamen könnte, und es gibt wahrscheinlich bessere Möglichkeiten – im obigen Fall wäre ein alle 10 Minuten ausgeführter Cron-Task vorzuziehen –, aber ich bin neugierig, ob so etwas schon einmal aufgetreten ist und versucht wurde.)

Antwort1

Ja, es heißtSICHERUNG. Der Kernel ermöglicht die Implementierung voll funktionsfähiger Dateisysteme im Benutzerbereich und Sie haben einige davon möglicherweise bereits verwendet: sshfs, curlftpfs, ntfs-3g, archivefs, wikipediafs ...

Die FUSE-Schnittstelle ist etwas bodenständiger als Sie beschreiben (das Dateisystem muss immer noch einzeln Öffnen, Lesen, Schreiben usw. verarbeiten), aber sie verfügt über Bindungen für verschiedene Sprachen von Python bisSchlag. Die meisten von ihnen haben ein „Hallo Welt“-Beispiel, das angepasst werden kann, um die Ausgabe eines externen Programms als Daten bereitzustellen.

FUSE funktioniert derzeit unter Linux, verschiedenen BSDs, macOS, Solaris ...

verwandte Informationen