您的位置:首页 > 运维架构 > Linux

Linux 进程相关

2015-06-08 13:43 423 查看
进程状态
R (TASK_RUNNING),可执行状态&运行状态(在run_queue队列里的状态)

S (TASK_INTERRUPTIBLE),可中断的睡眠状态, 可处理signal

D (TASK_UNINTERRUPTIBLE),不可中断的睡眠状态, 可处理signal, 有延迟

T (TASK_STOPPED or TASK_TRACED),暂停状态或跟踪状态, 不可处理signal, 因为根本没有时间片运行代码

Z (TASK_DEAD - EXIT_ZOMBIE),退出状态,进程成为僵尸进程。不可被kill, 即不响应任务信号, 无法用SIGKILL杀死

man ps 相关内容:
PROCESS STATE CODES
Here are the different values that the s, stat and state output specifiers (header "STAT" or "S") will display to describe the state of a process:

D    uninterruptible sleep (usually IO)
R    running or runnable (on run queue)
S    interruptible sleep (waiting for an event to complete)
T    stopped by job control signal
t    stopped by debugger during the tracing
W    paging (not valid since the 2.6.xx kernel)
X    dead (should never be seen)
Z    defunct ("zombie") process, terminated but not reaped by its parent

For BSD formats and when the stat keyword is used, additional characters may be displayed:

<    high-priority (not nice to other users)
N    low-priority (nice to other users)
L    has pages locked into memory (for real-time and custom IO)
s    is a session leader
l    is multi-threaded (using CLONE_THREAD, like NPTL pthreads do)
+    is in the foreground process group

孤儿进程与僵尸进程
1、在UNIX术语中,一个已经终止、但是其父进程尚未对其进行善后处理(获取终止子进程的有关信息、释放它仍占用的资源)的进程被称为僵尸进程。(APUE 第三版 第八章 进程控制)
2、由init收养的进程不会变成僵尸进程。(APUE 第三版 第八章 进程控制)
3、一个其父进程已终止的进程称为孤儿进程(orphan process), 这种进程由 init 进程“收养”。(APUE 第三版 第九章 进程关系)
  所以,孤儿进程是父进程已死自己还没死的进程;僵尸进程是自己已死,父进程没死,却没有对它做善后处理和安排的进程;孤儿进程由于会被 init 进程收养,最终不会变成僵尸进程。
  编程时避免僵尸进程的方法是使用 SIG_IGN 信号或 fork 两次。
  这篇文章讲得很详尽:孤儿进程与僵尸进程[总结]

【杀死 Z 进程】
  处理僵尸进程的方法是杀死其父进程,让僵尸进程被 init 进程领养善后。

【杀死 T 进程】
  T 进程一般是需要交互的后台进程,可以通过 fg 命令将其调到前台后处理。

*** walker ***
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息