私は現在Pythonの関数を使用していますが、
os.walk('/')
OS X上のファイルシステム全体をループします。私の目的は、以下を追跡するパーソナルデーモンを作成することです。
- 新しく作成されたファイル/ディレクトリ
- 調整/修正されたファイル/ディレクトリ
- 削除されたファイル(多分)
アイデア
これは、Macに追加して、ディレクトリに奇妙なものが不要に配置されているかどうかを確認できるようにするための慎重な機能です。したがって、Macが(まだ不明な)トロイの木馬に感染した場合は、自分で検出できる可能性があります。 。また、何かがオフになっていることが検出されたときにインターネット接続などをシャットダウンするために、後で機能を追加することを検討しています。これはおそらく不合理な機能ですが、これは単なる個人的なスクリプトなので、それほど悪くはないと思います:P。
達成したいこと
だから私の主な質問はです。最初の実行後、ファイルシステム全体とそのメタデータ(作成データ、変更日)の配列を保存します。その後、デーモンを「監視」モードでバックグラウンドで実行し、ファイルシステムの最後に保存された既知の配列を新しくループした配列と実質的にミラーリングします。今の問題は、スクリプトを実行してテストすると、CPUが文字通り燃え始め、しばらくするとMacBookで問題が発生し始めることです。「os.walk()」がforループで作成する各ディレクトリステップの間にスリープを追加したいと思います。私の質問は:正しい睡眠時間とは何ですか?私のMacBookのディスクユーティリティには、183.867個のフォルダと1.013.320個のファイルがあり、合計1.197.187個のエントリが作成されていると表示されます(フォルダも実際にはファイルであるため)。したがって、コードを次のように設定します。
time.sleep(0.001)
..約2分で処理されるそれらの120万のエントリを約取るでしょう。これが良いかどうかはわかりません。ファイル/フォルダーの総数に基づいて、より動的に作成することを好みます。
追加機能 私の質問に基づいて、OSXディスクユーティリティがすでに私のファイルとフォルダの総数を知っていることに気づきました。Pythonは、極端なループスルーを行わずにこのデータも取得できますか?OS Xに組み込まれているターミナル関数を呼び出すかもしれません。このようにして、デーモンのステータスに小さなGUIを使用している場合は、インジケーターを保持することもできます。
前もって感謝します!