Bunları filtrelemek ve dönüştürmek için çok sayıda programa aktarmam gereken çok sayıda büyük dosyam (her biri yüzlerce MB) var. Birden fazla CPU çekirdeğinden faydalanıyorum, böylece her dosyada aynı borunun birkaç örneğini çalıştırıyorum (yüz çekirdeğe kadar olabilir ve ssh'yi borunun bir parçası olarak kullanabiliriz; Cevap). Her boruyu izlemek istiyorum ve bunun için kullanıyorum pv
. İşte sahip olduklarımın minimal bir örneği:
$ pv file-001.gz | gunzip | xz > file-001.xz
1.58GB 0:00:02 [ 713MB/s] [=================================>] 100%
Gerçekte, ssh üzerinden diğer makinelere veri aktarmak ve bu makinelerdeki filtreler aracılığıyla borulamak dahil olmak üzere boruda başka birçok şey de yapıyorum, ancak boru her zaman ana bilgisayardaki yeni bir dosyaya yeniden yönlendirmeyle sonuçlanacaktı. Ayrıca, borudaki hiçbir aşama tüm veri setini gerektirmez; satır satır veya öbek bazında çalışabilirler.
Şu anda borunun her bir örneği için ayrı bir terminal penceresine ihtiyacım var. Tek yapmak istediğim tek bir uçbirim / kabuktaki borunun paralel örneklerini başlatmak ve her bir pv örneğindeki çıktısını kendi hattında almak. Bunun gibi bir şey:
1.48GB 0:00:54 [ 704MB/s] [===============================> ] 97% ETA 00:00:06
1.58GB 0:01:00 [ 713MB/s] [=================================>] 100%
0.75GB 0:00:31 [ 709MB/s] [================> ] 50% ETA 00:00:29
N'nin değeri, bir terminal penceresine sığabileceğim satır sayısıdır, örneğin 3-50. İlerleme raporunun tam biçimi, hız, yapılan yüzde, geçen süre ve tahmini kalan süreyi kapsadığı sürece önemli değildir. Benim kullanmam da önemli değil pv
, başka bir programı kolayca kurabildiğim sürece ya da sadece düz bir kabuk (bash, tercihen) kullanabildiğimde sorun değil. Yine de önemli olan, bir nedenden dolayı borunun bir kısmının çarpması durumunda yöntemin ara sıra kesilmiş olan boruyu idare edebilmesidir. Her iş bittiğinde (başarılı ya da değil) yeni işlere başlamak istiyorum ve hala işlenmemiş dosyalar kalıyor.
Bunun nasıl yapılacağı hakkında bir fikriniz var mı?
GNU Parallel'i zaten denediğimi unutmayın , ancak ssh özellikleri, her bir giriş dosyasının önce uzak ana bilgisayara aktarıldığını, sonra işlendiğini, ardından sonucun geri aktarıldığını, söz konusu veri miktarı nedeniyle kaçınmak istediğimi varsaydığını gösteriyor. ve her işlem düğümü üzerindeki sınırlı miktarda alan.