用于记录cpu的shell脚本和linux进程的内存使用情况
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了用于记录cpu的shell脚本和linux进程的内存使用情况,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1591字,纯文字阅读大概需要3分钟。
内容图文
![用于记录cpu的shell脚本和linux进程的内存使用情况](/upload/InfoBanner/zyjiaocheng/971/99bba63ceae64462a53106ca739c6aba.jpg)
我正在寻找一种方法来记录和图形显示linux进程的CPU和RAM使用情况.因为我找不到一个简单的工具(我试过zabbix和munin但是安装失败了)我开始写一个shell脚本来这样做
脚本文件通过awk解析top命令的输出并登录到csv文件.它
>通过ps命令计算出进程的pid
>使用top和awk来记录cpu和内存使用情况.
以下是脚本的外观
#!/bin/sh
#A script to log the cpu and memory usage of linux processes namely - redis, logstash, elasticsearch and kibana
REDIS_PID=$(ps -ef | grep redis | grep -v grep | awk '{print $2}')
LOGSTASH_PID=$(ps -ef | grep logstash | grep -v grep | awk '{print $2}')
ELASTICSEARCH_PID=$(ps -ef | grep elasticsearch | grep -v grep | awk '{print $2}')
KIBANA_PID=$(ps -ef | grep kibana | grep -v grep | awk '{print $2}')
LOG_FILE=/var/log/user/usage.log
echo $LOG_FILE
top -b | awk -v redis="$REDIS_PID" -v logstash="$LOGSTASH_PID" '/redis|logstash/ {print $1","$9","$10","$12}'
我如何能
>打印多个进程的资源使用情况.指定多个
awk模式中的变量不起作用.它打印用途
第一个pid(上面脚本中的redis)
>打印资源详细信息时打印当前时间戳(通过日期“%T”)
>打印进程名称以及资源使用情况.在上述情况下,Redis,Logstash,ElasticSearch或Kibana
>将上述命令输出重定向到日志文件.我试过> $LOG_FILE但它没有用.
思考/投入?
提前致谢.
解决方法:
要找出PID,您可以使用pgrep大大简化脚本:
REDIS_PID=$(pgrep -f redis)
LOGSTASH_PID=$(pgrep -f logstash)
ELASTICSEARCH_PID=$(pgrep -f elasticsearch)
KIBANA_PID=$(pgrep -f kibana)
编辑:抱歉不得不离开工作,无法提供完整的答案.
为了捕获top的输出,请使用以下脚本:
while :; do
top -n 1 -b | awk -v redis="$REDIS_PID" -v logstash="$LOGSTASH_PID"
'$1 == redis || $1 == logstash {print $1","$9","$10","$12}' >> $LOG_FILE
sleep 3
done
内容总结
以上是互联网集市为您收集整理的用于记录cpu的shell脚本和linux进程的内存使用情况全部内容,希望文章能够帮你解决用于记录cpu的shell脚本和linux进程的内存使用情况所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。