mcrash

task_struct

書式

usage: task_struct [-f] [address]

説明

task_structは1つのプロセスに必ず1つ対応しているテーブルです。 それぞれのプロセスに特有な情報を保持しています。

引数としてtask_structのアドレスを指定すると、 そのプロセスの情報を表示します。 引数無しでtask_structを実行すると、 実行中のすべてのプロセスの一覧を表示します。 (init_task_unionからtask_structのチェーンを辿ります)

タスクの状態(S)は以下の記号で表しています。
R TASK_RUNNING 実行可能状態
I TASK_INTERRUPTABLE 休眠状態
U TASK_UNINTERRUPTABLE 休眠状態 (シグナルで起きない)
Z TASK_ZOMBIE ゾンビ状態
T TASK_STOPPED サスペンド状態
Uとして表示されるプロセスは要注意です。 もしUの状態がずっと続くようでしたらプロセスのtrace を取ってみましょう。

Linux2.4まではtask_structの直後にカーネルスタック があり、二つあわせて2ページ8KBになっています。

カーネルスタック
カーネル内で動作するためのスタック。 システムコールによるものと、割り込みによるものを含む
このため、カーネルスタックが伸びすぎるとtask_structの後ろを壊します。 なお、task_structのサイズはLinux 2.4.18だと1440バイトくらい。

Linux 2.5 以降では task_struct と カーネルスタックは分離されました。

MMエントリはmm_struct コマンドで表示できます。 詳細表示(-f)で出力されるオープンファイルは fileコマンドで表示できます。 詳しくはfiles_struct の説明をを参照してください。 カーネルスタックトレースは、 traceコマンドで表示できます。

オプション

-f
詳細を表示します。 files_struct も合わせて表示します。

エイリアス

標準で p としてエイリアスしています。

実行例

task_structを引数無しで実行すると、プロセス情報を一覧を表示します。
> task_struct ! head
    ADDR S   PID   SID   UID  EUID       MM NAME             FLAGS
c02ce000 R     0     0     0     0        0 swapper         
cfee4000 I     1     0     0     0 c1389080 init             superpriv
c12ca000 I     2     1     0     0        0 keventd          forknoexec
c12fe000 I     3     1     0     0        0 kapmd            forknoexec
c12fc000 I     4     1     0     0        0 ksoftirqd_CPU0   forknoexec
c12fa000 I     5     1     0     0        0 kswapd           forknoexec memalloc
c12f8000 I     6     1     0     0        0 bdflush          forknoexec
c12f6000 I     7     1     0     0        0 kupdated         forknoexec
c13ee000 I     9     1     0     0        0 khubd            forknoexec
cf8bc000 I   461   461     0     0 c13891c0 syslogd          forknoexec

-fオプションを付けると詳細を表示します。
> task_struct -f c9d90000
    ADDR S   PID   SID   UID  EUID       MM NAME             FLAGS
c9d90000 R 29463 29427   524   524 c412b884 mcrash           superpriv
      FILES CNT   FDS FDSET  NEXT       FD CLOSEXEC  OPENFDS
   c7fe4044   1   256  1024     4 c6803400 c7fe4064 c7fe40e4
    0:cb85ef54    1:cb85ef54    2:cb85ef54    3*c12cb1f4
        lock_depth: -1
        nice:       0
        sleep_time:  59ddb9b  (jiffies)
        mm:         c412b884  (mm_struct)
        binfmt:     c04686b8  (binfmt)
        pptr:       c6ae6000  (task_struct)
        times:      b b - 0 0
        start_time:  59dd8c0  (jiffies)
        user:       cb1fe3a4
        tty:        ca792000
        fs:         cbfef628  (fs_struct)
        namespace:  c12171f4
        sig:        cba435a0
        blocked:    00000000 00000000
        thread:     c9d90370
        eip:c0113c5c  esp:c9d91ec8  esp0:c9d92000


mcrash, Copyright (C) 2002,2003 ASANO Masahiro