Bir dosyanın aktif bir işlem tarafından ne kadarının okunduğunu nasıl görebilirim?


3

Genellikle bir uygulamanın büyük bir dosyadan (> 2GB) okuduğu ve her kayıtta işlem yaptığı uzun süredir çalışan bir işim var.

Sürecin ne kadar derin olabileceğini görmek için kullanabileceğim bir UNIX komutu var mı? Uygulama, giriş dosyasına yalnızca bir dosya tanıtıcısına sahip olacaktır.

Yanıtlar:



2

Lsof'un "ofset" inin dosyadaki geçerli dosya tanıtıcı okuma konumunu söyleyip söylemediğini her zaman merak etmişimdir ancak belgeler bunu açıkça ifade etmiyor ve varsayımlarımı sınamak ya da doğrulamak için hiç sıkılmıyorum. http://www.netadmintools.com/html/lsof.man.html

Uzun süren işlemleri yazarken ya bir günlük dosyasına bilgi yazmalarına izin verme eğilimindeyim ya da periyodik olarak (örneğin tail -f) 'e bakabilirim ya da periyodik olarak ilerlemeyi rapor etmelerini sağlarım (örneğin saniyede bir kez kayıt sayısını rapor etmesini sağlayan bir -v seçeneği). ).


0

Bu program / STDIN / STDOUT borularını kabul ediyor mu? Eğer öyleyse, şansın yaver gidiyor. Md5sum'la büyük bir dosya göstereceğim:

$ pv 2GB.zero | md5sum -
1.56GB 0:00:31 [60.2MB/s] [===============================>         ] 80% ETA 0:00:07
f3444be3893c1b9b6fa9dd1acde671a9  -

pv "{dosyaadı}" dosyayı okuyacak, bir boruyu destekleyen herhangi bir yere bağlayacaktır. Ayrıca yapabilir cat "{filename}"|pv| md5sum - ancak pv dosyanın kaç bayt olduğunu bilmeyecek, böylece sadece ne kadar hızlı gittiğini bilecek, şimdi ne kadar kaldı.

İmkanlar sonsuzdur. Ne zaman bir boru kullanıyorsanız veya bir dosyaya yönlendiriyorsanız, verinin borudan ne kadar hızlı geçtiğini anlatmak için boru hattına pv ekleyin! :)

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.