私はLinux初心者で、初心者はbashスクリプトで初心者です。私はホームディレクトリをバックアップし、進捗状況を示すbashスクリプトを書こうとしています。私はtar.bz2ファイルを収縮させたときに進捗バーを表示することができるbarというスクリプトを見つけましたが、作成するときには表示されません。私はあなたのコードを発見し、それをしようとしていますが、それは私にエラーを与える: lsofの:IDは4.81あなたが与えたプログレスバーコードは私にPIDについてのエラーを与えません
lsofを を指定せずにプロセス私は、このページからあなたのコードに行く:ここ How to add a progress bar to a shell script? はコードです:
#! /bin/bash tar -jcf userhomeBU$(date +%Y&m&d)".tar.bz2" /home/user lsof -o0 -o -p $PID | awk ' BEGIN { CONVFMT = "%.2f" } $4 ~ /^[0-9]+r$/ && $7 ~ /^0t/ { offset = substr($7, 3) fname = $9 "stat -f %z '\''" fname "'\''" | getline len = $0 print fname, offset/len * 100 "%" } '
私のホームディレクトリは正常にバックアップされていますが、エラーのために進捗バーが表示されません。
これは、PIDを使って完了したことを確認するように見えます。私はそれが名前をスクリプトの非常に初めに知られていないので、ファイルの名前ではなくPIDを使用していると思っています。このスクリプトが正確に何をしているのか、なぜそれを見るためのPIDが得られないのか説明してください。私はバックアップコードをフロントと最後に入れましたが、バーは表示されません。別の時に同じエラーが表示されます。
ヘルプ!
これは私に進歩を示さなかった。私が間違ったことを確信していない。 – Newbie
変更された答えが異なるアプローチを使用しました。 –
また、dateコマンドを実行するには、 '&m&d'の代わりに'%m%d'を使用しなければなりませんでした。 –