怎样编写高效的服务器监控Shell脚本

发布时间:2025-05-15 16:41:38 作者:小樊
来源:亿速云 阅读:92

编写高效的服务器监控Shell脚本可以帮助你实时了解服务器的性能和状态。以下是一个基本的模板和一些常用的监控命令,你可以根据自己的需求进行扩展和修改。

基本模板

#!/bin/bash

# 设置日志文件路径
LOG_FILE="/var/log/server_monitor.log"

# 获取当前日期和时间
DATE=$(date +"%Y-%m-%d %H:%M:%S")

# 记录开始时间
echo "Server monitoring started at $DATE" >> $LOG_FILE

# 监控CPU使用率
CPU_USAGE=$(top -bn1 | grep load | awk '{printf("CPU Load: %.2f%%\n", $(NF-2))}')
echo "$CPU_USAGE" >> $LOG_FILE

# 监控内存使用率
MEMORY_USAGE=$(free | grep Mem | awk '{printf("Memory Usage: %.2f%%\n", $3/$2 * 100)}')
echo "$MEMORY_USAGE" >> $LOG_FILE

# 监控磁盘使用率
DISK_USAGE=$(df -h | grep -vE '^Filesystem|tmpfs|cdrom' | awk '{ print $5 " " $1 }' | while read output;
do
 echo $output >> $LOG_FILE
done

# 监控网络流量
NETWORK_TRAFFIC=$(ifconfig eth0 | grep 'RX packets' | awk '{print "Network Traffic (Received): " $4}')
echo "$NETWORK_TRAFFIC" >> $LOG_FILE

# 监控进程数
PROCESS_COUNT=$(ps -e | wc -l)
echo "Number of running processes: $PROCESS_COUNT" >> $LOG_FILE

# 记录结束时间
echo "Server monitoring ended at $DATE" >> $LOG_FILE

详细说明

  1. 日志文件路径:设置一个日志文件路径,方便后续查看监控记录。
  2. 日期和时间:获取当前日期和时间,方便记录监控开始和结束的时间。
  3. CPU使用率:使用top命令获取CPU负载,并通过awk提取相关信息。
  4. 内存使用率:使用free命令获取内存使用情况,并通过awk计算使用率。
  5. 磁盘使用率:使用df命令获取磁盘使用情况,并通过awk提取相关信息。
  6. 网络流量:使用ifconfig命令获取网络接口的接收数据包数量。
  7. 进程数:使用ps命令获取当前运行的进程数。

扩展功能

你可以根据需要添加更多的监控功能,例如:

示例:监控特定进程

# 监控特定进程
PROCESS_NAME="nginx"
PROCESS_COUNT=$(pgrep -c $PROCESS_NAME)
if [ $PROCESS_COUNT -eq 0 ]; then
 echo "Process $PROCESS_NAME is not running!" >> $LOG_FILE
fi

示例:监控磁盘I/O

# 监控磁盘I/O
DISK_IO=$(iostat -dx | grep sda | awk '{print "Disk I/O: " $3 " kB/s read, " $7 " kB/s write"}')
echo "$DISK_IO" >> $LOG_FILE

通过这些示例和扩展功能,你可以编写一个功能全面的服务器监控Shell脚本,帮助你实时了解服务器的性能和状态。

推荐阅读:
  1. 如何高效进行服务器运维
  2. Sysadmin必学的系统管理技巧有哪些

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

服务器运维

上一篇:如何优化服务器性能的Shell脚本技巧

下一篇:Shell脚本在服务器备份中的应用有哪些

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》