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 相关内容:
【孤儿进程与僵尸进程】
1、在UNIX术语中,一个已经终止、但是其父进程尚未对其进行善后处理(获取终止子进程的有关信息、释放它仍占用的资源)的进程被称为僵尸进程。(APUE 第三版 第八章 进程控制)
2、由init收养的进程不会变成僵尸进程。(APUE 第三版 第八章 进程控制)
3、一个其父进程已终止的进程称为孤儿进程(orphan process), 这种进程由 init 进程“收养”。(APUE 第三版 第九章 进程关系)
所以,孤儿进程是父进程已死自己还没死的进程;僵尸进程是自己已死,父进程没死,却没有对它做善后处理和安排的进程;孤儿进程由于会被 init 进程收养,最终不会变成僵尸进程。
编程时避免僵尸进程的方法是使用 SIG_IGN 信号或 fork 两次。
这篇文章讲得很详尽:孤儿进程与僵尸进程[总结]
【杀死 Z 进程】
处理僵尸进程的方法是杀死其父进程,让僵尸进程被 init 进程领养善后。
【杀死 T 进程】
T 进程一般是需要交互的后台进程,可以通过 fg 命令将其调到前台后处理。
*** walker ***
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 ***
相关文章推荐
- Linux进程状态解析之R、S、D、T、Z
- 僵尸进程
- 使用批处理(bat)文件定时记录win7某进程的状态
- 如何杀掉僵尸进程
- 什么是僵尸进程,有何危害?怎么避免僵尸进程?
- 僵尸进程和孤儿进程的区别
- 僵尸进程与孤儿进程
- 如何处理僵尸进程
- Defunct进程处理方式
- Linux进程实践(2) --僵尸进程与文件共享
- Linux进程实践(4) --wait避免僵尸进程
- 那些关于UNIX进程的话题
- Defunct进程 僵尸进程
- 进程
- 【操作系统】进程状态,状态转换图,状态转换条件
- linux僵尸进程产生的原因以及如何避免产生僵尸进程
- Linux 下 popen 函数引起的僵尸进程 defunct 以及解决办法
- linux进程状态
- 7 --- Linux 学习笔记之--进程
- 孤儿进程和僵尸进程