/sys/* に似た動的または仮想ファイル コンテンツ

/sys/* に似た動的または仮想ファイル コンテンツ

たとえば、/etc/hosts などのファイルが必要だったとします。しかし、そのファイルが読み込まれるたびに、ファイルシステムから読み込まれるのではなく、その内容はアプリケーションの出力 (たとえば、Apache の sites-enabled の設定を grep するスクリプト) になります。

これは可能だと思います。たとえば、カーネル コードは と のほぼすべてを生成し/sys/proc仮想ファイルシステムとしてマウントすると思います。ファイルが読み取られるたびに表示される出力としてスクリプトまたはバイナリを委任できる、何らかの汎用ユーザー空間仮想ファイルシステム オーバーレイがすでにあるのでしょうか。それとも、このユースケースはあまり頻繁に発生しないのでしょうか。

(これを誤用すると、システムの速度がかなり低下する可能性があり、おそらくもっと良い方法があるでしょう。上記のケースでは、10 分ごとに実行される cron タスクが望ましいでしょう。しかし、これが以前に遭遇して試みられたことのあることなのかどうか興味があります)

答え1

はい、それはヒューズカーネルは、フル機能のファイルシステムをユーザー空間に実装することを許可しており、sshfs、curlftpfs、ntfs-3g、archivefs、wikipediafs など、すでにいくつかを使用している可能性があります。

FUSEインターフェースはあなたが説明したものより少し低レベルです(ファイルシステムはオープン、読み取り、書き込みなどを個別に処理する必要があります)が、Pythonからさまざまな言語へのバインディングがあります。バッシュそれらのほとんどには「hello world」の例があり、これを適応させて外部プログラムの出力をデータとして提供できます。

FUSE は現在、Linux、さまざまな BSD、macOS、Solaris などで動作します。

関連情報