1.什么是僵尸进程
如果父进程在子进程之前终止,则所有的子进程的父进程都会改变为init进程,我们称这些进程由init进程领养。这时使用ps命令查看后可以看到子进程的父进程ppid已经变为了1。
而当子进程在父进程之前终止时,内核为每个终止子进程保存了一定量的信息,所以当终止进程的父进程调用wait或waitpid时,可以得到这些信息。这些信息至少包括进...
分类:
系统相关 时间:
2014-12-16 17:04:39
阅读次数:
233
服务端多进程避免僵尸进程的方法1)通过忽略SIGCHLD信号,解决僵尸进程 在server端代码中添加signal(SIGCHLD, SIG_IGN);2)通过wait/waitpid方法,解决僵尸进程 signal(SIGCHLD,onSignalCatch);
void onSignalCatch(int signalNumber)
{
wait(NULL);...
分类:
其他好文 时间:
2014-12-05 17:37:02
阅读次数:
251
Linux服务器上,多少会出现一些僵尸进程,下面介绍如何快速寻找和消灭这些僵尸进程的方法首先,我们可以用top命令来查看服务器当前是否有僵尸进程,在下图中可以看到僵尸进程数的提示,如果数字大于0,那么意味着服务器当前存在有僵尸进程下面,我们用ps和grep命令寻找僵尸进程..
分类:
系统相关 时间:
2014-12-02 17:32:22
阅读次数:
218
以下是在部署OpenStack过程中摘录的一些较为常用的命令行或shell脚本,仅供参考。1.杀死所有存在的僵尸进程ps-ef|grepdefunc|grep-vgrep|awk‘{print$3}‘|xargskill-9
#pkilldnsmasq2.去掉配置文件中的#符号和空白行cat>/root/delsc.sh<<eof
#!/bin/bash
#deleteallspa..
分类:
系统相关 时间:
2014-12-01 16:21:48
阅读次数:
271
D 不可中断睡眠(通常进程在进行I/O)R 运行中或者可运行状态(在运行队列中)S 可中断睡眠(等待event,进程idle中)T 进程停止(进程被trace或者进程被信号停止)X 进程死亡(应该永不可见)Z 僵尸进程(结束,但是父进程没有...
分类:
系统相关 时间:
2014-11-27 20:15:36
阅读次数:
196
第二行 分别显示:total进程总数、 running正在运行的进程数、 sleeping睡眠的进程数、stopped停止的进程数、 zombie僵尸进程数。 第三行分别显示:%us 用户空间占用CPU百分比、%sy 内核空间占用CPU百分比、%ni 用户进程空间内改变过优先级的进程占用CPU百分....
分类:
系统相关 时间:
2014-11-27 14:07:30
阅读次数:
262
Wait和waitpid出现的原因(SIGCHLD): 当子进程退出的时候,内核会向父进程发送SIGCHLD信号,子进程的退出是个异步事件(子进程可以在父进程运行的任何时刻终止) 子进程退出时,内核将子进程置为僵尸状态,这个进程称为僵尸进程,它只保留最小的一些内核数据结构,以便父进程查询子进程的退出状态。 父进程查询子进程的退出状态可以用wait/waitpid函数...
分类:
其他好文 时间:
2014-11-20 17:06:02
阅读次数:
252
本文讲的是关于wait和waitpid两者的区别与联系。为避免僵尸进程的产生,无论我们什么时候创建子进程时,主进程都需要等待子进程返回,以便对子进程进行清理。为此,我们在服务器程序中添加SIGCHLD信号处理函数。 客户端断开连接后,服务器端存在大量僵尸进程。这是由于服务器子进程终止后,发送SIGC...
分类:
系统相关 时间:
2014-11-14 15:37:54
阅读次数:
243
//这个程序可以产生僵尸进程#include #include #include #include#includeint main(int argc , char **argv){ //signal(SIGCHLD, SIG_IGN); 如果将这行代码加上将不会产生僵尸进程 int id; id.....
分类:
系统相关 时间:
2014-11-06 14:26:03
阅读次数:
252
#include #include #include#includeint main(void) { //signal(SIGCHLD, SIG_IGN); int i=0; printf("i son/pa ppid pid fpid\n"); //ppid指当前...
分类:
系统相关 时间:
2014-11-06 14:25:59
阅读次数:
225