Conteúdo de arquivo dinâmico ou virtual, semelhante a /sys/*

Conteúdo de arquivo dinâmico ou virtual, semelhante a /sys/*

Imagine que você queria um arquivo - por exemplo /etc/hosts - mas toda vez que o arquivo era lido, em vez de lê-lo no sistema de arquivos, seu conteúdo era a saída de um aplicativo - por exemplo, um script que executa a configuração nos sites do Apache- habilitado

Eu sinto que isso deveria ser possível, por exemplo, o código do kernel gera praticamente tudo em /syse /proc, que acredito ser montado como sistemas de arquivos virtuais. Já existe algum tipo de sobreposição de sistema de arquivos virtual de espaço de usuário de uso geral que me permitiria delegar um script ou binário como a saída que deve ser mostrada sempre que um arquivo é lido, ou esse caso de uso simplesmente não aparece com muita frequência?

(Imagino que seu uso indevido possa desacelerar consideravelmente o sistema, e provavelmente existem maneiras melhores - no caso acima, uma tarefa cron executada a cada 10 minutos seria preferível - mas estou curioso para saber se é algo que já foi encontrado antes e tentado )

Responder1

Sim, é chamadoFUSÍVEL. O kernel permite que sistemas de arquivos completos sejam implementados no espaço do usuário e você já deve ter usado alguns deles: sshfs, curlftpfs, ntfs-3g, archivefs, wikipediafs...

A interface FUSE é um pouco mais de baixo nível do que você descreve (o sistema de arquivos ainda precisa lidar individualmente com aberturas, leituras, gravações...), mas possui ligações para várias linguagens, de Python afesta. A maioria deles tem um exemplo de "olá mundo" que pode ser adaptado para fornecer a saída de um programa externo como dados.

FUSE atualmente funciona em Linux, vários BSDs, macOS, Solaris...

informação relacionada