Si j'ai une commande canalisée comme
cat myfile | processor_application
où application_processeur est quelque chose qui se lit à partir de la norme dans, en morceaux, pour traiter, est-il possible de voir jusqu'où le chat a parcouru le fichier?
Vous utilisez peut-être lsof?
Merci!
Réponses:
Vous pouvez utiliser pv pour ce faire, par exemple
pv file | processor_application
Lorsque pv passe, c'est stdin directement à sa sortie standard, vous n'avez pas besoin d'utiliser cat.
Modifier Comme votre programme est déjà en cours d'exécution, recherchez le PID du
cat
processus, puis examinez le contenu de/proc/<PID>/io
qui vous dira combien d'octets il a écrit - wchar.
la source
Absolument! Pipe Viewer fait exactement cela. Insérez-le simplement dans votre pipeline:
Vous pouvez optimiser loin
cat
dans l'exemple ci-dessus:Ce qui a l'avantage de fournir un indicateur de progression réel, car pv peut déterminer directement la taille de l'entrée. Si vous utilisez pv au milieu d'un pipeline, vous devez fournir la taille du fichier vous-même pour obtenir une progression précise:
Consultez le site Web pour plus d'options pour personnaliser pv.
la source
pv
quand il est disponible :-)pv
dans un pipeline en utilisantmkfifo
etgdb
(quatre appels système avec gdbp
).Si le processus est déjà en cours d'exécution, lsof a une
size/offset
colonne qui peut vous être utile - recherchez le PID du processus cat que vous souhaitez inspecter, puislsof -o -p [PID]
.Si le processus ne fonctionne pas encore,
pv
comme d'autres l'ont suggéré, c'est une bonne option (en supposant que votre système dispose de cet utilitaire).la source
-o
cela ne fonctionne pas sur votre système, je pense que vous êtes à peu près foutu en ce qui concerne l'utilisationlsof
: - / (Je suppose que vous exécutez lsof en tant qu'utilisateur qui a lancé lecat
processus, ou en tant que root?)