Linux内存监控日记,Linux 内存监控
init进程是系统中的第一个进程,PID永远为1
查看系统在中静态进程的统计信息
命令: ps
格式: ps [可选项]
ax: 显示所有的进程信息
-u: 使用以用户为主的格式输出进程信息
-e: select all processes 显示系统内的进程信息
-l: 使用长格式显示进程信息
-f: full 使用完整的格式显示进程信息
ps aux命令
[root@ecs-t6-large-2-linux-20190824103606 tmp]# ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.1 125568 3984 ? Ss Sep04 0:05 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root 2 0.0 0.0 0 0 ? S Sep04 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? S Sep04 0:00 [ksoftirqd/0]
解析
USER: 进程所属的用户
PID: 进程id
%CPU: 进程占用CPU的百分比
%MEM: 进程占用内存的百分比
VSZ: 进程使用的虚拟内存量
RSS: 进程占用的物理内存容量
TTY: 进程在哪个终端上运行
STAT: 进程状态
START: 进程启动时间
TIME: 进程实际占用cpu的时间
COMMAND: 命令名称和参数
ps -elf命令
[root@ecs-t6-large-2-linux-20190824103606 tmp]# ps -elf
F S UID PID PPID C PRI NI ADDR SZ WCHAN STIME TTY TIME CMD
4 S root 1 0 0 80 0 - 31392 ep_pol Sep04 ? 00:00:05 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
1 S root 2 0 0 80 0 - 0 kthrea Sep04 ? 00:00:00 [kthreadd]
1 S root 3 2 0 80 0 - 0 smpboo Sep04 ? 00:00:00 [ksoftirqd/0]
1 S root 5 2 0 60 -20 - 0 worker Sep04 ? 00:00:00 [kworker/0:0H]
F : 进程的flag, 4代表使用者, super user
S : 进程的用户
PPID : 父进程
C: cpu的利用率
PRI : Priority 优先级
NI : Nice
PRI/NI : 进程被CPU执行的优先级, 值越小, 越容易被执行
ADDR: 进程内存的地址
SZ: 占用的内存大小
WCHAN: 是否正在运作
CMD: 命令名称和参数
查看动态的进程排名信息
top命令
P:按%CPU排序
M:按%MEM排序
1: 多核的话, 按1,可以显示出全部CPU
空格:马上刷新
默认每三秒就刷新一次
每隔一秒刷新一次
top -d 1
top 字段解析
top - 20:31:56 up 10 days, 5:03, 1 user, load average: 0.00, 0.01, 0.05
当前时间 系统运行的时间 在线人数 系统负载 : 任务队列的平均长度
# 使用w 或 uptime 可以查看到同样的信息
Tasks: 81 total, 1 running, 80 sleeping, 0 stopped, 0 zombie
%Cpu(s): 3.2 us, 0.0 sy, 0.0 ni, 96.8 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
total 进程总数81 正在运行1个进程 80个在休眠 0个停止了 0个僵尸进程数
3.2 us : 用户空间占用cpu百分比3.2
0.0 sy : 内核空间占用cpu的百分百
0.0 ni : 用户空间内改变过优先级的进程占用cpu的百分比
96.8 id: 空闲的cpu百分比
0.0 wa: 等待输入输出的进程占用cpu 的百分比
0.0 hi: 硬件cpu占用百分比
0.0 si: 软中断占用cpu百分比
0.0 st: 虚拟机占有cpu百分比
KiB Mem : 3880020 total, 601516 free, 1553552 used, 1724952 buff/cache
KiB Swap: 0 total, 0 free, 0 used. 2045092 avail Mem
Mem 内存 总共3880020k 物理内存容量 空闲内存容量=601516 已经使用:used=1553552 缓存=1724952
Swap: 交换区总量0
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1 root 20 0 125568 3984 2628 S 0.0 0.1 0:05.14 systemd
PID: 进程id
USER: 优先级
PR: 优先级
NI: 负数表示高优先级, 正数表示低优先级
VIRT: 进程使用的虚拟内存数
RES: 进程使用的未被换出的物理内存大小
SHR: 共享内存量
S: 进程状态
%CPU: 使用的CPU百分比
@MEN: 使用的物理内存百分比
TIME+ : 使用的CPU时间总计
COMMAND : 命令名
加入nice值后, PRI(新) = PRI(老) + nice
root ,可以设置的范围是 [-20 19]
普通用户 ,可以设置的范围是 [0 19]
以树型结构显示各进程间的关系
命令: pstree
[root@ecs-t6-large-2-linux-20190824103606 tmp]# pstree
systemd─┬─NetworkManager─┬─dhclient
│ └─2*[{NetworkManager}]
├─agetty
├─atd
├─auditd───{auditd}
├─crond
├─dbus-daemon
├─dockerd-current─┬─docker-containe───10*[{docker-containe}]
│ └─10*[{dockerd-current}]
├─irqbalance
├─java───49*[{java}]
├─lvmetad
├─master─┬─pickup
│ └─qmgr
├─ntpd
├─polkitd───6*[{polkitd}]
├─python
├─rsyslogd───2*[{rsyslogd}]
├─sshd───sshd───bash───pstree
├─systemd-journal
├─systemd-logind
├─systemd-udevd
├─tuned───4*[{tuned}]
└─wrapper─┬─java───14*[{java}]
└─{wrapper}
进程优先级设置
niceness:表示进程可被执行的优先级的修正数值 ,可手工修改,与priority有关
优先级有正负之分(-20 -19)
加入nice值后 PRI(新) = PRI(老) + nice
root可以设置nice值范围(-20 - 19)
普通用户可以设置nice值范围(0- 19)
用nice命令新的nice(新开启的进程)
以新的nice来启动命令
nice -10 vi & 设置nice值为10
nice --10 vi & 设置nice值为-10
用renice命令设置新nice(已经存在的进程)
renice 10 15132 设置nice值为10
renice -10 15132 设置nice值为-10
renice命令。renice -n 2 -p 3432。-n,后面是优先级的值;-p,是进程号。
用top命令修改进程的优先级
先输入r,然后输入pid,最后输入优先级
后台运行
需要在命令行后添加&符号
如何让 jar包后台运行?
nohup java -jar xxx.jar &
退出 exit
信号 kill
kill命令用来发送信号, 是进程间通信机制中唯一的异步通信机制
进程接收到信号后,采取其他动作,常用它杀死进程
信号值
符号
行为
2
sigint (interrupt)
ctrl + c
9
sigkill (强制杀死进程)
请求终止,不能忽略
15
sigterm ( terminate终止)
请求终止 默认值
20
sigtstp (stop, 挂起进程,放到后台执行)
ctrl + z
强制杀死进程
kill -9 pid
有时候直接 kill pid 却杀不掉这个进程, 说明他屏蔽了默认值
杀死终端
实现强制下线用户
pkill [选项]
-u: 根据进程所属的用户名,杀死进程
-t: 根据用户所在的终端 TTY杀死进程
[root@localhost ~]# w | grep -v "root"
14:10:10 up 6:08, 4 users, load average: 0.00, 0.01, 0.00
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
teacher tty1 - 14:04 5:34 0.16s 0.16s -bash
hack pts/1 173.17.17.174 14:05 4:32 0.17s 0.17s -bash
[root@localhost ~]# pkill -9 -t pts/1
[root@localhost ~]# w | grep -v "root"
14:12:22 up 6:10, 3 users, load average: 0.00, 0.00, 0.00
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
teacher tty1 - 14:04 7:46 0.16s 0.16s -bash
显示物理内存和交换空间的使用情况
命令: free
-m: 用MB的形式显示内存信息
-h: human readable
[root@ecs-t6-large-2-linux-20190824103606 ~]# free -h
total used free shared buff/cache available
Mem: 3.7G 1.4G 636M 8.6M 1.6G 2.0G
Swap: 0B 0B 0B
从用户的角度来说,可用的空间就是 free + buff/cache
buff/cache 会随着系统负载的增大而减小, 释放掉缓存的空间,更多的IO直接针对磁盘操作,系统会变慢
内存监控
系统内存信息在这个文件记录 /proc/meminfo
释放内存
/proc是一个特殊文件系统,我们可以通过对它的读写操作,来作为与kernel实体间进行通信的一种手段.也就是说可以通过修改/proc中的文件,来对当前kernel的行为做出调整.那么我们可以通过调整/proc/sys/vm/drop_caches来释放内存
往 /proc/sys/vm/drop_caches 分别写入1, 2, 3
页面缓存(page cache)可以包含磁盘块的任何内存映射
echo 1 > /proc/sys/vm/drop_caches;
inode是表示文件的数据结构
echo 2 > /proc/sys/vm/drop_caches;
dentries是表示目录的数据结构 。
echo 3 > /proc/sys/vm/drop_caches.
Linux内存监控日记,Linux 内存监控相关推荐
- 查看linux服务器操作日记,linux服务器系统如何查看日志?
在您作为Linux管理员的职业生涯中,您将不得不查看日志文件.毕竟,他们有一个非常重要的原因......帮助您解决问题.事实上,每个经验丰富的管理员都会立即告诉您,出现问题时要做的第一件事就是查看日志 ...
- linux监控平台搭建-内存
上一篇文章说的硬盘.就写一下.更加重要的东西.在手机上面是RAM.机器是memory.内存是按照字节编址.每个地址的存储单元可以存放8bit的数据.cpu 通过内存地址获取一条指令和数据.内存溢出ou ...
- mongodb 对内存的占用监控 ——mongostat,linux系统可用的内存是free + buffers + cached...
刚开始使用mongodb的时候,不太注意mongodb的内存使用,但通过查资料发现mongodb对内存的占用是巨大的,在本地测试服务器中,8G的内存居然被占用了45%.汗呀. 本文就来剖析一下mon ...
- python 监控linux硬盘,Python3监控windows,linux系统的CPU、硬盘、内存使用率和各个端口的开启情况详细代码实例...
由于项目的需要,需要做一个简单监控服务器的CPU利用率.CPU负载.硬盘使用率.内存利用率和服务器的各个端口的开启情况的程序,并把结果通知到监控平台,如果出现异常,监控平台打电话或者发短信通知给具体的 ...
- Linux监控CPU关闭服务器,监控Linux服务器CPU和内存
利用脚本获取Linux服务器的CPU和内存. 需要安装bc计算器 yum install -y bc 创建执行脚本 计算CPU利用率,配置了5秒采样. 执行脚本,5秒后输出采集日期|CPU负载|可用内 ...
- linux内存的active,Linux性能优化和监控系列(三)——分析Memory使用状况
分析Memory使用状况 内存是影响服务器性能的一个主要因素, 当进程已经驻留内存或者系能够分配给进程足够的内存给它, CPU能顺利自如的运行. 如果发生内存不足, 服务器使用I/O channel获 ...
- Linux效劳器的零碎内存监控方法详细解析-2
三.使甩vmstat饬令监视虚拟内存哄骗环境 vmstat是Virtual Meomory Statistics(虚拟内存统计)的缩写,可对操作零碎的虚拟内存.历程.CPU举止中止监视.它是对零碎 ...
- 使用 shell 脚本对 Linux 系统和进程资源进行监控
Shell 简介 Shell 语言对于接触 LINUX 的人来说都比较熟悉,它是系统的用户界面,提供了用户与内核进行交互操作的一种接口.它接收用户输入的命令并把它送入内核去执行.实际上 Shell 是 ...
- linux资源利用率检查_使用free命令查看实际内存占用(可用内存)
linux下在终端环境下可以使用free命令看到系统实际使用内存的情况,一般用free -m方式查看内存占用情况(兆为单位).而系统实际可用内存是不是free部分呢,不是的,系统实际内存占用以及可用内 ...
最新文章
- onclick事件中加href
- 鸿蒙系统明年上市巧,鸿蒙系统官网下载-鸿蒙系统官网下载手机版 v2.0下载-955游戏网...
- 【Flink】Flink 资源相关 Slot SlotPool
- javascript中的一些核心知识点以及需要注意的地方
- 转贴一篇不错的Python入门教程 - Instant Hacking[译文]
- daemon进程(转)
- 认知与思考-190820
- JavaScript特效——让文字每秒钟进行变色
- mysql数据库导入语句_mysql导入命令 mysql导入数据库语句
- 京东T9架构师手把手教你怎么写年薪50万的java简历
- 奈奎斯特曲线怎么确定w的值matlab,用MATLAB绘制Nyquist图.ppt
- 谷歌语法和FOFA常用语法总结
- 单片机、嵌入式ARM学习网站推荐(多年的积累)
- 【2019.06.21】基于Airtest的微信朋友圈自动点赞脚本设计与实现 2019.06.21脚本正常运行
- 微命令、微指令、微操作
- 评价PE基金绩效的常用指标IRR、MIOC、DPI、TVPI意义
- java、vue实现微信网页分享
- Excel打开UTF-8编码CSV文件乱码的问题
- java实现输出1000-2000年间闰年问题
- 如何仿真MOS电容的电压-电容曲线?
热门文章
- [Swift通天遁地]二、表格表单-(11)创建星期选项表单和拥有浮动标签的文本框
- CF1082E Increasing Frequency (multiset+乱搞+贪心)
- 来自 119.*.*.*的回复: TTL 传输中过期
- SpringMVC基础学习(二)—开发Handler
- SDOI 2016 游戏
- android 系统框架 dx
- Log4j 配置的webAppRootKey参数问题
- 最近在忙着做一个加密的项目,还自己找的私活.
- DotNet中的集合对象(2): Hashtable
- 从ARM裸机看驱动之按键中断方式控制LED(二)