进程管理工具
1.进程优先级
2.进程分类
1)操作系统分类:
- 协作式多任务:早期 windows 系统使用,即一个任务得到了 CPU 时间,除非它自己放弃使用 CPU ,否则将完全霸占 CPU ,所以任务之间需要协作——使用一段时间的 CPU ,主动放弃使用
- 抢占式多任务:Linux内核,CPU的总控制权在操作系统手中,操作系统会轮流询问每一个任务是 否需要使用 CPU ,需要使用的话就让它用,不过在一定时间后,操作系统会剥夺当前任务的 CPU 使用权,把它排在询问队列的最后,再去询问下一个任务
2)进程类型:
- 守护进程: daemon,在系统引导过程中启动的进程,和终端无关进程
- 前台进程:跟终端相关,通过终端启动的进程
3)按进程资源使用的分类:
- CPU-Bound:CPU 密集型,非交互
- IO-Bound:IO 密集型,交互
3.进程树pstree
1)pstree 可以用来显示进程的父子关系,以树形结构显示
2)格式:
pstree [OPTION] [PID | USER]
3)常用选项:
-p 显示PID -T 不显示线程thread,默认显示线程 -u 显示用户切换 -H pid 高亮显示指定进程及其前辈进程
例:显示子进程及编号
[root@centos8 ~]# pstree -p
例:高亮显示进程前辈进程
[root@centos8 ~]# pstree -pH 3365
4.ps命令进程信息
1)ps(process state),默认显示当前进程列表的信息信息
2)ps格式:
ps [OPTION]...
3)支持三种选项:
- UNIX选项,如:-A -e
- GNU选项,如:-help
- BSD选项,如:a
例:显示所有前台进程信息
ps a
例:显示所有进程信息(包括和终端无关的进程)
[root@centos8 ~]# ps ax
例:显示所有进程信息并显示由谁运行,占用空间等信息
[root@centos8 ~]# ps aux
4)ps输出属性
C:ps -ef 显示列C表示cpu利用率
VSZ:Virtual memory Size,虚拟内存集,线性内存
RSS:ReSident Size,常驻内存集
STAT:进程状态
- R:running
- S:interruptable sleeping 睡眠进程
- D:uninterruptable sleeping 睡死进程
- T:stopped
- Z:zoombie 僵尸进程
- +:前台进程
- l:多线程进程
- L:内存分页并带锁
5)范例:查看CPU利用率排序(默认从小到大,在%前加“-”反之)
[root@centos8 ~]# ps aux k %cpu [root@centos8 ~]# ps aux k -%cpu
6)面试题:找到未知进程的执行程序文件路径
首先找到它的进程编号:2714
[root@centos8 ~]# ll /proc/2714
在这个目录中有一个exe的软链接,就是这个程序的文件路径
[root@centos8 ~]# ll /proc/2714/exe
7)查看优先级和CPU绑定关系
[root@centos8 ~]# ps axo pid,cmd,ni,pri,rtprio | grep migration [root@centos8 ~]# ps axo pid,cmd,ni,pri,psr | grep dd
8)实现进程和cpu的绑定(临时性)
[root@centos8 ~]# taskset --help
5.Prtstat查看进程详细信息
1)可以显示进程信息,来自于psmisc包
2)格式:
prtstat [OPTION] PID...
例:
[root@centos8 ~]# prtstat 1
6.搜索进程pgrep
1)命令格式:
pgrep [option] pattern
2)选项
-u uid: effective user,生效者 -U uid: real user,真正发起运行命令者 -t terminal: 与指定终端相关的进程 -l: 显示进程名 -a: 显示完整格式的进程名 -P pid: 显示指定进程的子进程
7.搜索进程pidof
1)获取进程编号
2)命令格式
pidof [options] [pragram[...]]
例:
[root@centos8 ~]# pidof dd 7454 [root@centos8 ~]# ll /proc/`pidof dd`/exe lrwxrwxrwx 1 root root 0 Mar 14 20:23 /proc/7454/exe -> /usr/bin/dd
3)常用选项:
-x 按脚本名称查找pid
4)范例:
[root@centos8 data]# bash bash.sh [root@centos8 ~]# pidof /data/bash.sh -x 7574
#脚本程序必须要有shebang机制,否则查不到
8.uptime和w
1)显示当前系统负载
2)内容
- 当前时间
- 系统已启动的时间
- 当前上线人数
- 系统平均负载(1、5、15分钟的平均负载,一般不会超过1,超过5时建议警报)
3)系统平均负载:指在特定时间间隔内运行队列中的平均进程数,通常每个CPU内核的当前活动进程数不大于3,那么系统的性能良好。如果每个cpu内核的任务大于5,那么此主机的性能有严重问题。
如:Linux主机是1个双核cpu。当Load Average为6的时候,说明机器已经被充分利用
例:
[root@centos8 data]# uptime
4)当然top的最上面一行显示的和uptime也是一样的。
top
记录于2022-3-14-21:05