pvは小さなバッファで100%進行を提供します。

pvは小さなバッファで100%進行を提供します。

フォルダ内の各ファイルに対して長い操作(画像形式変換)を実行する必要があります。以下を使用して、pv予想期間(sleepここでは処理時間をシミュレートするために使用されます)作成を実装しました。

pv -B 1 =(find . -iwholename '*.png') | xargs -l sh -c 'sleep 0.1'

内部バッファがあって推定を台無しにすることもできると思われたが、ファイルリスト自体がそれほど大きくなく(数十KB)のように内部バッファがあってもよいのでpvバッファを1バイト-B 1。これによりパフォーマンスの問題が発生する可能性があるかどうか疑問に思います(ディスクは読み取りごとに少なくとも512バイトしか読み取れず、511バイトを削除できるため)。=()使用によってメモリに常駐できるかどうかは不明です。私は-B 1これが悪い解決策だと思います。

しかし、もっと重要なのは、他人の価値観とは異なる奇妙な行動があるということだ-B。たとえば、

pv =(yes | head -n 100) -B 1 | xargs -l sh -c 'sleep 1'

期待どおりに動作します(たとえ奇妙に起動し、17%数秒後にレンダリングが開始されますが)。

pv =(yes | head -n 100) -B 10 | xargs -l sh -c 'sleep 1'

100%処理に100秒かかると思いましたが、すぐに印刷され、間隔で更新され5%、200バイト、x100文字y、そして\n...なぜ?

ノート=()必要zsh。試してみましたが、<()進行状況バーは機能しません。pvFIFOサイズは推定できませんが、ファイルで推定できますか?

ベストアンサー1

多数のファイルを画像形式に変換するには、変換されたpvファイルの数を計算できます。一部のファイルは他のファイルよりも時間がかかるため、完璧ではありませんが、合理的な見積もりを提供します。

まず、次のコマンドと同様に、ファイルの総数を計算します(今年6月の私の写真)。

$ find 2022/06 \( -name '*.jpg' -or -name '*.png' \)|wc -l
55

pv -l -s55次に、行数を計算できるコマンドラインを作成します。変換プロセスで出力が生成されない場合は、echoステートメントを追加できます(feh図を表示しますが、呼び出し側のターミナルウィンドウに出力を生成しないため、echoは改行のみを印刷します)。

$ find 2022/06 -type f -exec bash -c "feh -r -g 1000x1000 --zoom max {} & sleep .5; pkill feh ;sleep .5;echo ''" \; | pv -l -s55 > /dev/null
22,0  0:00:23 [ 978m/s] [==============>                       ] 40% ETA 0:00:34

または、出力スクロールを表示するには、出力をリダイレクトしないでください。

$ find 2022/06 -type f -exec bash -c "feh -r -g 1000x1000 --zoom max {} & sleep .5; pkill feh ;sleep .5;echo ''" \; | pv -l -s55
0,00  0:00:01 [0,00 /s] [>                                     ]  0% ETA 0:00:00
1,00  0:00:02 [1,01 /s] [>                                     ]  1% ETA 0:01:48
2,00  0:00:03 [ 984m/s] [>                                     ]  3% ETA 0:01:19
3,00  0:00:04 [ 978m/s] [>                                     ]  5% ETA 0:01:09
4,00  0:00:05 [ 983m/s] [=>                                    ]  7% ETA 0:01:03
5,00  0:00:06 [ 984m/s] [==>                                   ]  9% ETA 0:01:00
6,00  0:00:07 [1,08 /s] [==>                                   ] 10% ETA 0:00:57
7,00  0:00:08 [ 980m/s] [===>                                  ] 12% ETA 0:00:54
8,00  0:00:09 [ 980m/s] [====>                                 ] 14% ETA 0:00:52
9,00  0:00:10 [ 979m/s] [=====>                                ] 16% ETA 0:00:51
10,0  0:00:11 [ 983m/s] [=====>                                ] 18% ETA 0:00:49
11,0  0:00:12 [1,08 /s] [======>                               ] 20% ETA 0:00:48
12,0  0:00:13 [ 982m/s] [======>                               ] 21% ETA 0:00:46
13,0  0:00:14 [ 982m/s] [=======>                              ] 23% ETA 0:00:45
14,0  0:00:15 [ 981m/s] [========>                             ] 25% ETA 0:00:43
15,0  0:00:16 [ 986m/s] [=========>                            ] 27% ETA 0:00:42
16,0  0:00:17 [1,08 /s] [==========>                           ] 29% ETA 0:00:41
17,0  0:00:18 [ 983m/s] [==========>                           ] 30% ETA 0:00:40
18,0  0:00:19 [ 984m/s] [===========>                          ] 32% ETA 0:00:39
19,0  0:00:20 [ 982m/s] [===========>                          ] 34% ETA 0:00:37
20,0  0:00:21 [ 981m/s] [============>                         ] 36% ETA 0:00:36
21,0  0:00:22 [1,08 /s] [=============>                        ] 38% ETA 0:00:35
22,0  0:00:23 [ 985m/s] [==============>                       ] 40% ETA 0:00:34
23,0  0:00:24 [ 983m/s] [==============>                       ] 41% ETA 0:00:33
24,0  0:00:25 [ 981m/s] [===============>                      ] 43% ETA 0:00:32
25,0  0:00:26 [ 986m/s] [================>                     ] 45% ETA 0:00:31
26,0  0:00:27 [ 985m/s] [================>                     ] 47% ETA 0:00:30
27,0  0:00:28 [1,08 /s] [=================>                    ] 49% ETA 0:00:29
28,0  0:00:29 [ 983m/s] [==================>                   ] 50% ETA 0:00:27
29,0  0:00:30 [ 983m/s] [==================>                   ] 52% ETA 0:00:26
30,0  0:00:31 [ 983m/s] [===================>                  ] 54% ETA 0:00:25
31,0  0:00:32 [ 979m/s] [====================>                 ] 56% ETA 0:00:24
32,0  0:00:33 [1,08 /s] [=====================>                ] 58% ETA 0:00:23
33,0  0:00:34 [ 982m/s] [=====================>                ] 60% ETA 0:00:22
34,0  0:00:35 [ 981m/s] [======================>               ] 61% ETA 0:00:21
35,0  0:00:36 [ 980m/s] [======================>               ] 63% ETA 0:00:20
36,0  0:00:37 [ 983m/s] [=======================>              ] 65% ETA 0:00:19
37,0  0:00:38 [1,08 /s] [========================>             ] 67% ETA 0:00:18
38,0  0:00:39 [ 984m/s] [=========================>            ] 69% ETA 0:00:17
39,0  0:00:40 [ 983m/s] [=========================>            ] 70% ETA 0:00:16
40,0  0:00:41 [ 978m/s] [==========================>           ] 72% ETA 0:00:15
41,0  0:00:42 [ 979m/s] [===========================>          ] 74% ETA 0:00:14
42,0  0:00:43 [1,08 /s] [===========================>          ] 76% ETA 0:00:13
43,0  0:00:44 [ 981m/s] [============================>         ] 78% ETA 0:00:12
44,0  0:00:45 [ 981m/s] [=============================>        ] 80% ETA 0:00:11
45,0  0:00:46 [ 985m/s] [=============================>        ] 81% ETA 0:00:10
46,0  0:00:47 [ 983m/s] [==============================>       ] 83% ETA 0:00:09
47,0  0:00:48 [1,08 /s] [===============================>      ] 85% ETA 0:00:08
48,0  0:00:49 [ 983m/s] [================================>     ] 87% ETA 0:00:07
49,0  0:00:50 [ 981m/s] [================================>     ] 89% ETA 0:00:06
50,0  0:00:51 [ 986m/s] [=================================>    ] 90% ETA 0:00:05
51,0  0:00:52 [ 981m/s] [=================================>    ] 92% ETA 0:00:04
52,0  0:00:53 [1,08 /s] [==================================>   ] 94% ETA 0:00:03
53,0  0:00:54 [ 982m/s] [===================================>  ] 96% ETA 0:00:02
54,0  0:00:55 [ 984m/s] [====================================> ] 98% ETA 0:00:01
55,0  0:00:55 [ 982m/s] [====================================>] 100%            

おすすめ記事