SEQuenceの進捗状況のモニタリング

SEQuenceの進捗状況のモニタリング

3日以上実行された次のスクリプトがあります。

seq -w 1 1000000 | while read i; do (./myscript.pl $i >> output.txt); done

シーケンスがどれくらい進んだのかわかりますか?

ベストアンサー1

要素ごとに異なるパラメータを使用してコマンドを呼び出すので、そのコマンドが現在どのパラメータを処理しているかを確認してください。

ps w -C myscript.pl

writeプロセスが実行しているシステムコールの数を確認して、おおよその値を取得できますseqpgrep seq(または他のコマンド、たとえばps uw -C seq複数のプロセスがあり、seq必要なプロセスを識別する必要がある場合)を使用してプロセスIDを見つけます。 PIDが1234あれば

grep syscw /proc/1234/io

プロセスの一部のIO統計を読んでください。/proc1. この値に1²を加え、getconf PIPE_BUF /4096を掛けて書き込んだバイト数を取得しますseq。これまでに書いたすべての数字の合計長さです。同じ幅の行を印刷しようとしているので、8で割ってこれまでに書かれた数字を取得します。

どのくらいの距離を移動したかを確認するseqより便利な方法は次のとおりです。システムコールの追跡strace。 Ubuntuでは、これを行うにはデフォルトでrootが必要です。

$ strace -p1234
strace: Process 1234 attached
write(1, "0008193\n0008194\n0008195\n0008196\n"..., 4096^Cstrace: Process 1234 detached

上記の例では、seq読み取り側で8192処理を完了し、より多くのデータを処理する準備が整ったら、8193がパイプに書き込まれる次の番号です。

1一般ファイルが記録されている場合、またははファイルのオフセット、つまり記録されたバイト数を表示します。ただし、パイプを使用するとこの情報を取得できません。seqcat /proc/1234/1/fdinfolsof -p1234seq
²実験によって決定されました。なぜ最初の書き込み操作が2回記録されるのかわかりませんPIPE_BUF

おすすめ記事