目录
1.6.8 系统监控
(1)进程
进程:进程是程序的一次动态执行;
守护进程:守护进程是在后台运行并提供系统服务的一些进程;
父子进程:当一个进程创建另一个进程时,第1个进程被称为新进程的父进程,而新进程被称为子进程;
僵尸进程:当父进程打开子进程,子进程再打开孙进程,此时关闭父进程则子/孙进程也应该被关闭,而父进程已关闭子进程却未关闭的进程叫做僵尸进程;
如新打开终端相当于在终端内运行bash命令,
进程状态:CPU同一时刻只能执行一个进行,通过中断优先级并行执行多个进程,因为CPU运算速度快,所以看上去像是同时执行多个进程;因此进程有三种状态:
(2)buffer/cache/load average
buffer | 在内存中开辟空间,存放硬盘需要传送到内存内的数据,待存储到一定数量,再一起交给CPU处理,用以提高内存与硬盘间传递速率 |
cache | 在内存中开辟空间,存放内存中需要传递给CPU的常用的数据,用以提高内存与CPU间传递速率 |
CPU利用率 | 上班8小时工作4小时,CPU利用率为0.5 |
load average | CPU负载,1人1天可做10个任务却只做了2个,CPU负载为.0.2, 正常情况下load average<=0.7*cpu数, |
(3)top查看进程资源
LINUX系统终端输入top命令实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器(Ctrl+Alt+delete),默认5s刷新一次;按q/Ctrl+c退出
命令 |
| 列名 | 含义 |
top | 第一行 | 12:38:33 | 当前时间 |
up 50 days | 系统运行时间,格式为时:分 | ||
1 user | 当前登录用户数 | ||
load average: 0.06, 0.60, 0.48 | 系统负载三个数值分别为1分钟、5分钟、15分钟前到现在的平均值 | ||
第二行Tasks | 29 total | 进程总数 | |
1 running | 正在运行的进程数 | ||
28 sleeping | 睡眠的进程数 | ||
0 stopped | 停止的进程数 | ||
0 zombie | 僵尸进程数 | ||
第三行Cpu(s) | 0.3% us | 用户进程占用CPU百分比 | |
1.0% sy | 内核的系统进程占用CPU百分比 | ||
0.0% ni | 用户进程空间内改变过优先级的进程占用CPU百分比 | ||
98.7% id | 空闲CPU百分比 | ||
0.0% wa | 等待输入输出的CPU时间百分比 | ||
0.0% hi | 硬件中断占用CPU时间的百分比 | ||
0.0% si | 软件中断占用CPU时间的百分比 | ||
第四行 | Mem | 内存 | |
total | 总内存 | ||
used | 已用内存 | ||
free | 空闲内存 | ||
buffers | 缓冲区 | ||
第五行 | Swap | 交换虚拟内存 | |
total | 总虚拟内存 | ||
used | 已用虚拟内存 | ||
free | 空闲虚拟内存 | ||
cached |
| ||
进程信息 | PID | 进程id | |
PPID | 父进程id | ||
RUSER | Real user name | ||
UID | 进程所有者的用户id | ||
USER | 进程所有者的用户名 | ||
GROUP | 进程所有者的组名 | ||
TTY | 启动进程的终端名。不是从终端启动的进程则显示为 ? | ||
PR | 优先级 | ||
NI | nice值,负值表示高优先级,正值表示低优先级 | ||
P | 最后使用的CPU,仅在多CPU环境下有意义 | ||
%CPU | 上次更新到现在的CPU时间占用百分比 | ||
TIME | 进程使用的CPU时间总计,单位秒 | ||
TIME+ | 进程使用的CPU时间总计,单位1/100秒 | ||
%MEM | 进程使用的物理内存百分比 | ||
VIRT | 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES | ||
SWAP | 进程使用的虚拟内存中,被换出的大小,单位kb。 | ||
RES | 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA | ||
CODE | 可执行代码占用的物理内存大小,单位kb | ||
DATA | 可执行代码以外的部分(数据段+栈)占用的物理内存大小,单位kb | ||
SHR | 共享内存大小,单位kb | ||
nFLT | 页面错误次数 | ||
nDRT | 最后一次写入到现在,被修改过的页面数。 | ||
S | 进程状态:=不可中断的睡眠状态;R=运行;S=睡眠;T=跟踪/停止;Z=僵尸进程 | ||
COMMAND | 命令名/命令行 | ||
WCHAN | 若该进程在睡眠,则显示睡眠中的系统函数名 | ||
Flags | 任务标志,参考sched.h |
(4)free查看内存
命令 | 说明 |
free | 显示内存使用状态 |
free-m | 以MB为单位显示 |
free-h | 以GB为单位显示 |
free | 1 | 2 | 3 | 4 | 5 | 6 | |
total | used | free | shared | buffers | cached | ||
1 | Mem | 总内存 | 被分配为buffers+cached的内存 | 总内存中未被分配内存 | 多进程共享内存 | 被分配为buffers但未被占用的内存 | 被分配为cached但未被占用的内存 |
2 | buffers/cache | - | 已用的buffers+cached的内存 | 总内存中未被占用内存 |
|
|
|
3 | swap | 总交换内存 | 已用交换内存 | 未用交换内存 |
|
|
|
若将上表看做二维数组,则有f(1,1)=f(1,2)+f(1,3)=f(2,2)+f(3,3);f(2,2)=f(1,2)-f(1,5)-f(1,6);f(1,2)=f(1,5)+f(1,6)+f(2,2);f(2,3)=f(1,3)+f(1,5)+f(1,6);
(5)查看/过滤/打开/关闭进程
①查看/过滤
命令 | 说明 | ||||||||||
查看 | ps | 查看当前进程的状态 | |||||||||
ps-aux | 查看用户相关的所有进程,如查看所有包含init但不包含grep,即不包含本进程的所有进程的命令:ps aux | grep ‘init’ | grep -v ‘grep’
| ||||||||||
| USER | PID | %CPU | %MEM | VSZ | RSS | TTY | STAT | START TIME | COMMAND | |
| 用户 | 进程ID | CPU占有率 | 内存占有率 | 虚拟内存 | 物理内存 | 运行终端 | 当前状态 | 开始时间 | 进程命令 | |
pstree | 以树状图显示程序,pstree 3列出pid为3的进程状态树 | ||||||||||
jobs | 查看所有后台运行进程 | ||||||||||
过滤 | prep ‘root’ /etc/passwd | 一行一行过滤路径/etc/passwd文件内所有包含root的行,如查找所有可登陆的用户信息:grep ‘/bin/bash’ /etc/passwd | |||||||||
grep -v ‘grep’ | 反向过滤,过滤掉所有与grep相关的行 |
②打开/关闭/后台转前台
用终端打开/关闭火狐浏览器应用程序进程:
| 前台运行 (占用终端,此时终端不可用) | 后台运行 |
打开 | 直接输入应用名称【firefox】 | 桌面双击 |
【firefox &】 | ||
关闭 | 【Ctrl+c】 | 先【ps aux | grep ‘firefox| grep -v ‘grep’】查找进程,再【kill -9 pid】强制关闭进程ID所示进程 |
先【jobs】查看后台运行进程工作号, 再【kill -9 %工作号】强制关闭 | ||
|
| 【pkill -9 ‘firefox’】强制关闭全部包含firefox的进程 |
后台转前台 |
| 先查看后台进程工作号【jobs】, 再转到前台运行【fg %工作号】 |