linux的PS进程和作业管理(进程调度,杀死进程和进程故障-僵尸进程-内存泄漏)
Ps进程和作业管理
1.查看进程ps
1.格式
ps ---查看当前终端下的进程
3种格式:
SYSV格式 带 - 符号
BSD格式 不带 - 符号
GNU格式 长选项
2.ps -aux命令的显示
ps命令
ps -aux
分为11列

第一列:用户名,即该进程由哪个用户启用
第二列:PID:进程编号 越靠近核心编号越小
第三列:占CPU的比例
第四列:占内存的比例
第五列:VSZ 虚拟内存大小大部分指swap空间
第六列:RSS 驻留内存空间大小 驻留内存指程序不能交换到交换分区的部分占据内存大小
第七列:TTY 终端编号:?代表系统自己运行的进程,tty1表示虚拟机上桌面控制台
第八列:进程的状态
R 正在运行或可以运行(运行的程序多CPU少,先运行一部分,另一部分是可以运行)
S 休眠
D 不可中断的休眠,一般是在IO操作结束
Z 僵尸进程
T 停止,进程收到SIGSTOP,SIGSTP,SIGTIN,SIGTOU信号
跟随字母的含义:
< 高优先级
N 低优先级
L 有页锁定在内存中。用于实时的或者用户定义IO
s 父进程,其有子进程
l 多线程
+ 表示前台运行进程组中的进程
第九列:启动时间:当天启动显示时间,隔天或更早以前显示日期
第十列:启动进程是运行的时长
第十一列:进程名:带[]的是核心进程
3.ps-aux案例:
ps -aux | grep httpd |grep -v grep --筛选带有httpd名字的进程,一般是所有web服务进程
ps -aux | grep httpd | wc -l --统计进程数
ps -aux | sort -rn -k 3 | head -n 10 --显示占CPU最高的前10个进程

4.ps -ef 查看所有进程
ps -ef ---查看本机所有进程,可见到父进程ID,即PPID
-e 所有进程
-f 全部格式输出

5.ps tree 查看进程树
ps -ejH
ps axjf
pstree ---查看进程树,即完整的父子进程调用关系表



ps -ef
kill -9 PID ---杀死进程
killall -9 进程名 ---同时杀死多个同名进程
注:pstree 和 killall命令 要提前安装psmisc 软件包才可使用
2.进程分类:前后台 挂起交互守护进程
前台运行:在显示界面运行,运行过程可见,争抢cpu、内存资源
后台运行:不再界面显示,运行过程不可见,仅会在进程结束时,把结果显示到前台,不争抢系统前台资源
后台挂起(暂停):进程由条件需要满足,未满足前,处于挂起状态
交互进程:人为手动输入命令,启动的进程,属于前台进程
批处理进程:即shell脚本。把多个命令,按照一定的逻辑顺序,写入到一个文件中,组成程序,一次性运行文件,即可运行程序。根据命令运行,可能是前台进程,也可能是后台进程。
守护进程(daemon):监控、监听本机某项服务或端口的进程(运行的服务)
3.进程调度:
1.进程的优先级和修改nice
级别范围:-20 -- 19 数字越小,优先级越高,进程默认优先级都是0
nice --20 find / -name f1 ---启动进程,并设定优先级为-20
ps -l ---查看进程,显示优先级(NI列)
ps -efl ---查看所有进程,可见优先级
renice 19 PID ---更改指定PID的进程的优先级
注:优先级具备继承性,即父进程调用子进程后,子进程会遵守父进程的优先级

2.前后台改变: fg bg jobs ctrl +z
直接前台运行:输入命令启用的进程,默认都直接在前台运行
直接后台运行:命令 & ---命令进程放入后台运行
前台=>挂起: ctrl + z 组合键
jobs ---查看本会话的后台进程
后台=>前台:fg X ---X表示jobs看到的编号,不写编号,默认调度最后进程进入前台
挂起=>后台:bg X
后台=>前后:fg X
前台=>强制停止: ctrl + c 组合键
4.杀死进程kill
kill -9 PID ---杀死进程
killall -9 进程名 ---杀死多个同名进程
kill -l ---显示所有杀死级别
说明:其实kill命令并不只是杀死进程的功能,实质上是给进程增加一个标记信号,cpu会根据标记信号对进程做出相应的处理
5.进程在用户注销后不关闭
nohup /mnt/cpuMonitor.sh & ---以nohup命令调用的后台进程,在用户注销后,不会关闭
6.定点运行at
1.at -- 需要at软件包
at 14:46 ---设定定点运行的进程,回车后,进入命令的编辑界面,格式2:at now+30min

echo hello >> /mnt/f1
ls -l /var/ >> /mnt/f1
ctrl + d 组合键,停止、退出编辑
注:定点运行的进程,在后台执行,且执行结果不显示到前台,所以一般会把结果导入到文档中以便查看
atq ---查看本机未执行的定点进程,显示结果中,第一列是该进程的编号
at -c 编号 ---查看定点进程的具体命令
at -r 编号 ---删除定点进程
设定了定点进程后,实际系统会在/var/spool/at/下创建对应的进 程文件,执行at中设定的命令
at -c 编号,实质是cat的这个进程文件,at -r 编号,实质是删除的这个进程文件
2.用户管理文件
/etc/at.deny中指定拒绝使用at功能用户,默认存在,并为空
/etc/at.allow,指定仅允许谁使用at功能,该文件中未写的用户是拒绝的,默认不存在
二者关系:若二者都存在,则at.deny失效,只遵守的at.allow的设置
7.进程故障:
1.僵尸进程 抓取 杀死僵尸进程
一个进程,卡死在内存中,不执行,但也不退出
父子进程调用,一方异常关闭,造成另一个方无法正常完成,从而成为僵尸进程
方式一:
ps -aux ---显示的第八列,进程状态列,显示有Z字母的,表示为僵尸进程
ps -aux | awk '$8 ~ /[Zz]/ {print $1,$2,$4,$8,$11}' ---抓取显示僵尸进程
方式二:
ps -ef | grep defunct ---抓取显示僵尸进程
说明: -ef 查看时,僵尸进程会在进程名后面加 <defunct> 标记
抓取到后,kill -9 PID 杀死僵尸进程
2.内存泄漏
一个进程运行完毕,不释放内存,下次运行再次占用新的内存空间,造成进程持续占用新的内存空间,内存被越占越大。
解决:当系统运行慢,查cpu不太高、查内存高,查进程数、连接数不高,查看占内存最高的进程,占内存10%+的进程为怀疑对象
写脚本,每10分钟记录一次进程占内存的比例,持续2-3个小时,查看记录日志,若进程每隔几次就会增长,说明泄漏了
申请业务集群制服务,轮流做重启,同时让开发部门做bug调试;或者版本降级
linux的PS进程和作业管理(进程调度,杀死进程和进程故障-僵尸进程-内存泄漏)的更多相关文章
- Linux查找并杀死僵尸进程
1.查看系统是否有僵尸进程 使用Top命令查找,当zombie前的数量不为0时,即系统内存在相应数量的僵尸进程. 2.定位僵尸进程 使用命令ps -A -ostat,ppid,pid,cmd |gre ...
- Linux查找并杀死僵尸进程(转)
1.查看系统是否有僵尸进程 使用Top命令查找,当zombie前的数量不为0时,即系统内存在相应数量的僵尸进程. 2.定位僵尸进程 使用命令ps -A -ostat,ppid,pid,cmd |gre ...
- Linux 系统中僵尸进程
Linux 系统中僵尸进程和现实中僵尸(虽然我也没见过)类似,虽然已经死了,但是由于没人给它们收尸,还能四处走动.僵尸进程指的是那些虽然已经终止的进程,但仍然保留一些信息,等待其父进程为其收尸.配图源 ...
- 僵尸进程的产生和避免,如何kill杀掉linux系统中的僵尸defunct进程
在 Unix系统管理中,当用ps命令观察进程的执行状态时,经常看到某些进程的状态栏为defunct,这就是所谓的"僵尸"进程."僵尸"进程是一个早已 死亡的进程 ...
- linux 如何清理僵尸进程
今天在维护服务器的时候,发现有5个nova-novncproxy的僵尸进程. 26327 ? S 0:05 \_ /usr/bin/python /usr/bin/nova- ...
- linux僵尸进程
什么是僵尸进程? 在UNIX 系统中,一个进程结束了,但是他的父进程没有等待(调用wait / waitpid)他, 那么他将变成一个僵尸进程. 在fork()/execve()过程中,假设子 ...
- Linux 僵尸进程
Linux 允许进程查询内核以获得其父进程的 PID,或者其任何子进程的执行状态.例如,进程可以创建一个子进程来执行特定的任务,然后调用诸如 wait() 这样的一些库函数检查子进程是否终止.如果子进 ...
- linux系统清理僵尸进程记录
在UNIX 系统中,一个进程结束了,但是他的父进程没有等待(调用wait / waitpid)他, 那么他将变成一个僵尸进程. 在fork()/execve()过程中,假设子进程结束时父进程仍存在, ...
- Linux 僵尸进程如何处理
Linux 允许进程查询内核以获得其父进程的 PID,或者其任何子进程的执行状态.例如,进程可以创建一个子进程来执行特定的任务,然后调用诸如 wait() 这样的一些库函数检查子进程是否终止.如果子进 ...
随机推荐
- 使用LLDB和debugserver对ios程序进行调试
在没有WIFI的情况下,使用USB连接IOS设备,使用辅助插件usbmuxd来辅助调试.我其实也想用wifi调试,奈何公司的wifi绑定了mac地址,而我又使用的是黑苹果虚拟机,使用桥接的方式修改网段 ...
- 一文梳理Web存储,从cookie,WebStorage到IndexedDB
前言 HTTP是无状态的协议,网络早期最大的问题之一是如何管理状态.服务器无法知道两个请求是否来自同一个浏览器.cookie应运而生,开始出现在各大网站,然而随着前端应用复杂度的提高,Cookie 也 ...
- [JAVA]标准IO流操作
import java.io.*; /** * @Description: * @projectName:JavaTest * @see:PACKAGE_NAME * @author:郑晓龙 * @c ...
- AMAP-TECH算法大赛开赛!基于车载视频图像的动态路况分析
阿里巴巴高德地图AMAP-TECH算法大赛于7月8日开启初赛,赛题为「基于车载视频图像的动态路况分析」,活动邀请了业界权威专家担任评委,优秀选手不仅可以瓜分丰厚的奖金,领取荣誉证书,还有机会进入高德地 ...
- 简单讲解一下http2的多路复用
在 HTTP/1 中,每次请求都会建立一次HTTP连接,也就是我们常说的3次握手4次挥手,这个过程在一次请求过程中占用了相当长的时间,即使开启了 Keep-Alive ,解决了多次连接的问题,但是依然 ...
- easy tornado
easy tornado 题目分析 这是一道2018年护网杯的题目 /flag.txt /welcome.txt /hints.txt 一共有3个文件. /flag.txt flag in /flll ...
- 数据可视化之PowerQuery篇(十三)Power BI总计行错误,这个技巧一定要掌握
https://zhuanlan.zhihu.com/p/102567707 前一段介绍过一个客户购买频次统计的案例: Power BI 数据分析应用:客户购买频次分布. 我并没有在文章中显示总计行 ...
- vscode切换虚拟环境报错无法加载文件 E:\Python_project\shop_env\Scripts\Activate.ps1,因为在此系统上禁止运行 脚本。
在使用vscode切换python的虚拟环境时报错 解决方法如下: Windows+x打开面板,选择以管理员身份运行PowerShell,输入: set-executionpolicy remotes ...
- vuex : 模块化改造
我们知道,vuex是vue技术栈中很重要的一部分,是一个很好用的状态管理库. 如果你的项目没有那么复杂,或者对vuex的使用没有那么重度,那么,是用不着modules功能的. 但如果你写着写着就发现你 ...
- 前缀和线性基HDU6579
Operation 题解:看到区间最大异或和,首先想到的是线性基: 线性基可以处理的操作是: 在数列末尾插入一个数 查询全局的子集异或最大值 由于线性基的长度很短,因此我们可以将数列所有前缀的线性基保 ...