Linuxカーネルから見た「コマンド名」
ARANK

はじめにLinuxを使っているみなさんは普段からLinux上で様々なコマンドを実行していると思います。それらを識別するときに「コマンド名」という単語を使っていると思いますが、文脈によってこの単語が意味するものは異なります。本記事ではLinuxカーネルがいうところのコマンド名がどういうものかについて書きます。一番最初に短い結論、その次に具体的な説明、そして最後にこれについて調べようとしたきっかけ、およびその後の調査プロセスについて書きます。 結論Linuxカーネルから見たコマンド名は実行ファイル名のbasename(ファイル名からディレクトリ部分を除いたもの)の先頭15バイトカーネルのメモリ内のプロセス(正確にはカーネルレベルのスレッド)ごとに存在するtask_structという名前の構造体の中のcommという16バイトのフィールドにNULL終端文字列として格納されているカーネルの中から低コストに、かつ、pidより高い可読性でプロセスを識別できるようになっているこのコマンド名はカーネルログの中、psやpgrepなど、procpsパッケージなどから使われている。長いコマンド名だと途中で切れているのは上記15バイト制限のため 調査プロセス 調査に使ったソフトウェア…

zenn.dev
Related Topics: Linux
1 comments
  • 知らなかった。task_struct構造体内ではファイル名は16バイトに切り詰められてる。追っかけ方も勉強になる。