Ben dosya senkronizasyonu sırasında güzel görünümlü bir ilerleme çubuğu alabilirsiniz, böylece "diyalog --gauge" komutuna beslenebilir bir şekilde rsync çıktı filtre / yönlendirme bir yol arıyorum. Şu anda sadece doğrudan bilgi isteminde test ettim, ama bunu bir (bash) kabuk betiğinde yapmayı planlıyorum.
İnternete baktım ve parçalar ve parçalar buldum, ama hala çalışmasını sağlayacak bir şey eksik
(Feragatname: Bu tamamen yanlış bir yaklaşım olabilir ve bir yönlendirme / borulama canavarlığıdır)
Şu anda ne bir araya getirdim:
rsync -avz --progress -e "ssh" user@server:/home/user/data/ /home/user/data | awk -f /home/user/rsync.awk | sed 's/\([0-9]*\).*/\1/' | dialog --title "My Gauge" --gauge "Hi, this is a gauge widget" 20 70
İlk olarak --progress seçeneği ile gerçek rsync komutu var rsync çıktı awk içine borulu ve followng awk filtre kullanır:
{
if (index($0, "to-check=") > 0)
{
split($0, pieces, "to-check=")
split(pieces[2], term, ")");
split(term[1], division, "/");
print (1-(division[1]/division[2]))*100
}
# else
# {
# print "#"$0;
# }
fflush();
}
Bu, rsync çıktısını filtreler ve yüzdeyi aşağıdaki biçimde sağlar:
53.7037
55.5556
57.4074
59.2593
61.1111
62.963
Ondalık sayılardan kurtulmak için çıktıyı sed'e besliyorum:
sed 's/\([0-9]*\).*/\1/'
Hangi aşağıdaki çıktıyı verir:
64
66
68
70
72
74
75
77
Bu sayılar aşağıdaki gibi iletişim kutusuna eklenir:
dialog --title "My Gauge" --gauge "Hi, this is a gauge widget" 20 70
Bildiğim kadarıyla, "dialog --gauge" vb. Bunu kabul etmeli, ancak aniden% 100'e ulaşıncaya kadar ilerlemeyi% 0 olarak gösteriyor
Birisi beni burada doğru yöne yönlendirebilir mi? Çalışan bir ilerleme çubuğundan uzak mıyım? Bunu başarmanın daha iyi bir yolu var mı?
Saygılarımızla,
Christer
EDIT : @lynxlynxlynx 'cevabını dikkate aldıktan sonra, doğru komut satırı:
rsync -avz --progress -e "ssh" user@server:/home/user/data/ /home/user/data \
| awk -f /home/user/rsync.awk \
| sed --unbuffered 's/([0-9]*).*/\1/' \
| dialog --title "My Gauge" --gauge "Hi, this is a gauge widget" 20 70