task_struct

# 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バイトくらい。

MMエントリは`mm_struct` コマンドで表示できます。 詳細表示(-f)で出力されるオープンファイルは `file`コマンドで表示できます。 close_on_exec である場合は、セパレータを `:' ではなく `*' と表示します。 カーネルスタックトレースは、 traceコマンドで表示できます。

### オプション

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

### エイリアス

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

### 実行例

`task_struct`を引数無しで実行すると、プロセス情報を一覧を表示します。

    > task_struct ! head
        ADDR S   PID   SID   UID  EUID       MM NAME             FLAGS
    c027c000 R     0     0     0     0        0 swapper          priv
    cbfe8000 I     1     0     0     0 c13f7080 init             priv
    c1314000 I     2     1     0     0        0 keventd          noexec
    c1310000 I     3     1     0     0        0 ksoftirqd_CPU0   noexec
    c133e000 I     4     1     0     0        0 kswapd           noexec memalloc
    c133c000 I     5     1     0     0        0 bdflush          noexec
    c133a000 I     6     1     0     0        0 kupdated         noexec
    cbf72000 I     8     1     0     0        0 khubd            noexec
    cb3d0000 I   466   466     0     0 c13f7300 syslogd          noexec

-fオプションを付けると詳細を表示します。

    > task_struct -f c50fe000
        ADDR S   PID   SID   UID  EUID       MM NAME             FLAGS
    c50fe000 I  1060  1060   524   524 c8a9eaa0 bash

           FILE CNT  MFD MFDS NEXT FILEPP
       c56b35a0   1  256 1024    3 cbef4000
        0:c4ec2e40    1:c4ec2e40    2:c4ec2e40

    	exec_domain:c024dd80
    	pptr:c4ece000
    	user:cb37f280  thread:c50fe270
    	sig:c4ebe080  blocked:00010000 00000000
    	tty_struct:c4401000
    	eip:c01119c1  esp:c50fff54  esp0:c5100000

mcrash, Copyright (C) 2002 ASANO Masahiro