1.什么是进程
进程是正在执行的程序或命令,每一个进程都是一个正在运行的实体,都有自己的地址空间,并占用一定的系统资源。在windows中,打开任务管理器->进程就可以看到正在运行的进程。
2.进程管理的作用
- 判断服务器健康状态
- 查看系统中所有进程
- 杀死进程
3.进程相关命令
1.ps aux //查看系统中的所有进程,使用BSD操作系统格式
2.ps -le //查看系统的所有进程,使用Linux标准命令格式
1.ps aux命令
a表示all,u表示user,x表示列出完整信息
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.1 0.1 2892 1404 ? Ss 20:40 0:03 /sbin/init
root 2 0.0 0.0 0 0 ? S 20:40 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? S 20:40 0:00 [migration/0]
...
各个字段的含义
列 | 字段 | 含义 |
1 | USER | 进程由那个用户产生的 |
2 | PID | 进程号 |
3 | %CPU | 占用的cpu比例 |
4 | %MEM | 占用的内存比例 |
5 | VSZ | 该进程使用掉的虚拟内存量(kb) |
6 | RSS | 该进程占用的固定的内存量 |
7 | TTY | 该进程是在哪个终端机上面运行的,如果与终端机无关,则显示? |
8 | STAT | 该进程的状态(R/S/T/Z) |
9 | START | 进程被触发的时间 |
10 | TIME | 该进程实际使用CPU的时间 |
11 | COMMAND | 该进程的实际指令 |
进程状态 | 含义 |
R | 正在运行 |
S | 睡眠 |
T | 停止 |
s | 包含子进程 |
+ | 位于后台 |
2.top命令,查看系统健康状态
输入top命令,显示如下信息
前面几行的内容说明
第一行内容 | 说明 |
21:56:54 | 系统当前时间,虚拟机里的系统时间不一定准确 |
up 1:16 | 系统运行了1小时16分钟 |
1 user | 当前登录了1个用户 |
load average:0.00,0.01,0.00 | 系统在之前的1分钟,5分钟,15分钟的平均负载。一般认为小于1时,负载较小。如果大于1,系统已经超出负荷 |
第二行内容 | 说明 |
Tasks:150 total | 一共150个进程 |
1 running | 1个在运行 |
149 sleeping | 149个在休眠 |
0 stopped | 0个停止 |
0 zombie | 0个僵尸进程 |
第三行内容 | 说明 |
Cpu(s):0.1%us | 用户模式占用的CPU百分比 |
0.2%sy | 系统模式占用的CPU百分比 |
0.0%ni | 改变过优先级的用户进程占用的CPU百分比 |
99.7%id | 空闲CPU的百分比,这个比较重要 |
0.0%wa | 等待输入/输出的进程的占用CPU百分比 |
0.0%hi | 硬中断请求服务占用的CPU百分比 |
0.1%si | 软中断请求服务占用的CPU百分比 |
0.0%st | st(steal time)虚拟时间百分比。就是当有虚拟机时,虚拟CPU等待实际CPU的时间百分比 |
第四行内容 | 说明 |
Mem:1030608k total | 物理内存总大小(kb),(我给虚拟机分配的内存是1024MB) |
164772k used | 用掉的内存 |
865836k free | 空闲的内存 |
14816k buffers | 做缓冲的内存数量 |
第五行内容 | 说明 |
Swap:1023992k total | swap分区一共1023992kb |
0k used | 用掉了0k |
1023992k free | 1023992k空闲 |
76092k cached | 76092kb作为缓存的交互分区 |
前面的五行内容比较重要的是CPU负载,CPU的空闲率,物理内存的空闲三个指标。TOP命令本身是比较耗费资源的。
僵尸进程是指进程正在终止,但是还没有终止,有可能是因为卡死了
3.kill命令,杀死进程
kill -l 查看支持的信号
常用的信号有:
信号代号 | 信号名称 | 信号说明 |
1 | SIGHUP | 这个信号让进程立即关闭,然后重新读取配置文件之后重启 |
9 | SIGKIL | 立即结束程序运行,一般用于强制终止进程 |
15 | SIGTERM | 正常结束进程,如果无法正常结束,会尝试用9信号 |
命令格式:kill [-信号] PID //不指定信号的话默认为15
killall 命令
命令格式:killall [选项] [信号] 进程名 //按照进程名终止进程
选项:
-i:交互式,询问是否要杀死某个进程
-I:忽略大小写
pkill命令
命令格式:pkill [选项] [信号] 进程名 //按照进程名终止进程
选项:
-t 终端号:按照终端号踢出用户