GUIでタスクを実行するときにどのコマンドが実行されたかをどうやって知ることができますか?

GUIでタスクを実行するときにどのコマンドが実行されたかをどうやって知ることができますか?

これは学術目的のためです。 GUIで特定のタスク(フォルダ作成など)を実行するときにどのコマンドが実行されるかを知りたいです。私はGUIのmkdirシェルコマンドとオプションの両方が同じことをすることを示したいと思います。create folder

ベストアンサー1

プロセスが実行される操作を観察できます。ストレス注文する。ストレスショーシステムコールプロセスによって実行されます。その環境のプロセスに影響を与えるすべての操作は、システムコールを介して実行されます。たとえば、ディレクトリの作成は最終呼び出しでのみ実行できます。mkdirシステムコール。これmkdirシェルコマンド同じ名前のシステムコールを囲む薄いラッパーです。

mkdir何が起こっているのかを確認するには、次の手順を実行します。

strace mkdir foo

mkdir(私のシステムで正常に実行された合計76)他の多くの呼び出しを見ることができますmkdirexecveプロセスバイナリイメージをロードし、プログラムが使用するライブラリとデータファイルをロードするために呼び出し、メモリを割り当てるために呼び出し、システム状態を観察するために呼び出し、最後にコマンドを呼び出し、次に終了しますmkdirexit_group

GUIプログラムが何をしているのかを観察するには、そのプログラムを起動して作業中にのみ観察してください。 (ps xまたはhtop他のプロセスビューアを使用して)プログラムのプロセスIDを見つけて実行します。

strace -o file_manager.mkdir.strace -p1234

これにより、プロセス1234のトレースがファイルに保存されますfile_manager.mkdir.strace。プログラムを停止せずにCtrl+C停止を押します。straceディレクトリ名の入力などの操作には、数千または数万のシステムコールを含めることができます。マウスの移動、フォーカスの変更などを処理することは、ディレクトリを作成するよりもこのレベルではるかに複雑です。

straceoptionsを渡して、出力に書き込まれるシステムコールを選択できます-e。たとえばread、、writeおよびselect:を省略します。

strace -e \!read,write,select …

通話のみ録音mkdir:

strace -e mkdir …

まあ、ほとんどすべてです。共有メモリには、初期設定のためのシステムコールのみが含まれます。

おすすめ記事