shell监控多个进程名的cpu、内存并输出结果
时间: 2023-08-02 07:07:18 浏览: 107
可以使用 shell 脚本结合 ps 和 awk 命令来实现监控多个进程名的 CPU、内存,并输出结果。
以下是一个简单的脚本示例:
```
#!/bin/bash
# 定义要监控的进程名
processes=("process1" "process2" "process3")
# 循环遍历要监控的进程
for process in "${processes[@]}"
do
# 使用 ps 和 awk 命令获取进程的 PID、CPU 和内存信息
pid=$(ps -ef | grep "$process" | grep -v grep | awk '{print $2}')
cpu=$(ps -p "$pid" -o %cpu | awk 'NR==2')
mem=$(ps -p "$pid" -o %mem | awk 'NR==2')
# 输出进程的 PID、CPU 和内存信息
echo "Process Name: $process"
echo "PID: $pid"
echo "CPU Usage: $cpu%"
echo "Memory Usage: $mem%"
echo ""
done
```
在脚本中,首先定义了要监控的进程名,然后使用 for 循环遍历每个进程,使用 ps 和 awk 命令获取进程的 PID、CPU 和内存信息,最后输出这些信息。
注意,以上脚本仅为示例,实际应用中还需要对输出进行格式化、添加时间戳等处理。
相关问题
shell 根据多个进程名监控多个进程的cpu、内存,并输出
可以使用 shell 脚本结合 ps、awk 和 top 命令实现监控多个进程的 CPU 和内存占用情况,并输出到日志文件中。以下是一个示例脚本:
```sh
#!/bin/bash
# 定义需要监控的进程名称和记录日志的文件名
process_names=("process1" "process2" "process3")
log_file="process_monitor.log"
# 循环遍历进程名称,获取进程 ID
for process_name in ${process_names[@]}
do
pid=$(ps -ef | grep $process_name | grep -v grep | awk '{print $2}')
# 如果进程存在,则监控 CPU 和内存占用情况
if [ -n "$pid" ]
then
echo "$(date) - Monitoring $process_name (PID: $pid)" >> $log_file
top -b -n 1 -p $pid | grep $pid >> $log_file
else
echo "$(date) - $process_name not running" >> $log_file
fi
done
```
以上脚本使用 ps 命令获取进程 ID,然后使用 top 命令监控进程的 CPU 和内存占用情况,并将结果输出到日志文件中。可以将脚本添加到 crontab 中,定时执行监控任务。
shell监控多个进程名的cpu、内存并以文档的形式输出性能结果
可以使用 shell 脚本结合 awk 命令来实现监控多个进程名的 CPU 和内存占用情况,并将结果输出到文档中。具体实现步骤如下:
1. 首先使用 ps 命令获取当前运行的所有进程信息,并通过 grep 命令过滤出需要监控的进程名。例如,要监控进程名为 "nginx" 和 "mysql" 的进程,可以使用如下命令:
```
ps aux | grep -E "nginx|mysql"
```
2. 接着使用 awk 命令对进程信息进行处理,提取出需要的 CPU 和内存占用情况。例如,要获取第 3 列和第 4 列的信息,可以使用如下命令:
```
awk '{print $3,$4}'
```
3. 将步骤 1 和步骤 2 的命令结合起来,并使用重定向符号将结果输出到文档中。例如,要将结果输出到 "performance.txt" 文件中,可以使用如下命令:
```
ps aux | grep -E "nginx|mysql" | awk '{print $3,$4}' > performance.txt
```
完整的脚本代码如下:
```
#!/bin/bash
ps aux | grep -E "nginx|mysql" | awk '{print $3,$4}' > performance.txt
```
注意:以上脚本仅供参考,具体实现需要根据实际情况进行修改。例如,可以增加循环结构来定时监控进程性能,并将结果输出到不同的文档中。
阅读全文