linux 系统监控 linux系统的电脑
大家好,今天来为大家分享linux 系统监控的一些知识点,和linux系统的电脑的问题解析,大家要是都明白,那么可以忽略,如果不太清楚的话可以看看本篇文章,相信很大概率可以解决您的问题,接下来我们就一起来看看吧!
Linux 下查看内存使用情况方法总结
在Linux系统中,如何全方位监控内存使用情况?在进行Linux系统优化时,内存监控是至关重要的。Linux提供了多种高效工具,助你深入了解内存的实时使用情况。以下是详细的内存监控方法汇总:
1./proc/meminfo:基础入口
首先,打开“大门”是直接查看《/proc/meminfo》,这个动态文件包含了系统内存使用的关键数据,许多其他工具(如free、ps、top等)都依赖于此。通过它,你可以获取到详细的内存使用信息,包括进程的内存占用情况,通过查看/proc//statm和/proc//status。
2. atop:综合监控利器
atop命令在终端中提供了全面的系统监控,包括CPU、内存、网络和I/O等,尤其在处理高负载时,它还会以色彩鲜明的方式突出显示关键信息,便于快速识别。
3. free:快速概览
free命令是查看内存使用情况的简洁方式,它将/proc/meminfo中的信息做了精炼和概述,让你一目了然。
4. GNOME System Monitor和KDE System Monitor:直观界面
GNOME和KDE系统监视器提供了直观的图形界面,实时显示CPU、内存和交换空间使用,轻松查看系统状况。
5. htop:实时进程内存使用
htop命令以实时、动态的方式展示每个进程的内存使用情况,包括进程内存大小、共享库大小等,方便对资源分配进行深入分析。
6. smem:详细分析
smem命令则用于深入分析/proc信息,提供基于不同进程和用户的内存使用统计,并支持生成图表以可视化数据。
7. top:实时进程监控
top命令是实时运行程序资源监控的全能工具,你可以根据内存使用情况对进程进行排序,便于管理。
8. vmstat:深入统计
vmstat命令提供了实时和平均统计,包括内存、CPU和I/O,让你全面掌握系统状态。
以上只是Linux内存监控的冰山一角,每个工具都有其独特的优势,根据需要选择最合适的工具,能让你在系统优化中游刃有余。如果你需要更多学习资源,如Linux进阶教程、视频课程等,尽管来找我,我会尽我所能提供帮助,无需套路,直接获取。
请注意:虽然我以前分享过一些学习资料,但这里只专注于内存监控,不再提及具体资源链接和个人网站信息。如果你想了解更多Linux学习资源,请直接私信或访问相关网站获取。感谢您的支持和关注!
几个常用的Linux操作系统监控脚本代码
本文介绍了几个常用的Linux监控脚本,可以实现主机网卡流量、系统状况、主机磁盘空间、CPU和内存的使用情况等方面的自动监控与报警。根据自己的需求写出的shell脚本更能满足需求,更能细化主机监控的全面性。
最近时不时有互联网的朋友问我关于服务器监控方面的问题,问常用的服务器监控除了用开源软件,比如:cacti,nagios监控外是否可以自己写shell脚本呢?根据自己的需求写出的shell脚本更能满足需求,更能细化主机监控的全面性。
下面是我常用的几个主机监控的脚本,大家可以根据自己的情况再进行修改,希望能给大家一点帮助。
1、查看主机网卡流量
复制代码代码如下:
#!/bin/bash#network#Mike.Xu while:; do time='date+%m"-"%d""%k":"%M' day='date+%m"-"%d' rx_before='ifconfig eth0|sed-n"8"p|awk'{print$2}'|cut-c7-' tx_before='ifconfig eth0|sed-n"8"p|awk'{print$6}'|cut-c7-' sleep 2 rx_after='ifconfig eth0|sed-n"8"p|awk'{print$2}'|cut-c7-' tx_after='ifconfig eth0|sed-n"8"p|awk'{print$6}'|cut-c7-' rx_result=$[(rx_after-rx_before)/256] tx_result=$[(tx_after-tx_before)/256] echo"$time Now_In_Speed:"$rx_result"kbps Now_OUt_Speed:"$tx_result"kbps" sleep 2 done
2、系统状况监控
复制代码代码如下:
#!/bin/sh#systemstat.sh#Mike.Xu IP=192.168.1.227 top-n 2| grep"Cpu"》./temp/cpu.txt free-m| grep"Mem"》./temp/mem.txt df-k| grep"sda1"》./temp/drive_sda1.txt#df-k| grep sda2》./temp/drive_sda2.txt df-k| grep"/mnt/storage_0"》./temp/mnt_storage_0.txt df-k| grep"/mnt/storage_pic"》./temp/mnt_storage_pic.txt time=`date+%m"."%d""%k":"%M` connect=`netstat-na| grep"219.238.148.30:80"| wc-l` echo"$time$connect"》./temp/connect_count.txt
3、监控主机的磁盘空间,当使用空间超过90%就通过发mail来发警告
复制代码代码如下:
#!/bin/bash#monitor available disk space SPACE='df| sed-n'//$/ p'| gawk'{print$5}'| sed's/%//' if [$SPACE-ge 90 ] then fty89@163.com fi
4、监控CPU和内存的使用情况
复制代码代码如下:
#!/bin/bash#script to capture system statistics OUTFILE=/home/xu/capstats.csv
DATE='date+%m/%d/%Y'
TIME='date+%k:%m:%s'
TIMEOUT='uptime'
VMOUT='vmstat 1 2'
USERS='echo$TIMEOUT| gawk'{print$4}''
LOAD='echo$TIMEOUT| gawk'{print$9}'| sed"s/,//''
FREE='echo$VMOUT| sed-n'/[0-9]/p'| sed-n'2p'| gawk'{print$4}''
IDLE='echo$VMOUT| sed-n'/[0-9]/p'| sed-n'2p'|gawk'{print$15}''
echo"$DATE,$TIME,$USERS,$LOAD,$FREE,$IDLE"》$OUTFILE
5、全方位监控主机
复制代码代码如下:
#!/bin/bash# check_xu.sh# 0****/home/check_xu.sh DAT="`date+%Y%m%d`" HOUR="`date+%H`" DIR="/home/oslog/host_${DAT}/${HOUR}" DELAY=60 COUNT=60# whether the responsible directory exist if! test-d${DIR} then/bin/mkdir-p${DIR} fi# general check export TERM=linux/usr/bin/top-b-d${DELAY}-n${COUNT}${DIR}/top_${DAT}.log 21# cpu check/usr/bin/sar-u${DELAY}${COUNT}${DIR}/cpu_${DAT}.log 21#/usr/bin/mpstat-P 0${DELAY}${COUNT}${DIR}/cpu_0_${DAT}.log 21#/usr/bin/mpstat-P 1${DELAY}${COUNT}${DIR}/cpu_1_${DAT}.log 21# memory check/usr/bin/vmstat${DELAY}${COUNT}${DIR}/vmstat_${DAT}.log 21# I/O check/usr/bin/iostat${DELAY}${COUNT}${DIR}/iostat_${DAT}.log 21# network check/usr/bin/sar-n DEV${DELAY}${COUNT}${DIR}/net_${DAT}.log 21#/usr/bin/sar-n EDEV${DELAY}${COUNT}${DIR}/net_edev_${DAT}.log 21
放在crontab里每小时自动执行:
0****/home/check_xu.sh
这样会在/home/oslog/host_yyyymmdd/hh目录下生成各小时cpu、内存、网络,IO的统计数据。
如果某个时间段产生问题了,就可以去看对应的日志信息,看看当时的主机性能如何。
Linux系统监控要用到哪些命令
记录一下自己常用的linux系统命令,方便以后查阅,发觉记忆越来越不行了
找到最耗CPU的java线程ps命令
命令:ps-mp pid-o THREAD,tid,time或者 ps-Lfp pid
结果展示:
这个命令的作用,主要是可以获取到对应一个进程下的线程的一些信息。比如你想分析一下一个java进程的一些运行瓶颈点,可以通过该命令找到所有当前Thread的占用CPU的时间,也就是这里的最后一列。
比如这里找到了一个TID: 30834,所占用的TIME时间最高。
通过 printf"%x\n" 30834首先转化成16进制,继续通过jstack命令dump出当前的jvm进程的堆栈信息。通过Grep命令即可以查到对应16进制的线程id信息,很快就可以找到对应最耗CPU的代码快在哪。
简单的解释下,jstack下这一串线程信息内容:
"DboServiceProcessor-4-thread-295" daemon prio=10 tid=0x00002aab047a9800 nid=0x7d9b waiting on condition [0x0000000046f66000]
nid:对应的linux操作系统下的tid,就是前面转化的16进制数字
tid:这个应该是jvm的jmm内存规范中的唯一地址定位,如果你详细分析jvm的一些内存数据时用得上,我自己还没到那种程度,所以先放下
top命令
命令:top-Hp pid
结果显示:
和前面的效果一下,你可以实时的跟踪并获取指定进程中最耗cpu的线程。再用前面的方法提取到对应的线程堆栈信息。
判断I/O瓶颈
mpstat命令
命令:mpstat-P ALL 1 1000
结果显示:
注意一下这里面的%iowait列,CPU等待I/O操作所花费的时间。这个值持续很高通常可能是I/O瓶颈所导致的。
通过这个参数可以比较直观的看出当前的I/O操作是否存在瓶颈
iostat命令
命令: iostat-m-x 1 1000
同样你可以观察对应的CPU中的%iowait数据,除此之外iostat还提供了一些更详细的I/O状态数据,比如比较重要的有:
avgqu-sz: The average queue length of the requests that were issued to the device.(磁盘队列的请求长度,正常的话2,3比较好。可以和cpu的load一样的理解)
await: The average time(in milliseconds) for I/O requests issued to the device to be served.(代表一个I/O操作从wait到完成的总时间)
svctm和%util都是代表处理该I/O请求花费的时间和CPU的时间比例。判断是否瓶颈时,这两个参数不是主要的
r/s w/s和 rMB/s wMB/s都是代表当前系统处理的I/O的一些状态,前者是我们常说的tps,后者就是吞吐量。这也是评价一个系统的性能指标
pid命令
命令: pidstat-p pid-u-d-t-w-h 1 1000
结果显示:
相当实用的一个命令,可以基于当个进程分析对应的性能数据,包括CPU,I/O,IR, CS等,可以方便开发者更加精细化的观察系统的运行状态。不过pidstat貌似是在2.6内核的一些较新的版本才有,需要安装sysstat包。
ubuntu下,可以通过sudo apt-get install sysstat进行安装。
sar命令
命令:sar-x pid 1 1000
sar也可以指定对应的pid,关注固定的几个参数,没有pidstat那么强大。看不到对应的I/O, IR等信息。
sar的功能可以覆盖mpstat, iostat的相关功能。
dstat命令
命令:dstat-y--tcp 1 1000
通过dstat--tcp可以比较方便的看到当前的tcp的各种状态,不需要每次netstat-nat去看
其他命令
netstat-natp:查看对应的网络链接,关注下Recv-Q, Send-Q, State。
lsof-p pid:查找对应pid的文件句柄
lsof-i: 80:查找对应端口被哪个进程占用
lsof/tmp/1.txt:查找对应文件被哪个进程占用
tcpdump/ wireshark:抓包分析工具
jstat/ jmap/ jstack/ jps等一系列的java监控命令
最后
如果你想做一些性能调优的工作,一定要善于利用一些工具进行关注相应的状态。通过linux命令你可以比较方便的观测到CPU, I/O, network等一些比较外围的状态,很多时候就已经可以解决大部分的问题。jvm内部的一些运行状态监控,得需要借助一些特有的工具进行细粒度的观测。