Linux中的进程监控,top界面解析
umask(user file creating mask)权限详解:
概念:
用户文件创建掩码,他不是一个直接的权限,而是一个屏蔽码,用于控制创建的新文件和目录的权限。
掩码查看:
使用cat查看文件/etc/bashrc 并用grep命令筛选
cat /etc/bashrc | grep umask
权限计算工作过程:
在Linux系统中,新创建的文件和目录都有一个最大可能权限
文件:666(rw-rw-rw-)新建的文件一般不应该具备执行权限
目录:777(rwxrwxrwx)新建的目录一般要有,因为cd进目录需要执行权限
注:umask的作用就是从最大权限中屏蔽掉一些权限
权限的计算不是简单的加减而是位运算:
举例:这里以文件位例
#最大权限
666:110 110 110
#umask码
022:000 010 010
umask码取反:
111 101 101
按位与:
110 110 110 & 111 101 101
结果:110 100 100(644)
rw- r-- r--
实际例子:
!!注意:
1.官方建议umask设置为0022
2.我上面是拿文件举例计算的,目录的你可以自己计算
进程管理:
概念:
进程是正在运行,进行的程序,包括:
内存空间:独立的内存地址空间
安全属性:用户ID、组ID等
环境变量:进程运行的环境设置
文件描述符:打开的文件和网络连接
执行状态:运行、睡眠、停止等
进程状态:
状态说明:
R - 运行状态
S - 可中断睡眠(等待I/O信号等)
D - 不可中断睡眠(这种状态不能被中断,通常出现在内核线程中)
T - 停止状态
Z - 僵死状态
S+:表示该进程处于中断睡眠,+表示前台进程组,这意味着他与终端相连,可接收终端信号入。
I:空闲内核线程
Ss:S:可中断睡眠(等待用户输入) s:会话首进程(控制终端的管理者)
I<:高优先空闲线程,<高优先
S<sl:复杂多线程服务 l多线程
状态总结大全:
主状态字符:
字符 | 含义 | 例子 |
---|---|---|
R | 运行或可运行 | R 、R+ |
S | 可中断睡眠 | S 、Ss 、S< |
D | 不可中断睡眠 | D 、D< |
T | 停止状态 | T 、T+ |
Z | 僵尸进程 | Z |
I | 空闲内核线程 | I 、I< |
修饰符字符
字符 | 含义 | 例子 |
---|---|---|
< | 高优先级 | S< 、R< |
N | 低优先级 | SN 、RN |
s | 会话首进程 | Ss 、Ssl |
l | 多线程 | Sl 、Ssl |
+ | 前台进程组 | R+ 、S+ |
L | 页面锁定在内存 | SL |
查看进程top:
现在我将详细解释这张top结果都代表啥?
第一行系统概要:
top - 04:16:31 up 6:22, 1 user, load average: 0.00, 0.00, 0.00
04:16:31 - 当前系统时间(凌晨4点16分31秒)
up 6:22 - 系统已运行6小时22分钟
1 user - 当前有1个用户登录
load average: 0.00, 0.00, 0.00 - 系统负载平均值
第二行任务统计:
Tasks: 136 total, 1 running, 135 sleeping, 0 stopped, 0 zombie
136 total - 系统中共有136个进程
1 running - 1个进程正在运行
135 sleeping - 135个进程处于睡眠状态
0 stopped - 0个进程被停止
0 zombie - 0个僵死进程(很好,没有僵尸进程)
第三行cpu使用情况:
%Cpu(s): 0.0 us, 0.2 sy, 0.0 ni, 99.8 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
0.0 us - 用户空间程序CPU使用率:0.0%
0.2 sy - 内核空间CPU使用率:0.2%
0.0 ni - 调整过优先级的进程CPU使用率:0.0%
99.8 id - CPU空闲率:99.8%(系统非常空闲)
0.0 wa - 等待I/O的CPU时间:0.0%
0.0 hi - 硬件中断处理CPU时间:0.0%
0.0 si - 软件中断处理CPU时间:0.0%
0.0 st - 被虚拟化环境偷走的时间:0.0%
第四行:物理内存使用:
MiB Mem : 1774.8 total, 1371.8 free, 211.2 used, 191.8 buff/cache
1774.8 total - 总物理内存:1774.8 MiB(约1.73 GB)
1371.8 free - 完全空闲内存:1371.8 MiB(77.3%)
211.2 used - 已使用内存:211.2 MiB(11.9%)
191.8 buff/cache - 缓冲和缓存内存:191.8 MiB(10.8%)
第五行:交换空间和可用内存:
MiB Swap: 0.0 total, 0.0 free, 0.0 used. 1406.9 avail Mem
0.0 total - 总交换空间:0 MiB(未启用交换分区)
0.0 free - 空闲交换空间:0 MiB
0.0 used - 已用交换空间:0 MiB
1406.9 avail Mem - 估算的可用内存:1406.9 MiB(不含缓存回收)
进程列表详解:
(一)PID:进程id的唯一标识
(二)PR - 内核调度优先级:
进程的调度优先级,数字越小优先级越高
范围:0-139(0-99为实时进程,100-139为普通进程)
特殊值:rt = 实时进程
示例:
20
= 普通优先级rt
= 实时进程(最高优先级)0
= 非常高优先级
(三)NI - 用户空间优先级:
进程的友好值,影响PR的计算
范围:-20(最高优先级)到 19(最低优先级)
示例:
0
= 默认优先级-20
= 最高优先级(如rcu_gp进程)19
= 最低优先级(如khugepaged进程)
(四)VIRT - 虚拟内存大小
进程使用的总虚拟内存(代码+数据+共享库+交换区等)
单位:KiB(可以按E键切换单位)
示例:
171436
= systemd使用了约171MB虚拟内存
(五)RES - 驻留物理内存:
进程实际使用的物理内存(未被交换出去的部分)
单位:KiB
示例:
15576
= systemd实际占用约15MB物理内存
(六)SHR - 共享内存:
进程使用的共享内存(可被其他进程共享)
单位:KiB
示例:
10360
= systemd有约10MB内存可共享
(七)S - 进程状态:
(八)CPU - CPU使用率:
进程占用CPU时间的百分比
多核系统:可能超过100%(如800%表示使用了8个核心)
示例:
0.3
= kworker使用了0.3%的CPU时间
(九)MEM - 内存使用率:
进程占用物理内存的百分比(基于总内存)
计算:RES / 总物理内存
示例:
0.9
= systemd使用了总内存的0.9%
(十)TIME+ - 累计CPU时间:
进程自启动以来使用的总CPU时间
格式:
分:秒.百分秒
示例:
0:01.79
= systemd累计使用了1分1.79秒CPU时间
(十一)COMMAND - 命令名称
启动进程的命令名称
内核线程:通常用
[]
括起来示例:
systemd
= 系统初始化进程kworker/1:2-events
= 内核工作线程,处理事件rcu_gp
= RCU(Read-Copy-Update)内核机制
top页面中常用的快捷键:
-M 按照内存排序 ,
-P根据cpu的百分比进行排序
-T根据进程累计的使用时间排序
-W刚刚top的内容保存到/root/.config/procps/toprc
-l:是否显示平均负载和启动的时长
-t:是否显示进程和cpu相关信息
-m:是否显示内存的相关信息
-c:是否显示可执行的程序路径
-q:退出
-k:终止某个进程
-d:更改刷新时间
注:在进入top界面里直接点快捷键就行了