windows有任务管理器可以方便用户查看进程,还可以强制结束进程,而linux自然也有命令方便用户查看和结束进程。
而进程是系统任何行为都需要的 ,比如浏览网页,浏览器作为进程,打开qq聊天,那qq就有相应的进程。
- 进程的组成部分
- 分配内存的地址空间。
- 安全属性,包括所有权等
- 程序代码是有一个或多个执行进程(而进程包含一个或者多个线程)
- 进程状态:可运行,睡眠,停止等状态
对于进行Linux自然也有其可以查看管理的命令。
- 查看命令 :ps(静态查看管理),top(动态查看管理)
- 停止进程:kill(杀死进程),killall(杀死某程序的所有进程)
- 修改进行的优先级:nice和renice
查看进程
ps
显示命令输入时的当前进程的状态,虽然类型与windows中的任务管理器,但你会泛型linux输入ps命令后进行信息打印再窗口,但是进程的参数不变了,而windows中的任务管理器如果你观察一些发现进程是参数属性再不停的变化。
格式 ps [参数]
ps的命令很多,如果需要了解详情就直接man ps。而下面列出常用的命令。
参数 | 意义 |
---|---|
-A | 列出所有的进程 |
-a | 显示跟当前终端关联的所有进程 |
-e | 此参数的效果和指定”A”参数相同 |
-f | 用ASCII字符显示树状结构,表达程序间的相互关系 |
-u | 基于用户的格式显示 比如查询 test用户的进行 ps -u test |
-U | 显示某用户ID所有的进程 |
-w | 显示加宽可以显示较多的资讯 |
-x | 显示所有进程,不以终端机来区分 |
-au | 显示较详细的资讯 |
-aux | 显示所有包含其他使用者的行程 |
一般使用的命令最多的是
ps -au 或 ps aux
前者注意显示终端的进程,而aux是显示所有的进程,不过其属性列显示的一样
对于的属性都是什么意思呢?
- USER:进程的拥有者。
- PID: 进程的id值
- %CPU:占用的cpus使用率
- %MEM:占用内存的使用率
- VSZ:占用的虚拟内存的大小
- RSS:占用的内存大小
- STAT:进程的状态
- D:无法中断的休眠状态 (通常 IO 的进程)
- R:正在执行中
- S:静止状态
- T:暂停状态
- Z:不存在但暂时无法消除
- W:没有足够的内存分页可分配
- <:高优先级的进程
- N:低优先级的进程
- L:有内存分页分配并锁在内存内
- s:表示进程是控制进程
- l:表示进程是多线程
- +:表示当前进程运行再前台
- START: 行程开始时间
- TIME: 执行的时间
- COMMAND:所执行的指令,也就是执行的进程名。
# 查询 ping进程
ps -aux | grep ping
#查询用户test的进行
ps -u test
补充pstree
pstree命令将所有行程以树状图显示,树状图将会以 pid (如果有指定) 或是以 init 这个基本行程为根 (root),如果有指定使用者 id,则树状图会只显示该使用者所拥有的行程。
简单的说就是像是树结构一样展示各个进程直接的关系。
常用参数和意义;
参数 | 意义 |
---|---|
-p | 显示进程的pid |
-u | 显示进程所属的用户 |
-apnh | 显示进程间的关系 |
演示一下命令后程序的样式
pstree -p
补充父进程
通过ps -ef 可以看出进程的有一个参数那就是父类进行
ps -ef
简单的说一下其各自的意义是什么
- UID : 进程所属的用户id
- PID: 进程的id
- PPID:父进程的id
- C: CPU用于计算执行优先级的因子。数值越大,表明的进程是CPU密集型运行,执行的优先级会降低;数值越小,表明进行的I/O密集型运行,执行优先级会提高。
- STIME:进行启动的时间
- TTY:完整的终端名称
- TIME:CPU时间
- CMD:启动进程所用的命令和参数。
#查询某进行的父进程id
ps -ef | grep 名字
或者
pstree -s |grep 名称
父进程的意思类似下面结构
- 父类进程
- 衍生的子进程a
- 衍生的子进程b
为什么会介绍父进程呢,因为后面再杀死进程时候,会发现杀死父进程附带着所有的子进程也会被杀死。
top
前面虽然可以看进程,但是和windows的任务管理器还是有区别,就是使用ps看得到只是看到命令输入当时的进程,而top能看到的有点类似与window中的任务管理的样子。
# 显示进程信息
top
输出命令显示如下
- 第一行(四列用逗号分隔)
- 当前的时间
- 运行时间
- 当前登录系统的用户数量
- load average后面的三个数字分别表示距离现在一分钟,五分钟,十五分钟的负载情况。
- 第二行(五列用逗号分开)
- 总进程的数,数值位218
- 正在运行的进程
- 睡眠的进程数
- 停止的进程数
- 僵尸进程数
- 第三行(八列逗号分开)
- 系统用户进程使用的cpu百分比
- 内核中的进程占用的cpu百分比
- 用户进程空间内改变过优先级的进程占用cpu百分比
- 空闲的cpu的百分比
- cpu等待I/O完成的时间总量
- 硬中断占比
- 软中断占比
- 虚拟机占用物理的时间
- 第四行 表示物理内存(四列逗号分开)
- total 物理内存总量
- free 空闲的内存总量
- used使用的物理内存总量
- buff/cache 内存缓存内存量
- 第五行 表示缓存(四列 逗号分开,与具体意义与第四行一样,不在解释)
- 第六行
- USER 进程管理用户
- PR 进行的优先级
- NI nice值,负值 表示高优先级,正值表示低优先级
- VIRT 虚拟内存
- RST 物理内存
- SHR 共享内存
- S 进行的状态
- %CPU 上次更新到现在的CPU时间占用的百分比
- %MEN 进程使用五路内存的百分比
- TIME+ 进程使用的CPU 时间总计,单位1/100秒
- COMMAND 进程名称
#显示进程信息
top
#显示完整命令
top -c (与top相比 COMMAND 显示的更详细)
# 以累积模式显示程序信息
top -s
# 设置信息更新次数3次后关闭
top -n 3
# 表示更新周期为10秒(系统默认3秒刷新一次)
top -d 10
# 显示进程号为123的进程信息,CPU、内存占用率等
top -p 123