Linux系统中进程的查看及控制

1.什么是进程
程序放置在储存媒体中如硬盘,光盘,软盘,磁带等,为实体文件的形态存在
进程:程序被触发后执行者的权限与属性,程序的程序码与所需数据等都会被载入内存中,操作系统并给予这个内存内的单元一个识别码(pid),进程就是一个正在运行的程序
2.进程的状态
R 正在运行
S 正在睡眠状态,但可以被唤醒
D 不可被唤醒的睡眠状态,通常进程可能在等待I/O的情况
T 停止状态,可能是在工作控制(背景暂停)或除错状态
Z 僵尸状态,程序已经终止但无法被移至内存外
在这里插入图片描述

3.查看进程
(1)图形方式查看
gnome-system-monitor
在这里插入图片描述
打开后如下:
在这里插入图片描述
(2)进程查看命令
ps 查看当前环境的进程
-A 表示所有进程
在这里插入图片描述
x表示有字符设备的所有进程,即有输出界面的进程
在这里插入图片描述
-a 当前环境中的进程,忽略环境本身
在这里插入图片描述
a 跟当前环境(shell)相关的所有的进程,包括背景,最全的
在这里插入图片描述
-u 显示进程的归属,进程所有人
在这里插入图片描述
f 查看进程的从属关系,有窗口的进程结束父进程子进程会自动结束
在这里插入图片描述
###pstree查看系统的进程树
e 显示进程消耗的资源
在这里插入图片描述
l 较长,较详细的将该pid的信息列出
在这里插入图片描述
<1>常用组合
ps aux 显示系统中所有进程并显示进程用户
在这里插入图片描述
ps ef 显示进程详细信息并显示进程父子关系
在这里插入图片描述
ps ax 显示当前系统中的所有进程
在这里插入图片描述
pstree 显示当前系统的进程树
在这里插入图片描述
<2>显示进程指定信息
ps -o comm进程名称
在这里插入图片描述
user进程所有人
在这里插入图片描述
group进程所有组
在这里插入图片描述
%cpu进程cpu使用率
在这里插入图片描述
%mem进程内存使用率
在这里插入图片描述
pid 进程id
在这里插入图片描述
nice 进程优先级(0 表示normal 普通,nice 优先级越负越高)
在这里插入图片描述
注:以上参数可以混合使用,使用多个参数时用,隔开
在这里插入图片描述

4.进程排序倒序
+正序,可以不加+,默认是正序
ps ax --sort=-%cpu cpu使用量倒序
在这里插入图片描述
(+)%cpu cpu使用量正序
在这里插入图片描述
-%mem 内存使用量倒序
在这里插入图片描述

( +)%mem 内存使用量正序
在这里插入图片描述
例:查看系统内存占用量前五的进程的pid
在这里插入图片描述
5.nice 优先级
优先级的范围是-20~19
优先级越负越高
优先级的级别有以下几种:
在这里插入图片描述
##0 表示normal 普通
<1>gedit & 表示后台运行这个进程,否则会占用命令行
例: nice -n 5 gedit & 启动时设置进程的优先级为5,再查看进程
在这里插入图片描述

<2>改变已经启动的进程的优先级
renice -n 优先级数字 pid
例:先后台打开一个进程,重新设定优先级,设定后系统会提示这个进程的原来的优先级和现在的优先级
在这里插入图片描述

6.ps ax -o comm,pid,stat 查看进程的状态信息
在这里插入图片描述
S 进程状态 (后面有以下参数)
l 进程状态内存中有所定空间
N 优先级低
< 优先级高
‘+’ 前台运行
s 顶级进程
R+ 表示正在运行
锁定空间 还没保存时不被回收的内存空间
在休眠状态下内存是共享的
在这里插入图片描述
7.环境中进程的前后台调用
& 让进程开启的时候被打入后台
例:创建一个gedit进程并把它打入后台,此时命令行是可以用的
在这里插入图片描述

crtl+z    将正在运行(正在占用终端)的进程打入后台,操作后该进程暂停工作
bg        把后台暂停的进程运行起来  ##bg 调用后进程的默认符号会改变
jobs      查看被打入后台的进程   ##- 表示次默认  +表示默认##  +优先级高于-,
          没有符号表示没有优先级
fg        把后台进程调回前台,直接再次运行

例:<1>创建两个进程,并用jobs查看,后创建的进程默认级别较高
在这里插入图片描述
<2>bg调用进程,没有指定的情况下默认调用前面是+的进程,这时默认级别不会发生改变
在这里插入图片描述
<3>bg 1 调用进程[1] ,这个进程的默认级别会发生改变,再次jobs查看发现两个进程的默认级别发生改变

<4>再创建一个进程打入后台,jobs查看新创建的进程默认级别最高,原来级别低的进程现在没有了级别(之前的进程默认级别自动减一级)
在这里插入图片描述
<5>bg调用有默认级别的两个进程时没有级别的进程不会受影响,直到bg调用没有级别的进程时三个进程的默认级别才会都发生改变
在这里插入图片描述
<6>bg 2调用之前没有默认级别的进程,他的级别由没有变成了+,jobs查看后其他两个进程的级别在原基础上减一级
在这里插入图片描述
<7>fg 会调用默认级别最高的进程直接运行,他后面也可以加数字指定其他后台运行的进程
在这里插入图片描述
5.进程信号
信号是一个标识
kill -信号 pid
1 进程重新加载配置##在进程不被关闭的情况下更改配置,热更新
kill -2 pid 删除进程在内存中的数据(如 字符设备,锁定空间)
例:先后台运行一个进程gedit,执行ps ax |grep gedit 命令得到gedit进程的信息
在这里插入图片描述
打开另一个shell,执行kill -2 3672 删除该进程的锁定空间,并再次执行ps ax |grep gedit 命令查看他的信息
在这里插入图片描述
3 = crtl+\ 删除鼠标在内存中的数据(删除之后当前shell中的光标会消失,直到再次移动鼠标又会出现)
9 强行结束单个进程 (不能被阻塞)
15 正常结束进程 (可以被阻塞)
例:ps查看当前环境下的进程,kill -15 pid 结束当前shell,执行后该命令被阻塞
在这里插入图片描述
在另一个shell中执行kill -9 pid 执行后shell被关闭
在这里插入图片描述
执行后结果如下:
在这里插入图片描述
18 运行暂停的进程
19 不能被阻塞
20 可以被阻塞(第三方软件不会被阻塞)

例:
<1>注:该实验的gedit必须是在图形界面中打开的
在这里插入图片描述
<2>查看gedit进程的pid
在这里插入图片描述
<3>在gedit中输入内容
在这里插入图片描述
<4>执行 kill -20 4075 命令,执行后点击gedit,还可以继续编辑
在这里插入图片描述
在这里插入图片描述
<5>执行kill -19 pid命令,再次点击是不可以编辑的
在这里插入图片描述
在这里插入图片描述
<6>执行kill -18 pid 命令继续运行暂停的进程,刚刚暂停时的操作会显示到文件中(lala是刚刚暂停后输入的内容)
在这里插入图片描述
killall -信号 进程名 可以管理所有名为##的进程,方便管理
kill -信号 进程id 管理准确
pkill -u student -信号 对属于student用户的进程作相应的操作
pkill 按照一定的条件去操作
例:切换到student用户下,创建一个vim进程,在另一个shell中查看跟student有关的进程
在这里插入图片描述
执行pkill -u username -信号命令,如图执行后student创建的所有进程被结束,再次查看没有跟student有关的进程
在这里插入图片描述
6.进程的动态监控
top
1 显示cpu每个核的负载
s 调整刷新频率
c cpu负载排序
m 内存使用量排序
h 查看帮助
u 查看指定用户进程
k 对指定进程发起信号
q 退出
例:执行top命令,出现以下界面
在这里插入图片描述
在当前界面按s,改变刷新频率
在这里插入图片描述
按1,显示CPU每个核的负载
在这里插入图片描述
在这里插入图片描述
按h,查看帮助
在这里插入图片描述
按u 查看指定用户的进程
<1>在另一个shell中切换到student用户创建一个进程,在top下按u,输入student
在这里插入图片描述
在这里插入图片描述
<2>执行后如下
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_44224894/article/details/86480046