【shell】简单监控系统cpu、disk、mem、process的信息脚本

脚本如下

#!/bin/bash
#获取时间
get_time=$(date +%Y%m%d%H%M%S)

#监控cpu信息
cpu_info() {
	top -bn1 |awk '/^%Cpu/{print $2,$4,$8}'|while read us sy idle
	do
		used_cpu=$(echo "100 - $idle"|bc)	
		echo "$get_time CPU使用率 user process: ${us}% system process: ${sy}% idle: ${idle}% used: ${used_cpu}%" | tee -a /var/log/performance_usage.log
	done
}

#监控内存信息
mem_info() {
	free -m|awk '/^Mem/{print $2,$3,$4,$6,$7}'|while read  total used free buff_cache available
	do
		echo "$get_time 内存信息 total: ${total}M  used: ${used}M free: ${free}M buff_cache: ${buff_cache}M available: ${available}M" | tee -a /var/log/performance_usage.log
	done
}

#监控磁盘的信息
disk_info() {
	df -Th|awk '/\/$|boot$|home$/{print $3,$5,$7}'|while read size avail mountpoint
	do
		disk_number=$(lsblk |awk '/disk/{print $1,$4}')
		echo "$get_time Disk信息  mountpoint: ${mountpoint} size: ${size} avail: ${avail} disk_size_info: ${disk_number}" | tee -a /var/log/performance_usage.log
	done
}

#监控进程的信息
process_info() {
	#获取进程运行线管信息
	top -bn1 |awk '/^Tasks/{print "process_total:"$2,"running:"$4,"sleeping:"$6,"stopped:"$8,"zombie:"$10}' | tee -a /var/log/performance_usage.log
	#获取cpu使用量前五
	ps aux --sort=%cpu|awk 'NR>1  {print "pid:"$2,"cpu:"$3,"process:"$11}'|tail -5 | tee -a /var/log/performance_usage.log
	#获取mem使用量前五
	ps aux --sort=%mem|awk 'NR>1  {print "pid:"$2,"mem:"$4,"process:"$11}'|tail -5 | tee -a /var/log/performance_usage.log
}

#调用cpu_info函数
cpu_info

#调用mem_info函数
mem_info

#调用disk_info函数
disk_info

#调用process_info函数
process_info

效果

[root@localhost shell]# bash monitor.sh 
20250308150855 CPU使用率 user process: 0.0% system process: 3.3% idle: 96.7% used: 3.3%
20250308150855 内存信息 total: 1819M  used: 615M free: 456M buff_cache: 747M available: 1037M
20250308150855 Disk信息  mountpoint: / size: 17G avail: 15G disk_size_info: sda 20G
20250308150855 Disk信息  mountpoint: /boot size: 1014M avail: 864M disk_size_info: sda 20G
process_total:127 running:1 sleeping:126 stopped:0 zombie:0
pid:31467 cpu:0.2 process:sshd:
pid:31494 cpu:0.2 process:/root/.vscode-server/code-e54c774e0add60467559eb0d1e229c6452cf8447
pid:17678 cpu:0.3 process:/root/.vscode-server/cli/servers/Stable-e54c774e0add60467559eb0d1e229c6452cf8447/server/node
pid:17908 cpu:0.3 process:/root/.vscode-server/cli/servers/Stable-e54c774e0add60467559eb0d1e229c6452cf8447/server/node
pid:31523 cpu:0.5 process:/root/.vscode-server/cli/servers/Stable-e54c774e0add60467559eb0d1e229c6452cf8447/server/node
pid:17715 mem:2.6 process:/root/.vscode-server/cli/servers/Stable-e54c774e0add60467559eb0d1e229c6452cf8447/server/node
pid:17678 mem:4.2 process:/root/.vscode-server/cli/servers/Stable-e54c774e0add60467559eb0d1e229c6452cf8447/server/node
pid:17908 mem:5.2 process:/root/.vscode-server/cli/servers/Stable-e54c774e0add60467559eb0d1e229c6452cf8447/server/node
pid:31523 mem:5.6 process:/root/.vscode-server/cli/servers/Stable-e54c774e0add60467559eb0d1e229c6452cf8447/server/node
pid:46379 mem:6.5 process:/usr/sbin/mariadbd

你可能感兴趣的:(shell编程,linux,运维,服务器)