コマンドで開いたファイルを一覧表示しますか? lsofが遅すぎる

コマンドで開いたファイルを一覧表示しますか? lsofが遅すぎる

実行時にAが開いたすべてのファイルを一覧表示する特定のコマンドA「内部」を実行できるユーティリティはありますか?

一部のパスワード要件を変更するためにユーティリティ(A)を実行しましたが、問題が発生しました。そのため、変更されたファイルを手動で開いて内容を見る必要があります。コマンドは約1秒で完了しますが、これはlsof目的と比較して遅すぎます。

答え1

これを達成する1つの方法は、プログラムで実行されたシステムコールを追跡し、フィルタopen/openatシステムコールまたは名前ルックアップを実行することです。

最初の2つのツールはそれぞれtrussAT&T Unix System 5とktrace4.4BSDにあります。 (後者のペアは、機械が読める出力を人間が読める形式にktrace変換しますkdump。)数十年後の発明は、DTraceフレームワークでした。

いくつかのコマンドの実行を追跡するには、次の手順を実行しますwibble

  • Illumosおよび関連オペレーティングシステムでは、このユーティリティはtrussSunOS から継承されます。例えば
    truss -o truss.out -t オープン、オープンスイング
  • OpenBSDでは、このユーティリティはktrace4.4BSDから始めて、kdump。例えば
    ktrace -tnスイング
  • たとえば、MacOSでは、このユーティリティはですdtruss
    dtruss -t スイングオン
  • Linuxベースのオペレーティングシステムでは、このユーティリティはstrace。例えば
    strace -o strace.out -e を開く、Wibble を開く
  • FreeBSDとその派生オペレーティングシステムには以下が含まれます。
    • AT&Tクローンtrussしかし、-t生のオプションが不足しています。つまり、一般的なテキスト処理ツールを使用してコンテンツを後処理する必要があります。
    • これktrace(追加するkdump)4.4BSDからサポートしています-t n

FreeBSD、Illumos、およびその派生物もdtraceDTraceフレームワークの一部として含まれていますが、ここでは特定の目的と比較して過剰です。 MacOSはdtruss実際にはDTraceフレームワークに基づいて構築されているため、ここに記載されている他のツールにはない欠点であるスーパーユーザー権限が必要です。

関連情報