Se eu tiver um comando canalizado, como
cat myfile | processor_application
onde application_do_processador é algo que lê do padrão em, em pedaços, para processar, é possível ver até que ponto o arquivo cat chegou?
Possivelmente usando lsof?
Obrigado!
Respostas:
Você pode usar o pv para fazer isso, por exemplo
pv file | processor_application
Quando o pv passa, é stdin diretamente para o stdout, e você não precisa usar o cat.
Editar Como seu programa já está sendo executado, localize o PID do
cat
processo e verifique o conteúdo de/proc/<PID>/io
que lhe dirá quantos bytes ele escreveu - wchar.
fonte
Absolutamente! Tubulação Visualizador faz exactlty isso. Basta inseri-lo no seu pipeline:
Você pode otimizar
cat
o exemplo acima:Qual tem a vantagem de fornecer um indicador de progresso real, já que o pv pode determinar diretamente o tamanho da entrada. Se você usar o PV no meio de um pipeline, precisará fornecer o tamanho do arquivo para obter um progresso preciso:
Verifique o site para mais opções para personalizar o pv.
fonte
pv
quando está disponível :-)pv
um pipeline usandomkfifo
egdb
(quatro syscalls com gdb'sp
).Se o processo já estiver em execução, lsof possui uma
size/offset
coluna que pode ser útil para você - encontre o PID do processo do gato que deseja inspecionar e, em seguidalsof -o -p [PID]
.Se o processo ainda não estiver em execução,
pv
como sugerido por outros, é uma boa opção (supondo que seu sistema tenha esse utilitário).fonte
-o
não funciona em seu sistema Eu acho que você está muito bem parafusado no que diz respeito ao uso delsof
: - / (eu suponho que você está correndo lsof como o usuário que lançou ocat
processo, ou como root?)