1、进程
名字 | 含义 |
---|---|
程序 | 安装包,程序代码,app,存在磁盘上面 |
进程 | 运行起来的程序,命令,服务(远程连接服务,网络服务)都可以成为进程。运行在内存中。 |
守护进程 | 守护进程,一直运行的进程,也可以叫做服务 |
2、僵尸进程
僵尸进程是当子进程比父进程先结束,而父进程又没有回收子进程and释放子进程占用的资源,此时子进程将成为一个僵尸进程。
僵尸进程成因:由于某个原因导致某个进程挂掉了,但是进程本身任然存在,还占用着系统资源。
查找:未来通过ps aux
过滤 Z状态可找到僵尸进程或top命令查看
pstree -p
树状显示进程,-p
显示进程号
解决:
- 方案一:找出僵尸进程上级进程,结束进程即可
- 方案二:如果上级进程是主进程(pid为1进程),则需要重启Linux系统
3、孤儿进程
孤儿进程指的是在其父进程执行完成或被终止后仍继续运行的一类进程。
孤儿进程会被系统直接接管。(systemd进程)
4、进程监控指令
监控命令 | 含义 |
---|---|
ps | 静态:ps查看当前瞬间进程状态,一般用于临时检查或取值 |
top | 动态:top动态,交互,整体查看系统状态,负载,僵尸进程,cpu,内存。类似于windows任务管理器 |
1)ps命令格式
ps -ef
- UID 进程所属用户
- PID 进程id号,大部分是随机的
- PPID 父进程的id号,pstree -p查看详细信息
- CMD 进程命令
ps aux
- 比
-ef
多了一些,cpu使用率,内存使用率,占用内存大小,进程状态
第一列 | |
---|---|
第1列:User | 进程属于用户 |
第2列:PID | 进程号(子进程号) |
第3列:%CPU | cpu使用率 |
第4列:%MEM | 内存使用率. |
第5列:VSZ | 进程占用虚拟内存大小(KB) |
第6列:RSS | 进程占用物理内存大小(KB) |
第7列:TTY | 用户使用终端(用户连接进来后,系统创建) |
第8列:STAT | 进程状态 |
第9列:START | 进程启动时间 |
第10列:TIME | 进程占用CPU时间 |
第11列:COMMAND | 进程名字(命令,选项..)。[] 括起来的是内核进程,其他是系统进systemd 。pid是1第1个进程. |
进程状态
进程状态:进程运行中;僵尸进程;正在进行io的进程;前台或后台运行进程。
进程状态:基本状态+附加组成。(Ssl可中断的多线程的管理进程)
STAT进程状态 | 描述 |
---|---|
R(running) | 进程运行 |
D | 不可以中断进程(进程正在进程IO读写) |
Z(zombie) | 僵尸进程,异常的进程 |
S | 可中断进程(可以随时停止) |
T(terminate) | 进程被停止(挂起)Ctrl + z |
2)top命令格式
top命令默认是个交互式的命令,可以展示系统负载信息,进程信息,cpu,内存信息。类似于Windows任务管理器。
刚刚使用我们核心掌握几个就行,后面随着使用再增加。
swap叫交换分区,内存不足的时候临时充当为内存;swap本质是磁盘上面的一块空间,速度没有内存快 速度对比:cpu->内存->磁盘
3)案例
案例01 过滤出crond进程信息
perl
ps -ef | grep "ssh"
ps -aux | grep "ssh"
过滤的结果可以通过
grep -v gre
p 排除下grep命令自己(进程)
perlps -ef | grep ssh | grep -v grep
后面还可以与wc配合使用统计进程数量。
perlps -ef | grep ssh | grep -v grep | wc -l
根据过滤结果,随时调整过滤的命令条件。
perlps -aux | grep "/usr/sbin/sshd"
案例02 按照树形结构查看进程信息
bash
pstree
pstree -p #显示树形结构并输出pid.
ps auxf #也可以展示部分所属关系,没有pstree直观。
案例03 根据要求,只显示某些内容
perl
#通过awk取列,必须单引号!!!awk '{peint $1}'
ps -ef | awk '{print $1}'
ps aux | awk '{print $2}'
ps aux | awk '{print $1,$3}' #第1列和第3列
#ps命令的选项,输出指定的内容
ps axo user,%cpu,stat
ps axo user,%cpu,stat,cmd
那么我想不显示标题怎么显示
perl
#awk写法 排除第1行,从第2行开始
ps -ef | awk 'NR>1 {print $1,$3}'
awk '{print 列}'
awk '条件{print 列}'
awk 'NR > = 1{print 列}'
#NR>1 行号大于1
#NR>=2 行号大于等于2
#ps不输出每一列的标题.
ps --no-heading axo user,%cpu,stat
案例04 取出某一个服务(crond)的进程信息(pid,%cpu,%mem,command)
perl
ps aux |grep 'crond' |awk '{print $2,$3,$4,$11}'
完全使用ps命令过滤出来
ps --no-heading -o pid,%cpu,%mem,command -C crond
--no-heading 不显示标题
-C 过滤 注意不要加上ax.
-o输出指定列
Awk 做好一列
bash最后一列 echo 1 a b lidao 996 |awk '{print $NF}' 996 倒数第2列 echo 1 a b lidao 996 |awk '{print $(NF-1)}' lidao
案例05 取出所有进程中内存使用率最高的前5
bash
ps aux |sort -nrk4 | head -5
案例06 top基础使用与快捷键
bash
#基础必会用法
q 退出
默认3秒刷新1次, 空格立刻刷新.
P 默认按照CPU使用率排序
M 按照内存使用率排序
#进阶用法:
top输入z进入颜色模式 按 x 标记出当前是按照哪列排序.
shift + > 向右
shift + < 向左
#top命令升级版,支持鼠标操作
htop
说明: htop是epel源中的命令. 没有需要配置epel源后安装即可(epel是企业linux扩展包)
案例07 非交互式
未来想获取top命令的结果,指标,需要让top运行在非交互模式
css
top -bn1 |awk 'NR==2'
-b 非交互模式
-n 只输出1次结果.
awk扩展
ini
top -bn1 |awk 'NR==2{print $(NF-1),$NF}'
0 zombi