帮我写一个监控linux cpu的脚本
时间: 2023-03-30 12:03:45 浏览: 106
好的,我可以帮您编写一个监控 Linux CPU 的脚本。以下是示例代码:
#!/bin/bash
while true
do
cpu_usage=$(top -b -n1 | grep "Cpu(s)" | awk '{print $2 + $4}')
echo "CPU使用率: $cpu_usage%"
sleep 5
done
这个脚本会每隔5秒钟输出一次当前的 CPU 使用率。您可以将其保存为一个文件,例如 cpu_monitor.sh,然后在终端中执行该文件即可开始监控。
相关问题
帮我写一个shell脚本,用来监控linux的各项指标
### 回答1:
好的,以下是一个简单的 shell 脚本,用来监控 Linux 的各项指标:
```
#!/bin/bash
# 获取当前时间
time=$(date +"%Y-%m-%d %H:%M:%S")
# 获取 CPU 使用率
cpu_usage=$(top -bn1 | grep load | awk '{printf "%.2f%%\n", $(NF-2)}')
# 获取内存使用率
mem_usage=$(free -m | awk 'NR==2{printf "%.2f%%\n", $3*100/$2 }')
# 获取磁盘使用率
disk_usage=$(df -h | awk '$NF=="/"{printf "%s\n", $5}')
# 输出监控结果
echo "Time: $time"
echo "CPU Usage: $cpu_usage"
echo "Memory Usage: $mem_usage"
echo "Disk Usage: $disk_usage"
```
这个脚本使用了 `top`、`free` 和 `df` 命令来获取 CPU、内存和磁盘使用率,并将结果输出到控制台。您可以根据需要调整脚本中的参数,或添加更多的监控项。
### 回答2:
以下是一个用于监控Linux各项指标的简单的shell脚本:
```shell
#!/bin/bash
# CPU使用率
cpu_usage=$(top -bn1 | grep "Cpu(s)" | awk '{print $2 + $4}')
echo "CPU使用率: $cpu_usage%"
# 内存使用情况
total_memory=$(free -m | grep "Mem:" | awk '{print $2}')
used_memory=$(free -m | grep "Mem:" | awk '{print $3}')
free_memory=$(free -m | grep "Mem:" | awk '{print $4}')
echo "总内存: $total_memory MB"
echo "已使用内存: $used_memory MB"
echo "剩余内存: $free_memory MB"
# 磁盘使用情况
disk_usage=$(df -h / | awk '/\// {print $5}')
echo "磁盘使用率: $disk_usage"
# 系统负载
load_average=$(uptime | awk '{print $10 $11 $12}')
echo "系统负载: $load_average"
# 网络连接数
tcp_connections=$(netstat -an | grep ESTABLISHED | wc -l)
echo "TCP连接数: $tcp_connections"
# 进程数
process_count=$(ps -A --no-headers | wc -l)
echo "进程数: $process_count"
# 当前时间
current_time=$(date +"%Y-%m-%d %H:%M:%S")
echo "当前时间: $current_time"
```
将以上脚本保存为一个以.sh为后缀的文件(例如monitor.sh),在Linux终端中运行该脚本可以获取并显示CPU使用率、内存使用情况、磁盘使用情况、系统负载、网络连接数、进程数以及当前时间等各项指标信息。
### 回答3:
当使用Shell脚本来监控Linux的各项指标时,我们可以使用系统的命令和工具来获取和分析信息。下面是一个示例的Shell脚本来监控一些常见的Linux指标:
```shell
#!/bin/bash
# 获取CPU利用率
cpu_usage=$(top -b -n 1 | grep "Cpu(s)" | awk '{print $2}' | awk -F. '{print $1}')
# 获取内存利用率
memory_usage=$(free | grep Mem | awk '{print $3/$2 * 100.0}')
# 获取磁盘利用率
disk_usage=$(df -h | awk '$NF=="/"{print $(NF-1)}' | sed 's/%//')
# 获取网络连接数
network_connections=$(netstat -an | grep ESTABLISHED | wc -l)
# 输出指标信息
echo "CPU利用率: $cpu_usage%"
echo "内存利用率: $memory_usage%"
echo "磁盘利用率: $disk_usage%"
echo "网络连接数: $network_connections"
# 更多监控指标可以根据需求添加...
```
在此示例中,我们使用top命令获取CPU利用率,用free命令获取内存利用率,用df命令获取磁盘利用率,用netstat命令获取当前的网络连接数。然后,我们使用awk来提取所需的数据,并使用echo语句将其打印出来。
当执行上述脚本时,将输出CPU利用率、内存利用率、磁盘利用率和网络连接数等指标信息。你可以根据需要添加更多的指标监控项。
监控linux服务端各进程cpu脚本
监控Linux服务端各进程CPU的脚本可以使用如下步骤实现:
1. 使用ps命令获取当前运行的进程列表和其对应的PID(进程ID)。
2. 遍历进程列表,使用top命令获取每个进程的CPU使用率。
3. 将进程的PID和对应的CPU使用率存储在一个字典中。
4. 根据需要,可以对字典按照CPU使用率进行排序,以便于查看占用CPU最多的进程。
5. 输出每个进程的PID和CPU使用率。
6. 可以将脚本设置为定时任务,周期性地执行,以实时监控进程的CPU使用情况。
以下是一个示例的监控脚本:
```
#!/bin/bash
# 使用ps命令获取运行进程列表和PID
process_list=($(ps -e -o comm,pid | awk '{print $1 ":" $2}'))
# 定义存储进程和CPU使用率的字典
declare -A cpu_usage
# 遍历进程列表
for process in "${process_list[@]}"
do
# 获取进程名和PID
name=${process%%:*}
pid=${process#*:}
# 使用top命令获取进程的CPU使用率
cpu=$(top -b -n 1 -p $pid | grep $pid | awk '{print $9}')
# 将进程的PID和CPU使用率添加到字典中
cpu_usage[$pid]=$cpu
done
# 排序字典按CPU使用率进行降序排序
sorted_cpu_usage=($(for key in ${!cpu_usage[@]}; do echo $key"="${cpu_usage[$key]}; done | sort -rn -t"=" -k2))
# 输出进程的PID和CPU使用率
for process in "${sorted_cpu_usage[@]}"
do
pid=${process%=*}
cpu=${process#*=}
echo "进程PID:$pid,CPU使用率:$cpu%"
done
```
注意:请在运行该脚本之前确保你拥有执行权限。另外,该脚本输出的CPU使用率为每个进程的实时值,因此可以在脚本中将其加入到定时任务中,实现周期性监控。