Estou procurando por algo que suspeito que não exista: Um pipe nomeado em buffer sem bloqueio (fifo) para uso na linha de comando. Existe uma coisa dessas?
Aqui está o caso de uso: Suponha que eu tenha um processo que demore muito tempo em segundo plano e forneça muita saída para stdout
. Eu realmente não me importo com a saída e não quero armazená-la (talvez não tenha espaço suficiente para isso), mas gostaria de "aparecer" periodicamente e seguir o que está fazendo, depois desistir novamente e deixe-o fazer o seu trabalho. Então, eu gostaria de redirecionar sua saída para esse pipe nomeado, com buffer e sem bloqueio teórico, e depois usá-lo periodicamente.
Então, basicamente, eu quero começar assim ( 10M
sendo o tamanho do buffer):
mkmagicfifo magicfifo 10M
spewingprocess > magicfifo &
... e periodicamente aparecer para ver o que está acontecendo ...
tail -f magicfifo
... sem magicfifo
armazenar toda a saída (portanto, não é um arquivo normal) e sem bloquear o processo de vomitar quando é preenchido e não é aproveitado (portanto, não é um pipe nomeado normal).
Não acho que as soluções envolvam tail
ou prune
o façam (bem, consigo pensar em uma solução alternativa tail
), porque tail
ainda exigiria que eu armazenasse todos os dados em algum lugar (se eu quiser entrar e sair de olhar para eles), e prune
tem que reescrever o arquivo, presumivelmente (admito que não tentei / provei isso) interrompendo o redirecionamento do processo gerando toda a saída.
Eu espero que eu possa escrever algum utilitário para fazer isso, mas o * nix tem tantos aspectos interessantes de arquivos e pipes e outros, eu simplesmente não posso deixar de pensar que isso existe e simplesmente não sei sobre isso.
Então: existe tal coisa e, em caso afirmativo, o que é?