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

333
user208769

Stellen Sie sich vor, Sie wollten eine Datei - zum Beispiel / etc / hosts -, aber jedes Mal, wenn die Datei gelesen wurde, anstatt sie aus dem Dateisystem zu lesen, war ihr Inhalt die Ausgabe einer Anwendung - zum Beispiel eines Skripts, das die config in den Websites von Apache abfragt. aktiviert

Ich fühle mich wie das möglich sein sollte, zum Beispiel Kernel - Code so ziemlich alles erzeugt in /sysund /proc, was ich glaube, es als virtuelle Dateisysteme montiert. Gibt es bereits eine Art allgemeines virtuelles Dateisystem-Overlay, das es mir ermöglicht, ein Skript oder eine Binärdatei als Ausgabe zu delegieren, die angezeigt werden soll, wenn eine Datei gelesen wird, oder kommt dieser Anwendungsfall nicht sehr häufig vor?

(Ich kann mir vorstellen, dass sein Missbrauch ein System erheblich verlangsamen könnte, und es gibt wahrscheinlich bessere Möglichkeiten - in diesem Fall wäre eine Cron-Aufgabe, die alle 10 Minuten ausgeführt wird, zu bevorzugen - aber ich bin neugierig, ob es etwas ist, das zuvor angetroffen wurde und versucht wurde )

0
Mögliches Duplikat von [Linux: Interpretiertes Lesen (ala PHP) für lokale Dateien] (https://superuser.com/questions/1211877/linux-interpreted-on-read-ala-php-for-local-files) Kamil Maciorowski vor 6 Jahren 2

1 Antwort auf die Frage

0
grawity

Ja, es heißt FUSE . Der Kernel ermöglicht die Implementierung von voll ausgestatteten Dateisystemen im Userspace, und Sie haben möglicherweise bereits einige davon verwendet: sshfs, curlftpfs, ntfs-3g, Archivdateien, wikipediafs ...

Die FUSE-Oberfläche ist etwas niedriger als Sie beschreiben (das Dateisystem muss immer noch einzeln Öffnen, Lesen, Schreiben usw. behandeln), es hat jedoch Bindungen für verschiedene Sprachen von Python bis Bash . Die meisten von ihnen haben ein "Hallo Welt" -Beispiel, das angepasst werden kann, um die Ausgabe eines externen Programms als Daten bereitzustellen.

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

Danke für die Antwort! Ich dachte, dass FUSE irgendwie funktionieren könnte, aber ich konnte nichts finden, was diesen für meinen Use Case freundlicher machte - Alkohol und ähnliches könnten ein guter Ausgangspunkt sein. Vielen Dank! user208769 vor 6 Jahren 0