您现在的位置是:首页 > 科技资讯科技资讯
linuxsort(如何用脚本一键获取和监控Linux系统信息和资源使用率)
编辑 2024-06-05 10:30:09 科技资讯
1. linuxsort,如何用脚本一键获取和监控Linux系统信息和资源使用率?
很高兴回答您的问题我是林创云小编,如果我的回答对你有帮助欢迎给我评论留言或者点赞加个关注!
1、利用vmstat工具监控CPU详细信息,然后基于/proc/stat计算CPU利用率进行监控,超过80报警并提取出占用cpu最高的前十进程。
vmstat是Linux系统监控工具,使用vmstat命令可以得到关于进程、内存、内存分页、堵塞IO、traps及CPU活动的信息。
r:运行队列中的进程数;b:等待IO的进程数。
swpd:已用虚拟内存大小(k);free:空闲内存大小;buff:已用缓冲大小;cache:已用缓存大小。
si:每秒从交换区写入内存的大小(kb/s);so:每秒从内存写入交换分区的大小。
bi:每秒读取的块数;bo每秒写入的块数。
in:每秒中断数,包括时钟中断;cs:每秒上下文切换数。
us(user time):用户进程执行消耗cpu时间;sy(system time):系统进程执行消耗cpu时间;id:空闲时间(包括IO等待时间);wa:等待IO时间。
/proc/stat:
这个文件包含了所有CPU活动的信息,该文件中的所有值都是从系统启动开始累计到当前时刻。可以利用其中信息计算cpu的利用率。
每行每个参数的意思为(以第一行为例,单位:jiffies,1jiffies=0.01秒):
user(62124):从系统启动开始累计到当前时刻,用户态的CPU时间,不包含 nice值为负进程。
nice(11):从系统启动开始累计到当前时刻。
system(47890):从系统启动开始累计到当前时刻,nice值为负的进程所占用的CPU时间。
idle(8715270):从系统启动开始累计到当前时刻,除硬盘IO等待时间以外其它等待时间。
iowait(84729):从系统启动开始累计到当前时刻,硬盘IO等待时间。
irq(0):从系统启动开始累计到当前时刻,硬中断时间。
softirq(1483):从系统启动开始累计到当前时刻,软中断时间。
CPU时间=user+nice+system+idle+iowait+irq+softirq。
CPU利用率=(idle2-idle1)/(cpu2-cpu1)*100。
ps aux:
显示其他用户启动的进程(a)
查看系统中属于自己的进程(x)
启动这个进程的用户和启动时间 (u)
代码如下:
#!/bin/bash
#
CPU_us=$(vmstat | awk '{print $13}' | sed -n '$p')
CPU_sy=$(vmstat | awk '{print $14}' | sed -n '$p')
CPU_id=$(vmstat | awk '{print $15}' | sed -n '$p')
CPU_wa=$(vmstat | awk '{print $16}' | sed -n '$p')
CPU_st=$(vmstat | awk '{print $17}' | sed -n '$p')
CPU1=`cat /proc/stat | grep 'cpu ' | awk '{print $2" "$3" "$4" "$5" "$6" "$7" "$8}'`
sleep 5
CPU2=`cat /proc/stat | grep 'cpu ' | awk '{print $2" "$3" "$4" "$5" "$6" "$7" "$8}'`
IDLE1=`echo $CPU1 | awk '{print $4}'`
IDLE2=`echo $CPU2 | awk '{print $4}'`
CPU1_TOTAL=`echo $CPU1 | awk '{print $1+$2+$3+$4+$5+$6+$7}'`
CPU2_TOTAL=`echo $CPU2 | awk '{print $1+$2+$3+$4+$5+$6+$7}'`
IDLE=`echo "$IDLE2-$IDLE1" | bc`
CPU_TOTAL=`echo "$CPU2_TOTAL-$CPU1_TOTAL" | bc`
#echo -e "IDLE2:$IDLE2/nIDLE1:$IDLE1/nCPU2:$CPU2_TOTAL/nCPU1:$CPU1_TOTAL"
#echo -e "IDLE:$IDLE/nCPU:$CPU_TOTAL"
RATE=`echo "scale=4;($CPU_TOTAL-$IDLE)/$CPU_TOTAL*100" | bc | awk '{printf "%.2f",$1}'`
echo -e "us=$CPU_us/tsy=$CPU_sy/tid=$CPU_id/twa=$CPU_wa/tst=$CPU_st"
echo "CPU_RATE:${RATE}%"
CPU_RATE=`echo $RATE | cut -d. -f1`
#echo "CPU_RATE:$CPU_RATE"
if [ $CPU_RATE -ge 80 ]
then echo "CPU Warn"
ps aux | grep -v USER | sort -rn -k3 | head
fi
执行效果
2、利用free工具监控内存利用率,超过80报警并提取出占用内存最高的前十进程。
代码如下:
#!/bin/bash
#
total=$(free -m | sed -n '2p' | awk '{print $2}')
used=$(free -m | sed -n '2p' | awk '{print $3}')
free=$(free -m | sed -n '2p' | awk '{print $4}')
shared=$(free -m | sed -n '2p' | awk '{print $5}')
buff=$(free -m | sed -n '2p' | awk '{print $6}')
cached=$(free -m | sed -n '2p' | awk '{print $7}')
rate=`echo "scale=2;$used/$total" | bc | awk -F. '{print $2}'`
echo -e "total/tused/tfree/tshared/tbuffer/tavailable"
echo -e "${total}M/t${used}M/t${free}M/t${shared}M/t${buff}M/t${cached}M/nrate:${rate}%"
if [ $rate -ge 80 ]
then echo "Memory Warn"
ps aux | grep -v USER | sort -rn -k4 | head
fi
执行效果
3、利用df命令监控磁盘利用率,超过80报警。
df :显示磁盘分区上的可使用的磁盘空间。
-h 以更易读的方式显示;
-P 使用POSIX的输出格式。
#!/bin/bash
#
DEV=`df -hP | grep '^/dev/*' | cut -d' ' -f1 | sort`
for I in $DEV
do dev=`df -Ph | grep $I | awk '{print $1}'`
size=`df -Ph | grep $I | awk '{print $2}'`
used=`df -Ph | grep $I | awk '{print $3}'`
free=`df -Ph | grep $I | awk '{print $4}'`
rate=`df -Ph | grep $I | awk '{print $5}'`
mount=`df -Ph | grep $I | awk '{print $6}'`
echo -e "$I:/tsize:$size/tused:$used/tfree:$free/trate:$rate/tmount:$mount"
F=`echo $rate | awk -F% '{print $1}'`
if [ $F -ge 80 ];then
echo "$mount Warn"
else echo "It's OK"
fi
done
执行效果
CPU物理信息
查看物理cpu个数:
cat /proc/cpuinfo | grep "physical id" | uniq | wc -l
查看cpu核数:
cat /proc/cpuinfo | grep "cpu cores" | uniq
查看逻辑cpu个数:
cat /proc/cpuinfo | grep "processor" | wc -l
2. wps里面没有sortby函数?
有啊你没找到吗 DP: 生活的脚步,技术的点滴... sort命令用法 sort是在Linux里非常常用的一个命令,
3. linux查看cpu个数命令?
我的回答:Linux查看cpu个数,可以分成几种信息:
1.查看CPU型号
cat /proc/cpuinfo|grep "model name"|uniq
比如Intel Xeon CPU E5-2690 v4 代表英特尔至强处理器。
2.查看CPU物理个数:
cat /proc/cpuinfo|grep "physical id"|sort|uniq|wc -l
比如2 就代表两颗物理CPU。
3.查看单个CPU的物理核数:
cat /proc/cpuinfo|grep "cpu cores"|uniq
比如14
就代表一颗物理CPU有14核
查看单颗CPU的逻辑核数:
cat /proc/cpuinfo|grep "siblings"|uniq
比如是28
如果siblings的数量是cpu cores的两倍,证明CPU支持超线程并且开启了超线程技术。
4.查看CPU总的逻辑核数:
cat /proc/cpuinfo|grep "processor"|wc -l
比如56
就代表总的逻辑核心数56。
4. linux里过滤内容的命令?
在Linux中,有多种命令可以用来过滤内容。以下是一些常用的过滤命令:
grep:用于在文件或标准输入中搜索匹配指定模式的行。
示例:grep "pattern" file.txt
awk:用于处理文本文件的工具,可以根据指定的规则对文件进行分析和处理。
示例:awk '/pattern/ {print $0}' file.txt
sed:用于对文本进行流式编辑,可以根据指定的规则对文本进行替换、删除等操作。
示例:sed 's/pattern/replacement/g' file.txt
cut:用于从文件或标准输入中提取指定字段。
示例:cut -d',' -f1 file.txt
sort:用于对文本进行排序。
示例:sort file.txt
uniq:用于去除重复的行。
示例:uniq file.txt
head:用于显示文件的前几行,默认为前10行。
示例:head -n 5 file.txt
tail:用于显示文件的后几行,默认为后10行。
示例:tail -n 5 file.txt
这些命令可以根据您的需求和具体情况进行组合使用,以实现更复杂的内容过滤和处理操作。请注意,以上示例中的"pattern"和"file.txt"需要根据实际情况进行替换
5. linux怎么进入黑色命令行?
我的回答:可以按Ctrl+alt+F2~6
就可以进入命令行模式的黑色界面了。
这个黑色的命令行是Linux的终端,可以输入各种Linux的终端命令。
比较常用的是ls pwd ps awk sed grep tar egrep sort uniq chmod chown find kill crontab at cat more head tail 等命令。
6. linux中的双竖线什么意思?
管道符号,是unix一个很强大的功能,符号为一条竖线:"|"。用法: command
1 | command
2 他的功能是把第一个命令command 1执行的结果作为command 2的输入传给command 2,例如:$ls -s|sort -nr (请注意不要复制$符号进去哦)-s 是file size,-n是numeric-sort,-r是reverse,反转该命令列出当前目录中的文档(含size),并把输出送给sort命令作为输入,sort命令按数字递减的顺序把ls的输出排序。$ls -s|sort -n按从小到大的顺序输出。当然还可进行多次操作,如下面的功能为先去除纯数字,再由sed将竖线(这里不是管道符号)替换为空格,再将结果取出来排序,再进行结果的选择显示,不明白可查看 排序和分页。cat filename |grep -v '^[0-9]*$' | sed 's/|/ /g' |sort -nrk 8 -nrk 9 |tail -n +1 |head -n 10
7. linux系统通过命令行查看cpu信息?
1、首先我们介绍lscpu命令,该条命令可以查看 CPU 和处理单元的信息。没有其他的功能。下面我们执行命令"lscpu",具体输出信息如下图所示。
2、然后我们介绍第2种方式,通过读取/proc/cpuinfo文件进行查看。输入命令"cat /proc/cpuinfo",然后回车,查看cpu整体信息。具体结果如下图所示。
3、当然我们也可以针对某些指标进行查看,比如想查看查看物理CPU个数,我们可以通过命令"cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l"。具体操作如下图所示。
4、假如我们想要查看每个物理CPU中core的个数(即核数),我们可以输入命令"cat /proc/cpuinfo| grep "cpu cores"| uniq"进行查看,具体操作如下图所示。
5、假如我们想要查看逻辑CPU的个数,可以输入命令"cat /proc/cpuinfo| grep "processor"| wc -l"进行查看,具体操作如下图所示。
6、假如我们想要查看cpu的型号,可以输入命令"cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c"进行查看,具体操作如下图所示。
本文标签:
很赞哦! ()