Saya perlu mengintegrasikan progress bar untuk operasi di server jauh melalui SSH.
Dalam situasi saya ada beberapa loop yang memicu proses pada beberapa server jauh melalui SSH. Proses-proses ini dipicu dengan certainFunction
dan memakan waktu antara 10 hingga 60 menit (tergantung pada banyak hal yang tidak terduga). Sejauh proses dikendalikan dari server utama, saya ingin menampilkan beberapa progress bar berdasarkan waktu, seperti persentase atau bar (BUKAN titik atau pemintal), yang akan menunjukkan kemajuan secara keseluruhan.
Apakah ini mungkin?
Mencari beberapa solusi boros, saya menemukan proyek Édouard Lopezprogress-bar.sh
cocok untuk kebutuhan saya.
Ini adalah kode untuk progress-bar.sh
:
progress-bar() {
local duration=${1}
already_done() { for ((done=0; done<$elapsed; done++)); do printf "▇"; done }
remaining() { for ((remain=$elapsed; remain<$duration; remain++)); do printf " "; done }
percentage() { printf "| %s%%" $(( (($elapsed)*100)/($duration)*100/100 )); }
clean_line() { printf "\r"; }
for (( elapsed=1; elapsed<=$duration; elapsed++ )); do
already_done; remaining; percentage
sleep 1
clean_line
done
clean_line
}
Bisakah itu digunakan untuk situasi saya? Saya mencari solusi Bash murni tanpa paket tambahan yang diinstal.
$duration
; terutama ketika ada banyak hal yang tidak terduga. Mungkin indikator kemajuan terbaik yang dapat Anda miliki adalah seperti "N tugas M selesai".progress-bar ${#arrayOfIPaddresses[@]}
dan alih-alihsleep
perintah, jalankan kode Anda yang sebenarnyaJawaban:
Menulis progress bar itu mudah; itu bukan masalahmu. Anda bisa menggunakannya
atau semacam itu
Masalah utama adalah menentukan apa kemajuan Anda. Jika Anda mencoba melakukannya berdasarkan waktu, Anda pasti akan mendapatkan perasaan keliru tentang kemajuan, karena prosesnya (saya kutip): memakan waktu antara 10 hingga 60 menit (tergantung pada banyak hal yang tidak dapat diprediksi).
Jika hanya berdasarkan waktu, Anda dapat menggunakan:
Tetapi jika Anda tidak memiliki ukuran bagaimana proses mengalami kemajuan, dan Anda tidak mampu memberikan estimasi realistis dari kemajuan yang sebenarnya, tidak ada gunanya menyediakan progress bar. Widget jam window manager favorit Anda akan menyediakan sebanyak mungkin informasi yang relevan.
sumber