进程是正在执行的一个程序或命令,每一个进程都是一个运行的实体,都有自己的地址空间,并占用一定的系统资源。
进程管理的作用
- 判断服务器健康状态
- 查看系统中所有进程
- 杀死进程
进程的查看--ps和pstree命令
ps
# 查看系统中所有进程,使用BSD操作系统格式
ps aux
选项:
a:显示一个终端的所有进程,除了会话引线
u:显示进程的归属用户及内存的使用情况
x:显示没有控制终端的进程
# 查看系统中所有进程,使用Linux标准命令格式
ps -le
选项:
-l:长格式显示。显示更加详细的信息
-e:显示所有进程,和-a作用一致
ps命令的输出
USER:该进程是由哪个用户产生的;
PID:进程的ID号;
%CPU:该进程占用CPU资源的百分比,占用越高,进程越耗费资源;
%MEM:该进程占用物理内存的百分比,占用越高,进程越耗费资源;
VSZ:该进程占用虚拟内存的大小,单位KB;
RSS:该进程占用实际物理内存的大小,单位KB;
TTY:该进程是在哪个终端中运行的。其中tty1-tty7代表本地控制台终端,tty1-tty6是本地的字符界面终端,tty7是图形终端。pts/0-255代表虚拟终端(现在不止256个)。?表示内核启动的
STAT:进程状态。常见的状态有R运行,S睡眠,T停止状态,s包含子进程,+位于后台
START:该进程的启动时间
TIME:该进程占用CPU的运算时间,注意不是系统时间
COMMAND:产生此进程的命令名
pstree
# 查看进程树
pstree [选项]
选项:
-p 显示进程的PID
-u 显示进程的所属用户
查看系统健康状态--top命令
top [选项]
选项:
-d 秒数:指定topminglmeige几秒更新。默认是3秒
-b 使用批处理模式输出,一般和-n选项合用
-n 次数:指定top命令执行的次数。一般和-b选项合用
在top命令的交互模式当中可以执行的命令:
?或h 显示交互模式的帮助
P 以CPU使用率排序,默认就是此项
M 以内存的使用率排序
N 以PID排序
q 退出top
显示的前五行:
top - 13:51:04 up 4:26, 1 user, load average: 0.00, 0.01, 0.05
Tasks: 360 total, 1 running, 359 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.2 us, 0.2 sy, 0.0 ni, 99.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 1001360 total, 578868 free, 210904 used, 211588 buff/cache
KiB Swap: 2098172 total, 2098172 free, 0 used. 615456 avail Mem
第一行信息为任务队列信息
内容 | 说明 |
---|---|
13:51:04 | 系统当前时间 |
up 4:26 | 系统的运行时间,本机一运行4小时26分 |
1 user | 当前登陆了一个用户 |
load average:0.00,0.01,0.05 | 系统在之前1分钟,5分钟,15分钟的平均负载。一般认为小于1*核数(单核1双核2四核4)时,负载较小。 |
第二行信息为进程信息
内容 | 说明 |
---|---|
Tasks: 360 total | 系统中的进程总数 |
1 running | 正在运行的进程树 |
359 sleeping | 睡眠的进程 |
0 stopped | 正在停止的进程 |
0 zombie | 僵尸进程。如果不是0,需要手工检查僵尸进程 |
第三行信息为CPU信息
内容 | 说明 |
---|---|
0.2 us | 用户模式占用的CPU百分比 |
0.2 sy | 系统模式占用的CPU百分比 |
0.0 ni | 改变过优先级的用户进程占用的CPU百分比 |
99.7 id | 空闲CPU的CPU百分比 |
0.0 wa | 等待输入/输出的进程的占用CPU百分比 |
0.0 hi | 硬终端请求服务占用的CPU百分比 |
0.0 si | 软终端请求服务占用的CPU百分比 |
0.0 st | Steak time虚拟时间百分比。就是当有虚拟机是,虚拟CPU等待实际CPU的时间辈分比。 |
第四行信息为内存信息
内容 | 说明 |
---|---|
1001360 total | 物理内存的总量 |
578868 free | 空闲的物理内存数量 |
210904 used | 已经使用的物理内存适量 |
211588 buff/cache | 作为缓冲缓存的内存数量 |
第五行信息为交换分区swap信息
内容 | 说明 |
---|---|
2098172 total | 交换分区的总大小 |
2098172 free | 空闲交换分区的大小 |
0 used | 已经使用的交换分区的大小 |
补充缓冲buffer用来加速数据从硬盘中“读取”,缓存cache用来数据“写入”硬盘
# 使用top查看所有进程
top -b -n 1 > /root/top/log
杀死进程
kill
# 杀死进程
kill [信号] 进程号 (默认信号为15)
# 平滑重启进程
kill -HUP 进程号 (或者kill -1 进程号) # 只能杀死重启一个进程
# 强制杀死进程
kill -9 进程号
# 查看可用的进程信号
kill -l
列表如下:
常用信号:
killall
# 按照进程名杀死进程
killall [选项] [信号] 进程名
选项:
-i 交互式,询问是否要杀死某个进程
-I 忽略进程名的大小写
pkill命令
# 按照进程名杀死进程
pkill [选项] [信号] 进程名
选项:
-t 终端号 按照终端号踢出用户
示例:
# 强制杀死从xxx终端登录的进程
pkill -9 -t tty1
pkill -9 -t pts/1
修改进程优先级
Linux操作系统是一个多用户、多任务的操作系统,Linux系统中同时运行着非常多的进程。但是CPU在同一个时钟周期内只能运算一个指令。进程优先级决定了每个进程处理的先后顺序。
ps -le中的 PRI代表Priority,NI代表Nice。这两个值都是优先级,数字越小代表该进程优先级越高。用户只能修改NI值,不能修改PRI值。
修改NI值时的注意事项:
- NI的值范围是-20到19
- 普通喻户调整NI值的范围是0-19,而且只能调整自己的进程
- 普通用户只能调高NI值,而不能降低,如原本NI值为0,则只能调整为大于0
- root用户才能设定进程NI值为负值,而且可以调整任何用户的进程。
- PRI(最终值)=PRI(原始值)+NI
- 用户只能修改NI的值,不能直接修改PRI
nice
# nice命令可以给新执行的命令直接赋予NI值,但是不能修改已经存在的进程的NI值
nice [选项] 命令
选项:
-n NI值,给命令赋予NI值
例:nice -n -5 service httpd start
renice
# 修改已经存在进程的NI值的命令
renice [优先级] PID
例:renice -10 2125