Jika saya memiliki perintah pipa seperti
cat myfile | processor_application
di mana processor_application adalah sesuatu yang membaca dari standar di, di chunks, untuk diproses, apakah mungkin untuk melihat seberapa jauh file yang didapat kucing?
Mungkin menggunakan lsof?
Terima kasih!
Jawaban:
Anda dapat menggunakan pv untuk melakukan ini, mis
pv file | processor_application
Saat pv melewatinya stdin langsung ke stdout Anda tidak perlu menggunakan kucing.
Sunting Karena program Anda sudah berjalan, cari PID dari
cat
proses dan kemudian lihat isi/proc/<PID>/io
yang akan memberi tahu Anda berapa banyak byte yang telah ditulis - wchar.
sumber
Benar! Pipe Viewer benar-benar melakukannya. Masukkan saja ke dalam pipeline Anda:
Anda dapat mengoptimalkan
cat
dalam contoh di atas:Yang memiliki keunggulan memberikan indikator kemajuan yang sebenarnya, karena pv dapat menentukan ukuran input secara langsung. Jika Anda menggunakan pv di tengah-tengah pipa, Anda harus menyediakan ukuran file sendiri untuk mendapatkan kemajuan yang akurat:
Periksa situs web untuk opsi lebih lanjut untuk menyesuaikan pv.
sumber
pv
ketika tersedia :-)pv
ke dalam pipa dengan menggunakanmkfifo
dangdb
(empat syscall dengan gdb'sp
).Jika proses sudah berjalan, lsof memiliki
size/offset
kolom yang mungkin dapat membantu Anda - cari PID proses kucing yang ingin Anda periksa lalulsof -o -p [PID]
.Jika prosesnya belum berjalan,
pv
seperti yang disarankan orang lain adalah pilihan yang baik (dengan asumsi sistem Anda memiliki utilitas itu).sumber
-o
tidak bekerja pada sistem Anda, saya pikir Anda cukup kacau sehubungan dengan menggunakanlsof
: - / (Saya menganggap Anda menjalankan lsof sebagai pengguna yang meluncurkancat
proses, atau sebagai root?)