top -b -d 60 -p "$eef_pid" >/tmp/test.txt & 通过/tmp/test.txt文件制图,用%CPU,%MEM绘图
时间: 2023-12-14 14:38:30 浏览: 119
可以使用一些工具来绘制CPU和内存的图像,比如gnuplot和matplotlib。在这里,我们可以使用matplotlib来绘制这些图像。以下是一个简单的Python脚本,可以读取/tmp/test.txt文件中的数据,然后绘制CPU和内存的图像:
```python
import matplotlib.pyplot as plt
# 读取数据
with open('/tmp/test.txt') as f:
lines = f.readlines()
# 提取CPU和内存数据
cpu_data = []
mem_data = []
for line in lines:
if 'PID' in line:
continue
fields = line.split()
cpu_data.append(float(fields[8]))
mem_data.append(float(fields[9]))
# 绘制图像
plt.plot(cpu_data, label='%CPU')
plt.plot(mem_data, label='%MEM')
plt.legend()
plt.show()
```
将上述代码保存为一个Python文件,比如test.py,然后在命令行中执行:
```
python test.py
```
这将会绘制出CPU和内存的图像。您可以根据需要调整代码以适应您的需求,比如添加标题、坐标轴标签等等。
相关问题
持续查询 eef 进程的 pid while true do #查询进程pid eef_pid=$(pgrep eef) if [ -n "$eef_pid" ]; then # 执行 top 命令,输出到 /tmp/test.txt top -b -d 60 -p "$eef_pid" >/tmp/test.txt # 记录top命令的进程号 top_pid=$! break fi #暂停1s后继续查询 sleep 1 done 修改代牧,使eef进程结束时,kill top命令
你可以尝试这样修改代码:
```bash
#!/bin/bash
# 查询进程pid,并不断查询直到找到为止
while true; do
eef_pid=$(pgrep eef)
if [ -n "$eef_pid" ]; then
# 执行 top 命令,输出到 /tmp/test.txt
top -b -d 60 -p "$eef_pid" >/tmp/test.txt &
top_pid=$! # 记录top命令的进程号
wait "$top_pid" # 等待top命令结束
break
fi
#暂停1s后继续查询
sleep 1
done
```
这样修改后,当eef进程结束时,会自动结束top命令。使用`wait`命令等待top命令结束的原因是,必须等待top命令执行完毕后,才能执行break退出循环,否则会导致top命令一直运行下去。
写一个shell脚本,查询eef进程的pid,并执行top -n 600 -b -d 60 -p pid >/tmp/test。txt
可以尝试以下脚本:
```bash
#!/bin/bash
# 查询 eef 进程的 pid
pid=$(ps aux | grep eef | grep -v grep | awk '{print $2}')
# 执行 top 命令,并将结果输出到 /tmp/test.txt
top -n 600 -b -d 60 -p $pid >/tmp/test.txt
```
解释一下:
首先使用 `ps aux` 命令查找所有进程,然后使用 `grep` 命令找到包含 eef 的进程,再通过 `awk` 命令获取进程的 pid。
然后使用 `top` 命令监控进程的运行情况,其中 `-n` 参数指定 top 命令执行的次数,本例中是 600 次;`-b` 参数表示以批处理模式运行 top 命令,不需要交互式输入;`-d` 参数表示 top 命令每次更新的时间间隔,本例中是 60 秒;`-p` 参数指定要监控的进程 pid。最后,将 top 命令的输出结果重定向到 `/tmp/test.txt` 文件。
阅读全文