监控单个进程的CPU和内存使用情况

监控单个进程的CPU和内存使用情况

我需要监视 AIX 服务器中单个进程的 CPU 和内存使用情况。该程序每天运行 3 次。我需要找到在某些时间间隔内(比如每 10 分钟)捕获统计数据的方法。

答案1

我建议收集整体系统统计数据nmon并解析它们nmon-analyzer或者nmon2rrd- 即使它只是针对一个进程。拥有一些相关的东西是有用的。svmon也可用于监控内存使用情况。

以下是一些有关 AIX 进程和系统监控的好文章:

答案2

我认为 aix 的工作方式类似于 gnu/linux。在 /etc/cron.d/ 中创建一个文件。我们称之为“监视器”,将grep processname部分更改为您的进程名称

# +---------------- minute (0 - 59)
# |  +------------- hour (0 - 23)
# |  |  +---------- day of month (1 - 31)
# |  |  |  +------- month (1 - 12)
# |  |  |  |  +---- day of week (0 - 6) (Sunday=0 or 7)
# |  |  |  |  |
# *  *  *  *  *  user    command to be executed
*/10 *  *  *  *  root    ps aux | grep processname >>/var/log/mylog.log

将以下行添加到 /var/log/mylog.log

USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND

如果您没有 root,则可以以用户身份启动 crontab -e,在 ps aux 之前省略用户名 root,并且不应将输出重定向到 /var/log/,而应使用 $HOME/。

答案3

我只是提供一个想法,而不是一个完整的脚本。您需要进行修改以满足您的要求。

要监控 CPU 使用率和内存使用率,您使用的命令是ps。我相信-C并且-o支持旗帜AIX服务器。不过,您可以从man ps您的机器中找出相应的语法。

ps -C program_name -o %cpu,%mem

现在,为了使其在服务器中每 10 分钟执行 6 次,我将放置以下脚本。我假设您需要每 10 分钟监控一次,持续一个小时左右。

i=6
filename=$(echo memory_monitoring_`date +%F_%T`)
touch $filename
while [ $i -ge 1 ]
do
    sleep 600 #sleep for 10 minutes. 
    ps -C program_name -o %cpu,%mem >> "$filename"
    i=$((i-1)) 
done

所以基本上使用上面的脚本,我每次需要监视内存时都会创建一个新文件。之后,我执行脚本 1 小时,这就是为什么您看到i设置为 6。sleep 600用于每 10 分钟监控一次内存。

如果您需要优化,您可以添加一个mail命令来通过电子邮件向自己发送创建的文件,以便您可以将其用于审核目的。

建立cron工作相当简单,您可以找到许多可以帮助您的在线教程。

相关内容