Linux(九)进程管理

查看进程

1. ps

查看某个时间点的进程信息

示例一:查看自己的进程

# ps -l

示例二:查看系统所有进程

# ps aux

示例三:查看特定的进程

# ps aux | grep threadx

2. top

实时显示进程信息

示例:两秒钟刷新一次

# top -d 2

3. pstree

查看进程树

示例:查看所有进程树

# pstree -A

4. netstat

查看占用端口的进程

# netstat -anp | grep port

进程状态

状态 说明
R running or runnable (on run queue)
D uninterruptible sleep (usually IO)
S interruptible sleep (waiting for an event to complete)
Z defunct/zombie, terminated but not reaped by its parent
T stopped, either by a job control signal or because it is being traced

SIGCHILD

当一个子进程改变了它的状态时:停止运行,继续运行或者退出,有两件事会发生在父进程中:

– 得到 SIGCHLD 信号;
– 阻塞的 waitpid(2)(或者 wait)调用会返回。

孤儿进程和僵死进程

1. 孤儿进程

一个父进程退出,而它的一个或多个子进程还在运行,那么这些子进程将成为孤儿进程。孤儿进程将被 init 进程(进程号为 1)所收养,并由 init 进程对它们完成状态收集工作。

由于孤儿进程会被 init 进程收养,所以孤儿进程不会对系统造成危害。

2. 僵死进程

一个子进程的进程描述符在子进程退出时不会释放,只有当父进程通过 wait 或 waitpid 获取了子进程信息后才会释放。如果子进程退出,而父进程并没有调用 wait 或 waitpid,那么子进程的进程描述符仍然保存在系统中,这种进程称之为僵死进程。

僵死进程通过 ps 命令显示出来的状态为 Z。

系统所能使用的进程号是有限的,如果大量的产生僵死进程,将因为没有可用的进程号而导致系统不能产生新的进程。

要消灭系统中大量的僵死进程,只需要将其父进程杀死,此时所有的僵死进程就会变成孤儿进程,从而被 init 所收养,这样 init 就会释放所有的僵死进程所占有的资源,从而结束僵死进程。

本站所有文章均由网友分享,仅用于参考学习用,请勿直接转载,如有侵权,请联系网站客服删除相关文章。若由于商用引起版权纠纷,一切责任均由使用者承担
极客文库 » Linux(九)进程管理

Leave a Reply

欢迎加入「极客文库」,成为原创作者从这里开始!

立即加入 了解更多