shell 获取 linux cpu利用率
时间: 2023-02-10 08:19:41 浏览: 194
可以使用 `top` 或 `mpstat` 命令来查看 CPU 利用率。
使用 `top` 命令:
1. 打开终端并输入 `top` 命令
2. 按 `Shift + M` 键按字母表顺序排序所有进程的 CPU 利用率。
3. CPU 利用率信息将出现在第一行,格式为 `%Cpu(s):` 后面跟着数字。
使用 `mpstat` 命令:
1. 在终端中输入 `mpstat` 命令。
2. 可以使用 `-P ALL` 参数查看所有 CPU 的利用率信息。
3. CPU 利用率信息将出现在第三列,格式为 `%usr`,`%nice`,`%sys` 和 `%iowait` 等。
相关问题
linux计算进程cpu利用率公式,Linux 系统cpu利用率计算(shell版)
Linux计算进程CPU利用率公式:
进程CPU利用率 = 进程占用CPU时间 / 系统总CPU时间
Linux系统CPU利用率计算(shell版):
1. 获取系统总CPU时间
total_cpu_time=$(awk '/cpu /{print $2+$3+$4+$5+$6+$7+$8+$9+$10}' /proc/stat)
2. 获取进程占用CPU时间
pid=进程ID
proc_cpu_time=$(awk -v pid=$pid '$1 == "Pid:" && $2 == pid {sum = $14 + $15; exit} END {print sum}' /proc/$pid/stat)
3. 计算进程CPU利用率
cpu_usage=$(echo "scale=2; $proc_cpu_time/$total_cpu_time*100" | bc)
其中,/proc/stat 文件中的第一行包含着系统总CPU时间,第二行开始每行代表一个CPU核的使用情况。
/proc/[pid]/stat 文件包含了进程的各种信息,其中第14列和第15列分别代表了该进程在用户态和内核态下消耗的CPU时间。
以上是一个简单的计算方式,实际情况可能会更加复杂,需要根据具体场景进行优化和调整。
shell脚本完成 cpu, mem利用率的监测。脚本每五秒记录一次当前cpu, mem利用率,每一条信息包含的当前时间,cpu利用率,mem利用率。 保存到log.txt文件中。程序运行时间1min。
### 回答1:
下面是一个简单的shell脚本,可以实现你的要求。你可以使用 `top` 命令获取 CPU 和内存占用率,并使用 `date` 命令获取当前时间。然后使用 `sleep` 命令来等待 5 秒,以便下一次记录。最后,将这些信息写入 log.txt 文件。
```
#!/bin/bash
# 输出文件头部
echo "时间, CPU利用率, 内存利用率" > log.txt
# 循环 12 次,每次等待 5 秒
for i in {1..12}
do
# 获取当前时间
current_time=$(date +"%Y-%m-%d %H:%M:%S")
# 获取 CPU 和内存占用率
cpu_usage=$(top -bn1 | grep load | awk '{printf "%.2f%%\t\t\n", $(NF-2)}')
mem_usage=$(free | awk 'NR==2{printf "%.2f%%\t\t", $3/$2*100}')
# 将信息写入文件
echo "$current_time, $cpu_usage, $mem_usage" >> log.txt
# 等待 5 秒
sleep 5
done
```
请注意,这个脚本是在 Linux 系统上编写的,如果你在其他操作系统上运行它,可能需要进行一些修改。
### 回答2:
可以使用以下的Shell脚本实现对CPU和内存利用率的监测,并将每次的记录保存到log.txt文件中:
```shell
#!/bin/bash
DURATION=60
INTERVAL=5
end_time=$((SECONDS+DURATION))
log_file="log.txt"
echo "当前时间 CPU利用率(%) 内存利用率(%)" > $log_file
while [ $SECONDS -lt $end_time ]
do
timestamp=$(date +"%Y-%m-%d %H:%M:%S")
cpu_usage=$(top -bn1 | awk 'NR==3{print 100-$8}' | cut -c 1-5)
mem_usage=$(free | awk 'NR==2{printf "%.2f", ($3/($3+$4)*100)}')
echo "$timestamp $cpu_usage $mem_usage" >> $log_file
sleep $INTERVAL
done
```
这段脚本首先设置了监测的总时长为60秒,每次记录之间的间隔为5秒,并指定了log.txt作为保存信息的文件。
在脚本的主循环中,通过调用top命令获取当前的CPU利用率,并借助awk和cut命令进行处理,然后使用free命令获取当前的内存利用率,并进行计算和格式化。最后,将当前时间、CPU利用率和内存利用率写入log.txt文件中。
脚本每次记录后会通过sleep命令暂停5秒,然后再进行下一次的记录,直到总时长达到60秒为止。
运行脚本后,即可根据实际情况查看log.txt文件中保存的CPU和内存利用率信息。
### 回答3:
要完成CPU和内存利用率的监测,可以使用Shell脚本编写一个循环,每五秒记录一次当前的CPU和内存利用率,并将每次记录的时间、CPU利用率和内存利用率保存到log.txt文件中。下面是一个简单的示例脚本:
```shell
#!/bin/bash
duration=60 # 程序运行时间1min,单位为秒
interval=5 # 每隔5秒记录一次
end_time=$(( SECONDS + duration )) # 计算结束时间
echo "时间 CPU利用率 Mem利用率" > log.txt # 初始化log.txt文件,写入表头
while [ $SECONDS -lt $end_time ]; do
current_time=$(date "+%Y-%m-%d %H:%M:%S") # 获取当前时间
cpu_utilization=$(top -bn1 | grep "Cpu(s)" | awk '{print $2 + $4}') # 获取当前CPU利用率
mem_utilization=$(free | awk '/Mem/{printf "%.2f", $3/$2 * 100}') # 获取当前内存利用率
echo "$current_time $cpu_utilization% $mem_utilization%" >> log.txt # 将当前时间、CPU利用率和内存利用率记录到log.txt文件中
sleep $interval
done
```
在脚本中,我们通过SECONDS变量来计时,循环执行直到达到指定的运行时间。在每次循环中,我们使用`date`命令获取当前时间,使用`top`命令获取当前CPU利用率,使用`free`命令获取当前内存利用率,并将这些信息写入log.txt文件。最后使用`sleep`命令来等待5秒。脚本运行结束后,log.txt文件会包含每隔五秒记录的时间、CPU利用率和内存利用率信息。
阅读全文