これは学術目的のためです。 GUIで特定のタスク(フォルダ作成など)を実行するときにどのコマンドが実行されるかを知りたいです。私はGUIのmkdir
シェルコマンドとオプションの両方が同じことをすることを示したいと思います。create folder
ベストアンサー1
プロセスが実行される操作を観察できます。ストレス注文する。ストレスショーシステムコールプロセスによって実行されます。その環境のプロセスに影響を与えるすべての操作は、システムコールを介して実行されます。たとえば、ディレクトリの作成は最終呼び出しでのみ実行できます。mkdir
システムコール。これmkdir
シェルコマンド同じ名前のシステムコールを囲む薄いラッパーです。
mkdir
何が起こっているのかを確認するには、次の手順を実行します。
strace mkdir foo
mkdir
(私のシステムで正常に実行された合計76)他の多くの呼び出しを見ることができますmkdir
。execve
プロセスバイナリイメージをロードし、プログラムが使用するライブラリとデータファイルをロードするために呼び出し、メモリを割り当てるために呼び出し、システム状態を観察するために呼び出し、最後にコマンドを呼び出し、次に終了しますmkdir
。exit_group
。
GUIプログラムが何をしているのかを観察するには、そのプログラムを起動して作業中にのみ観察してください。 (ps x
またはhtop
他のプロセスビューアを使用して)プログラムのプロセスIDを見つけて実行します。
strace -o file_manager.mkdir.strace -p1234
これにより、プロセス1234のトレースがファイルに保存されますfile_manager.mkdir.strace
。プログラムを停止せずにCtrl+C停止を押します。strace
ディレクトリ名の入力などの操作には、数千または数万のシステムコールを含めることができます。マウスの移動、フォーカスの変更などを処理することは、ディレクトリを作成するよりもこのレベルではるかに複雑です。
strace
optionsを渡して、出力に書き込まれるシステムコールを選択できます-e
。たとえばread
、、write
およびselect
:を省略します。
strace -e \!read,write,select …
通話のみ録音mkdir
:
strace -e mkdir …
まあ、ほとんどすべてです。共有メモリには、初期設定のためのシステムコールのみが含まれます。