2010-11-21 21 views
-1

私は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が得られないのか説明してください。私はバックアップコードをフロントと最後に入れましたが、バーは表示されません。別の時に同じエラーが表示されます。

ヘルプ!

答えて

0

ここでは、元の投稿の他の回答のうちの1つの適応があります。私はそれをテストし、それは私のマシン上で動作します:

tar -Ocf - /home/user | pv -i 1 -w 50 -berps `du -bs /home/user | awk '{print $1}'` | bzip2 - > userhomeBU$(date +%Y%m%d)".tar.bz2" 
+0

これは私に進歩を示さなかった。私が間違ったことを確信していない。 – Newbie

+0

変更された答えが異なるアプローチを使用しました。 –

+0

また、dateコマンドを実行するには、 '&m&d'の代わりに'%m%d'を使用しなければなりませんでした。 –

0

はpidofする変数を渡し、変数に全体のtarコマンドを割り当ててみてください

... 
TAR_CMD='tar -jcf userhomeBU$(date +%Y&m&d)".tar.bz2" /home/user' 
lsof -o0 -o -p `pidof -s $TAR_CMD` | \ 
awk ... 
+0

これは 'tar'プロセスが1つしかないことを前提としています。他のものがあれば、 'pidof'は2ピッドで返されます。 –

+0

「不正なプロセスID:pidof -s $ STAR_CMD」 – Newbie

+0

tarのcmdをvarに割り当てると、実際にcmdを実行するにはどのようにvarを使ってcmdを呼び出すのですか? – Newbie

0

それは非常に大きなホームディレクトリではなく、私はそれにいくつかの大きなファイルがあります。いくつかのisoのためにバックアップに約45秒かかり、それはVM内にあります。また、バックアップファイルが作成されていないため、動作していないことがわかります。スクリプトには&はありません。私がそれを実行すると、次の出力が得られます。

[1] stopped  tar -Ocf - /home/user | pv -i 1 -w 50 -berps 'du -bs /home/user | awk '{print $1}'' | bzip2 - > userBU(date +%Y%m%d)".tar.bz2"
これは私のコードのコピーです。 []内の数字は、実行ごとに1ずつ上がります。コードの最初の '最後の'は実際にはティルダの下の単一のものですが、このポストでは表示されませんでした。

関連する問題