web-dev-qa-db-ja.com

chmodの進行状況を監視する

現在、ファイルでいっぱいの4TBHDDの権限と所有権を変更しています。 chmodやchownなどのコマンドの進行状況を監視することも可能ですか?

3
Adan

実行中のプロセスにアタッチして、現在何をしているかを確認できます。これにより、それがどこにあるかがわかります。

strace -p1234

ここで、1234chmodプロセスのプロセスIDです。多くのシステムでは、root以外のユーザーが子プロセスのみを監視するように制限されているため、rootとしてこれを行う必要があることに注意してください。 アップグレード後、gdbはプロセスにアタッチされません を参照してください。

現在処理されているファイルを知ることは、すでに処理されているものを知る簡単な方法を提供しません。 chmodは、ファイルツリーを深さ優先でトラバースし、各ディレクトリをディレクトリ順にトラバースします(ls -Uの順序。これは、一般にlsの順序とは異なります。 )。

プロセスがすでに処理したファイルの数を知ることは素晴らしいことであり、それは少なくともプロセスが行ったシステムコールの数を知ることによって決定できますが、私が知る限り、Linuxはシステムの数を追跡しませんプロセスが行った呼び出し。

一般に、いいえ、プログラムの実行内容を示すフラグがないわけではなく、プロセスの起動時にフラグが指定されます。 (冗長にする場合は、必ずscreenまたはtmuxセッションに入れて、必要に応じて再接続できるようにしてください...)

一部のユーティリティ(例:dd)は、ユーザー信号を受け入れて冗長性を切り替えます(例:USR1シグナル、pkill -USR1 dd)しかし、それはアプリケーションによって異なります(USR1デフォルトでは、プロセスを強制終了するだけです。注意して使用してください)。

間接的な適応症は別の方法です。プロセスがそれを目立たせるのに十分なCPUまたはI/O負荷を生成すると仮定して、topを実行します(ネットワークの結果を待機するものはあまり機能していないように見える場合があります)。

プロセストレースも可能ですが、システムの速度が大幅に低下する可能性があります(例:strace)。このようなチェックのためのより安価なツールはdtraceまたは同様のものであり、サンプルを取得して、chmodが一定期間に行った関連システムコールの数に関する要約を報告できます。

1
thrig

pvコマンドをご覧ください。現在、このシステムにはありませんが、管流を監視するのに役立ちます。

私はあなたが次のようなことをしていると仮定しています:

find stuff -exec chmod 664 {} \;

パイプを使用してコマンドを分割し、pvまたはteeを挿入して、状況を監視することができます。

私は答えを料理本に載せなかったことに気づきましたが、おそらくこれらのアイデアが役立つでしょう。

0
mongo