一、进程的概念及状态
-
概念
程序被触发后,执行者的权限与属性、程序的程序码与所需数据等都会被载入内存中,操作系统并给予这个内存内的单元一个识别码(PID),可以说,进程就是一个正在运行中的程序。简而言之,进程就是系统未完成并且正在进行的工作。 -
进程的状态
- R(Running):该程序正在运行中
- S(Sleep):该程序目前正处在睡眠状态(idle),但可以被唤醒(signal)
- D 不可唤醒的睡眠状态,通常进程可能在等待I/O
- T(stop):停止状态,可能是在工作控制或除错(traced)状态
- Z(Zombie):僵尸状态,程序已经终止但却无法被移除至内存外
二、查看进程的命令
- 图形方式查看
gnome-system-monitor
2. 查看命令ps
命令 | 说明 |
---|---|
ps -A | 查看所有进程 |
ps -a | 在环境中的所有进程,不包含环境信息 |
ps a | 显示当前环境中运行的进程,包含环境信息 |
ps -u | 显示进程用户信息 |
ps x | 列出系统中所有运行包含tty输出设备 |
ps f | 显示进程的父子关系 |
ps e | 显示进程的详细信息(系统资源的调用) |
ps aux | 显示系统中所有进程并显示进程用户 |
ps ef | 显示进程详细信息并显示进程父子关系 |
ps ax | 显示当前系统中的所有进程 |
pstree | 显示当前系统的进程树 |
显示结果如下图:
(1)查看当前环境中的进程
(2)查看所有进程,不包含环境信息
(3)显示在环境中的所有进程,不包含环境信息
(4)显示当前环境中运行的进程,包含环境信息
(5)列出系统中所有运行包含tty输出设备
(6)查看进程的所有人
(7)显示进程的详细信息(系统资源的调用)
(8)显示系统中所有进程并显示进程用户
(9)显示从属关系、显示进程详细信息并显示进程从属关系
(10)显示当前系统中的所有进程
(11)显示当前系统的进程树
3. 显示进程指定信息
ps -o xxx,xxx,…,xxx 显示进程的指定信息
如 ps -o %mem,user,pid
注意:
在进程中,有很多的信息如 comm(进程名称)、user(进程所有人)、group(进程所有组)、%cpu(进程cpu使用率)、%mem(进程内存使用率)、pid(进程id)和 nice(进程优先级)等。
示例:
4. 进程的排序
ps ax --sort=%cpu ##正序,从小到大
ps ax --sort=-%cpu ##倒序,从大到小
示例一:内存使用率从小到大排序
示例二:内存使用率排名前五的进程
5. stat中显示信息的含义
- S 进程状态
- s 顶级进程
- l 内存中有锁定空间
- N 优先级低
- < 优先级高
- “+” 前台运行
三、进程优先级
进程的优先级决定cpu资源分配和调用的先后顺序,优先级高的先调用,优先级低的后调用。通过优先级的设定可以提高系统的性能,避免紧迫的任务因来的迟而延迟执行。
- 进程的优先级范围
-20~19,带 “-” 表示优先级高 - 优先级查看
ps ax -o pid,nice,comm
3. 指定某个优先级开启进程
nice -n 优先级数字 进程名称 ##指定进程打开后的优先级
4. 改变进程优先级
renice -n 优先级数字 进程pid
watch -n 1 "ps a -o pid,nice,comm" ##监控正在运行的进程的信息
四、环境中进程的前后台调用
-
jobs
查看被打入环境后台的进程 -
ctrl+z
把占用终端的进程打入后台
-
fg jobsnum
把后台进程调回前台
-
bg jobsnum
把后台暂停的进程运行
-
comm &
让命令直接在后台运行
五、进程信号 -
常用信号等级
信号等级 | 说明 |
---|---|
1 | 进程重新加载配置 |
2 | 删除进程在内存中的数据 |
3 | 删除鼠标在内存中的数据 |
9 | 强行结束单个进程(不能被阻塞) |
15 | 正常关闭进程(可能会被阻塞) |
18 | 运行暂停的进程 |
19 | 暂停某个进程(不能被阻塞) |
20 | 把进程打入后台(可以被阻塞) |
- 查看信号详细信息
man 7 signal
3. 结束进程
kill -信号 进程pid ##结束某个进程
killall -信号 进程名称 ##结束某一类进程
pkill -信号 进程名称
示例一:强制关闭进程
示例二:进程的正常关闭(有些进程不能通过信号15关闭)
示例三:pkill关闭进程
六、进程的动态监控
top 命令对进程进行监控
命令 | 说明 |
---|---|
1 | 显示cpu每个核的负载 |
s | 调整刷新频率 |
c | cpu负载排序 |
m | 内存使用量排序 |
h | 查看帮助 |
u | 查看指定用户进程 |
k | 对指定进程发起信号 |
q | 退出 |
示例:
(1)1显示cpu每个核的负载
(2)s刷新频率的调整
(3)c查看负载排序和m查看内存使用量的排序
(4)h 查看帮助
(5)按u直接输入用户名称,即可查看指定用户
(6)k对指定进程发起信号
按k键,根据提示输入指定进程的pid,再输入对该进程做的操作如kill,回车,我们可以发现该进程被结束。