人生处万类,知识最为贤。这篇文章主要讲述CentOS 7.9模拟并结束僵尸进程相关的知识,希望能为你提供帮助。
一、僵尸进程产生原因:
Zombie进程产生原因是父进程产生子进程后,子进程先于父进程退出,但父进程由于种种原因没有处理子进程发送的退出信号,此时子进程就会成为僵尸进程。
二、模拟产生僵尸进程:
1、编写python脚本:
# vim /tmp/test.py
#!/usr/bin/env python# -*- coding: utf-8 -*-import os, sys, time#产生子进程pid = os.fork()if pid == 0:#子进程退出sys.exit(0)#父进程休息300秒time.sleep(300)
# chmod +x /tmp/test.py
2、运行并查看僵尸进程状态:
(1)阻塞状态:
文章图片
(2)复制会话,使用命令查看僵尸进程状态:
# top
文章图片
# ps -e l | grep python
文章图片
备注:Z+表示产生的子进程是僵尸进程。
# ps -eo stat,ppid,pid,cmd | egrep \'^[Zz]\'
文章图片
备注:
a、将系统中状态为z或者Z的僵尸进程的状态信息、父进程PID、自身PID和cmd信息列出。
b、尝试使用kill命令结束僵尸子进程,无效,只能通过结束父进程或等待父进程退出来结束僵尸子进程。
c、300秒后脚本自动退出。
三、结束僵尸进程:
1、配置QQ邮箱发送邮件提醒:
# yum -y install mailx
# cp /etc/mail.rc{,.bak}
# vim /etc/mail.rc
末尾新增如下代码:
set from=834143808@qq.com
set smtp=smtp.qq.com
set smtp-auth-user=834143808@qq.com
set smtp-auth-password=QQ邮箱授权码
set smtp-auth=login
文章图片
文章图片
2、编写Shell脚本:
# vim /tmp/solve.sh
#!/bin/bash
ps -eo stat,ppid,pid,cmd | grep -e \'^[Zz]\' | awk \'{print $2}\' | xargs kill -9 &
>
/dev/null
if [ $? -eq 0 ];
then
echo "The zombie processes have been cleaned up." | mail -s "Attention" 834143808@qq.com
fi
# chmod +x /tmp/solve.sh
3、配置任务计划:
# crontab -e
* * * * * /tmp/solve.sh
# crontab -l
文章图片
4、测试:
(1)查看僵尸进程数量:
# top
文章图片
(2)运行脚本:
# /tmp/test.py
(3)动态查看僵尸进程数量:
文章图片
(4)每分钟执行一次任务计划,结束僵尸进程:
文章图片
文章图片
(5)自动发送邮件提醒:
【CentOS 7.9模拟并结束僵尸进程】
文章图片
推荐阅读
- Linux与Windows文件同步
- 虚拟机上以 All-in-One 模式安装 KubeSphere
- 在WIN10 64位机如何安装CUDN 10.0 和tensorflow 教程
- redhat中sysctl -p报错处理
- 缓存
- 使用Canal实现MySQL的数据实时同步
- redis延时监控
- redis限制注意点
- 有奖调研无门槛填问卷,10个摄像头开发板等你领!