位置: IT常识 - 正文

Linux系统中查杀僵尸进程的基本方法讲解(linux查杀webshell)

编辑:rootadmin
这篇文章主要介绍了Linux系统中查杀僵尸进程的基本方法讲解,文中讲到了Linux中处理相关进程的SIGCHLD信号的相关知识,需要的朋友可以参考下... 15-12-19

推荐整理分享Linux系统中查杀僵尸进程的基本方法讲解(linux查杀webshell),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:linux查看杀死进程命令kill,linux病毒查杀,linux rootkit查杀,linux查看杀毒软件,linux查杀webshell,linux rootkit查杀,linux rootkit查杀,linux如何查杀进程,内容如对您有帮助,希望把文章链接给更多的朋友!

在UNIX 系统中,一个进程结束了,但是他的父进程没有等待(调用wait / waitpid)他, 那么他将变成一个僵尸进程. 在fork()/execve()过程中,假设子进程结束时父进程仍存在,而父进程fork()之前既没安装SIGCHLD信号处理函数调用 waitpid()等待子进程结束,又没有显式忽略该信号,则子进程成为僵尸进程。

一个进程在调用exit命令结束自己的生命的时候,其实它并没有真正的被销毁, 而是留下一个称为僵尸进程(Zombie)的数据结构(系统调用exit,它的作用是 使进程退出,但也仅仅限于将一个正常的进程变成一个僵尸进程,并不能将其完全销毁)

进程的危害由于子进程的结束和父进程的运行是一个异步过程,即父进程永远无法预测子进程 到底什么时候结束. 那么会不会因为父进程太忙来不及wait子进程,或者说不知道 子进程什么时候结束,而丢失子进程结束时的状态信息呢? 不会。因为UNⅨ提供了一种机制可以保证只要父进程想知道子进程结束时的状态信息, 就可以得到。这种机制就是: 在每个进程退出的时候,内核释放该进程所有的资源,包括打开的文件,占用的内存等。但是仍然为其保留一定的信息(包括进程号the process ID,退出状态the termination status of the process,运行时间the amount of CPU time taken by the process等)。直到父进程通过wait / waitpid来取时才释放. 但这样就导致了问题,如果进程不调用wait / waitpid的话,那么保留的那段信息就不会释放,其进程号就会一直被占用,但是系统所能使用的进程号是有限的,如果大量的产生僵死进程,将因为没有可用的进程号而导致系统不能产生新的进程. 此即为僵尸进程的危害,应当避免。

1、如何查看僵尸进程?如何查看linux系统上的僵尸进程,如何统计有多少僵尸进程?

代码如下:#ps -ef | grep defunct

或者查找状态为Z的进程,Z就是代表zombie process,僵尸进程的意思。

Linux系统中查杀僵尸进程的基本方法讲解(linux查杀webshell)

另外使用top命令查看时有一栏为S,如果状态为Z说明它就是僵尸进程。

代码如下:Tasks: 95 total, 1 running, 94 sleeping, 0 stopped, 0 zombie

top命令中也统计了僵尸进程。或者使用下面的命令:

代码如下:ps -ef | grep defunct | grep -v grep | wc -l

2、如何杀死僵尸进程?一般僵尸进程很难直接kill掉,不过您可以kill僵尸爸爸。父进程死后,僵尸进程成为”孤儿进程”,过继给1号进程init,init始终会负责清理僵尸进程.它产生的所有僵尸进程也跟着消失。

代码如下:ps -e -o ppid,stat | grep Z | cut –d” ” -f2 | xargs kill -9

代码如下:kill -HUP `ps -A -ostat,ppid | grep -e ’^[Zz]‘ | awk ’{print $2}’`

当然您可以自己编写更好的shell脚本,欢迎与大家分享。

另外子进程死后,会发送SIGCHLD信号给父进程,父进程收到此信号后,执行waitpid()函数为子进程收尸。就是基于这样的原理:就算父进程没有调用wait,内核也会向它发送SIGCHLD消息,而此时,尽管对它的默认处理是忽略,如果想响应这个消息,可以设置一个处理函数。

3、如何避免僵尸进程?处理SIGCHLD信号并不是必须的。但对于某些进程,特别是服务器进程往往在请求到来时生成子进程处理请求。如果父进程不等待子进程结 束,子进程将成为僵尸进程(zombie)从而占用系统资源。如果父进程等待子进程结束,将增加父进程的负担,影响服务器进程的并发性能。在Linux下 可以简单地将 SIGCHLD信号的操作设为SIG_IGN。 signal(SIGCHLD,SIG_IGN); 这样,内核在子进程结束时不会产生僵尸进程。这一点与BSD4不同,BSD4下必须显式等待子进程结束才能释放僵尸进程

或者

用两次fork(),而且使紧跟的子进程直接退出,是的孙子进程成为孤儿进程,从而init进程将负责清除这个孤儿进程。

本文链接地址:https://www.jiuchutong.com/zhishi/267682.html 转载请保留说明!

上一篇:mac系统的电脑怎么切换城市天气? mac切换其他城市的天气的技巧(mac系统小技巧)

下一篇:如何阻止windows更新驱动程序(如何阻止windows10升级到11)

  • 股票印花税如何计算
  • 递延所得税负债转回怎么理解
  • 税务师考试各科老师推荐
  • 如何查询增值税申报表
  • 存货被盗的会计分录
  • 企业所得税退抵税费申请(汇算清缴)怎么撤销
  • 金蝶专业版利润表本年累计公式
  • 企业管理费可以扣除吗
  • 年度财务报表和季度财务报表一样吗
  • 私房装修费能在公司报销吗
  • 发出存货的计价方法对企业财务状况和经营成果有何影响
  • 给员工交的重大医疗保险怎么做分录?
  • 收到发票怎么记账
  • 增值税发票开票限额怎么申请?
  • 以货抵债会计处理
  • 增值税普票当月开错了怎么办
  • 季度所得税可以不预缴吗
  • 发放的离职补偿金怎么做账
  • 远期汇票的付款期限可以表示为
  • 不良品退回处理流程
  • 损益类科目反映企业在一定期间内利润或亏损,可以分为
  • 收到老板图片
  • php实用的案例
  • 解决胃胀气最快方法
  • 境外资金购买境内物业
  • 待摊费用和预提费用属于什么账户
  • 再就业优惠怎么办理
  • 出口免抵增值税是什么意思
  • 预收账款属于什么科目
  • 资产负债表没有期末数
  • 一般纳税人在哪里报税
  • 企业所得税品目应纳税所得额未申报
  • wordpress怎么添加图片
  • 电子产品报废清理是否缴纳教育附加税
  • sql执行顺序优先级
  • 技术服务型公司如何做账务处理
  • 借调是原单位发工资吗
  • 小规模纳税人应纳税额减征额怎么算
  • 企业不需要交残保金吗
  • 进口原料需要交哪些税
  • 月底资产负债表怎么填
  • 电子发票可以作为保修凭证吗
  • 装修费用应该计入什么科目
  • 新企业购买税控盘,没收入,怎么抵扣
  • 淘宝商城的收入来源
  • 厂家给的返利应该怎么做会计分录
  • 住宅可以注册什么类型的公司
  • 金税盘清卡怎么弄
  • 金蝶软件标准版多少
  • 社保个人部分如何继承
  • 收到伙食费的会计处理
  • 什么是划分?划分应当遵守哪些规则?
  • 财务会计属于什么职位类别
  • 会计入职新公司
  • sql server怎么添加数据
  • Windows自带的游戏怎么删除
  • 打开电脑windows
  • windows7如何设置电脑休眠时间
  • 收集整理的近义词
  • linux系统的
  • win10手机预览版
  • win1共享
  • win8安装界面
  • 屏保 win7
  • win10 rs1是什么版本
  • windows7鼠标设置在哪里
  • python 开源框架
  • javascript cookies
  • rsync include-from
  • jquery为什么不火了
  • Android通知栏点击打开安装
  • Android android.support.v4.widget.SlidingPaneLayout 侧滑示例
  • 税务局遴选能去什么单位
  • 税务局把我拉入黑名单了怎么办
  • 张江税务所地址
  • 国税系统升级后怎么添加办税人
  • 电子发票开票失败怎么回事?
  • 大乐透中奖查询走势图
  • 西北地区的沙尘暴
  • 重庆市大足区迪涛中学那几个是尖子班
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设