2016-03-09 6 views
3

Когда я бегу ps xaf У меня есть следующий вывод:Что строчную т означает, что в пс кода состояния

ps xaf result

Так что мое приложение имеет код состояния t+. Но я не могу найти, что это значит. В man ps, где нет такого кода состояния:

man ps

ли равно прописного T кода состояния? Если да, то почему я всегда получаю только код T, когда я делаю kill -SIGSTOP <pid>?

ответ

4

Не все версии Linux знают о коде t. Он был введен в 2.6.33 как трассировочный останов, который отличается от остановки сигнала, указанной T. В последних версиях proc(5) (2014-07-10 или позже) вы найдете следующее:

    T Stopped (on a signal) or (before Linux 2.6.33) 
         trace stopped 
        t Tracing stop (Linux 2.6.33 onward) 
        W Paging (only before Linux 2.6.0) 
        X Dead (from Linux 2.6.0 onward) 
        x Dead (Linux 2.6.33 to 3.13 only) 
        K Wakekill (Linux 2.6.33 to 3.13 only) 
        W Waking (Linux 2.6.33 to 3.13 only) 
        P Parked (Linux 3.9 to 3.13 only) 

В дополнение к обычному R, коды состояния S, D, Z, T, W.

Просмотреть последнюю версию на Michael Kerrisk page.

4

В соответствии с task_state_array[] из источников ядра 't' переводится как "трассировочная остановка", а 'T' просто "остановлено".

/* 
* The task state array is a strange "bitmap" of 
* reasons to sleep. Thus "running" is zero, and 
* you can test for combinations of others with 
* simple bit tests. 
*/ 
static const char * const task_state_array[] = { 
    "R (running)",  /* 0 */ 
    "S (sleeping)",  /* 1 */ 
    "D (disk sleep)", /* 2 */ 
    "T (stopped)",  /* 4 */ 
    "t (tracing stop)", /* 8 */ 
    "X (dead)",  /* 16 */ 
    "Z (zombie)",  /* 32 */ 
}; 
+0

Посмотрите на: https://github.com/torvalds/linux/blob/eae21770b4fed5597623aad0d618190fa60426ff/fs/proc/array.c#L120 – molivier

 Смежные вопросы

  • Нет связанных вопросов^_^