私は現在、多くのシステムおよびプロセス情報を必要とするアプリケーションを開発しています。そのうちのいくつかは/ procからのみ入手可能であり、構造へのアクセスについていくつかの一般的な質問があります。
アプリケーションはLinux(カーネル> = 2.6)で実行され、他のUnixフレーバーのOSでは実行されません。/ proc内のすべてのデータにアクセスできるはずです。仕様がまだ明確ではないため、今何が必要かはわかりませんが、/procディレクトリ全体がアプリケーションに関連しています。
まず第一に:カーネルバージョンからカーネルバージョンに追加/削除されたすべての機能をカバーする優れたドキュメントはありますか?特に気になるのは、個々のファイルのフォーマットです。それを当然のことと思ってもいいですか?カーネルバージョン間で変更されますか?
カーネルに基づいて解析プロセスを接続することはまったく問題ではありません。バージョンごとに何が変更されたかについての適切なドキュメントが見つからなかっただけで、事前に解析エラーを見つけるのに役立ちます。
さらに:カーネルオプションによってアクティブ化/非アクティブ化できる機能の明確なリストはありますか(もちろん/ proc-feature自体を除く)?カーネルに適切なオプションが設定されている場合にのみ存在するファイル/ディレクトリのリストを探しています。
私が考えていることの例として、これはprocのマンページ(http://linux.die.net/man/5/proc)へのリンクであり、多くの優れた情報が含まれています。たとえば、いくつかのオプションには最も古いものが含まれています。それらが利用可能だったカーネルバージョン。モジュールをロードする必要があるかどうかを含むものもあります。ただし、これはすべての情報の出力形式を説明しているわけではありません。これは、解析する場合に必要なものです(たとえば、すべてのカーネルバージョンで一貫している場合や、ある時点で変更されている場合)。
私が疑問に思っている2番目のことは、照会されたプロセスが照会されている間に終了した場合にどうなるかということです。私の時間間隔はどれくらいですか?たとえば、すべての構造を読み取るプロセスのリストをフェッチし、それらを次々に解析する場合、プロセスxが読み取れる前に停止するとどうなりますか?ディレクトリが存在するかどうかを確認しても、後で1回のアプリケーション呼び出しでディレクトリが失われる可能性があります。
最後になりましたが、procをマウントしていない主要なディストリビューションはありますか?
lsmod
私が理解していることから、多くの一般的なツールはやなどの/ procインターフェースに基づいているfree
ので、/procはほとんど常に存在することが期待できると思います。