位置: 编程技术 - 正文

Shell脚本实现Linux系统和进程资源监控(shell脚本实现Linux运维监控)

发布时间:2024-02-27

推荐整理分享Shell脚本实现Linux系统和进程资源监控(shell脚本实现Linux运维监控),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:shell脚本实现1到100累和,shell脚本实现Linux运维监控,shell脚本实现Linux运维监控,shell脚本实现Linux运维监控,shell脚本实现Linux运维监控,shell脚本实现文件内容替换,shell脚本实现1到100累和,shell脚本实现Linux运维监控,内容如对您有帮助,希望把文章链接给更多的朋友!

在服务器运维过程中,经常需要对服务器的各种资源进行监控,例如:CPU的负载监控,磁盘的使用率监控,进程数目监控等等,以在系统出现异常时及时报警,通知系统管理员。本文介绍在Linux系统下几种常见的监控需求及其shell脚本的编写。

文章目录:

1.Linux使用 Shell 检查进程是否存在2.Linux使用 Shell检测进程 CPU 利用率3.Linux使用 Shell检测进程内存使用量4.Linux使用 Shell检测进程句柄使用量5.Linux使用 Shell查看某个 TCP 或 UDP 端口是否在监听6.Linux使用 Shell查看某个进程名正在运行的个数7.Linux使用 Shell检测系统 CPU 负载8.Linux使用 Shell检测系统磁盘空间9.总结

检查进程是否存在

在对进程进行监控时,我们一般需要得到该进程的 ID,进程 ID 是进程的唯一标识,但是有时可能在服务器上不同用户下运行着多个相同进程名的进程,下面的函数 GetPID 给出了获取指定用户下指定进程名的进程 ID 功能(目前只考虑这个用户下启动一个此进程名的进程),它有两个参数为用户名和进程名,它首先使用 ps 查找进程信息,同时通过 grep 过滤出需要的进程,最后通过 sed 和 awk 查找需要进程的 ID 值(此函数可根据实际情况修改,比如需要过滤其它信息等)。

清单 1. 对进程进行监控

示例演示:

1)源程序(例如查找用户为 root,进程名为 CFTestApp 的进程 ID)2)结果输出

3)结果分析

从上面的输出可见: 为 root 用户下的 CFTestApp 程序的进程 ID。

4)命令介绍

1. ps: 查看系统中瞬间进程信息。 参数:-u< 用户识别码 > 列出属于该用户的程序的状况,也可使用用户名称来指定。 -p< 进程识别码 > 指定进程识别码,并列出该进程的状况。 -o 指定输出格式 2. grep: 用于查找文件中符合字符串的当前行。 参数:-v 反向选择,亦即显示出没有 ‘搜寻字符串' 内容的那一行。 3. sed: 一个非交互性文本编辑器,它编辑文件或标准输入导出的文件,一次只能处理一行内容。 参数:-n 读取下一个输入行,用下一个命令处理新的行而不是用第一个命令。 p 标志 打印匹配行 4. awk:一种编程语言,用于在 linux/unix 下对文本和数据进行处理。数据可以来自标准输入、一个或多个文件,或其它命令的输出。它支持用户自定义函数和动态正则表达式等先进功能,是 linux/unix 下的一个强大编程工具。它在命令行中使用,但更多是作为脚本来使用。awk 的处理文本和数据的方式:它逐行扫描文件,从第一行到最后一行,寻找匹配的特定模式的行,并在这些行上进行你想要的操作。如果没有指定处理动作,则把匹配的行显示到标准输出 ( 屏幕 ),如果没有指定模式,则所有被操作所指定的行都被处理。 参数:-F fs or ?field-separator fs :指定输入文件折分隔符,fs 是一个字符串或者是一个正则表达式,如 -F:。有时有可能进程没有启动,下面的功能是检查进程 ID 是否存在,如果此进程没有运行输出:

检测进程 CPU 利用率

在对应用服务进行维护时,我们经常遇到由于 CPU 过高导致业务阻塞,造成业务中断的情况。CPU 过高可能由于业务量过负荷或者出现死循环等异常情况,通过脚本对业务进程 CPU 进行时时监控,可以在 CPU 利用率异常时及时通知维护人员,便于维护人员及时分析,定位,以及避免业务中断等。下面的函数可获得指定进程 ID 的进程 CPU 利用率。它有一个参数为进程 ID,它首先使用 ps 查找进程信息,同时通过 grep -v 过滤掉 %CPU 行,最后通过 awk 查找 CPU 利用百分比的整数部分(如果系统中有多个 CPU,CPU 利用率可以超过 %)。

清单 2. 对业务进程 CPU 进行实时监控

下面的功能是通过上面的函数 GetCpu 获得此进程的 CPU 利用率,然后通过条件语句判断 CPU 利用率是否超过限制,如果超过 %(可以根据实际情况进行调整),则输出告警,否则输出正常信息。

清单 3. 判断 CPU 利用率是否超过限制

示例演示:

1)源程序(假设上面已经查询出 CFTestApp 的进程 ID 为 )2)结果输出3)结果分析

从上面的输出可见:CFTestApp 程序当前的 CPU 使用为 %,是正常的,没有超过 % 的告警限制。

检测进程内存使用量

在对应用服务进行维护时,也经常遇到由于内存使用过大导致进程崩溃,造成业务中断的情况(例如 位程序可寻址的最大内存空间为 4G,如果超出将申请内存失败,同时物理内存也是有限的)。内存使用过高可能由于内存泄露,消息堆积等情况,通过脚本对业务进程内存使用量进行时时监控,可以在内存使用量异常时及时发送告警(例如通过短信),便于维护人员及时处理。下面的函数可获得指定进程 ID 的进程内存使用情况。它有一个参数为进程 ID,它首先使用 ps 查找进程信息,同时通过 grep -v 过滤掉 VSZ 行 , 然后通过除 取以兆为单位的内存使用量。

清单 4. 对业务进程内存使用量进行监控

下面的功能是通过上面的函数 GetMem获得此进程的内存使用,然后通过条件语句判断内存使用是否超过限制,如果超过 1.6G(可以根据实际情况进行调整),则输出告警,否则输出正常信息。

清单 5. 判断内存使用是否超过限制

示例演示:

1)源程序(假设上面已经查询出 CFTestApp 的进程 ID 为 )

2)结果输出

3)结果分析

从上面的输出可见:CFTestApp 程序当前的内存使用为 M,是正常的,没有超过 1.6G 的告警限制。

检测进程句柄使用量

在对应用服务进行维护时,也经常遇到由于句柄使用 过量导致业务中断的情况。每个平台对进程的句柄使用都是有限的,例如在 Linux 平台,我们可以使用 ulimit ? n 命令(open files (-n) )或者对 /etc/security/limits.conf 的内容进行查看,得到进程句柄限制。句柄使用过高可能由于负载过高,句柄泄露等情况,通过脚本对业务进程句柄使用量进行时时监控,可以在异常时及时发送告警(例如通过短信),便于维护人员及时处理。下面的函数可获得指定进程 ID 的进程句柄使用情况。它有一个参数为进程 ID,它首先使用 ls 输出进程句柄信息,然后通过 wc -l 统计输出句柄个数。

下面功能是通过上面的函数 GetDes获得此进程的句柄使用量,然后通过条件语句判断句柄使用是否超过限制,如果超过 (可以根据实际情况进行调整)个,则输出告警,否则输出正常信息。

示例演示:

1)源程序(假设上面查询出 CFTestApp 的进程 ID 为 )

2)结果输出

Shell脚本实现Linux系统和进程资源监控(shell脚本实现Linux运维监控)

3)结果分析

从上面的输出可见:CFTestApp 程序当前的句柄使用为 个,是正常的,没有超过 个的告警限制。

4)命令介绍

wc: 统计指定文件中的字节数、字数、行数 , 并将统计结果显示输出。 参数:-l 统计行数。 -c 统计字节数。 -w 统计字数。

查看某个 TCP 或 UDP 端口是否在监听

端口检测是系统资源检测经常遇到的,特别是在网络通讯情况下,端口状态的检测往往是很重要的。有时可能进程,CPU,内存等处于正常状态,但是端口处于异常状态,业务也是没有正常运行。下面函数可判断指定端口是否在监听。它有一个参数为待检测端口,它首先使用 netstat 输出端口占用信息,然后通过 grep, awk,wc 过滤输出监听 TCP 端口的个数,第二条语句为输出 UDP 端口的监听个数,如果 TCP 与 UDP 端口监听都为 0,返回 0,否则返回 1.

清单 6. 端口检测

示例演示:

1)源程序(例如查询 端口的状态是否在监听)

2)结果输出

3)结果分析

从上面的输出可见:这个 Linux 服务器的 端口处在监听状态。

4)命令介绍

netstat: 用于显示与 IP、TCP、UDP 和 ICMP 协议相关的统计数据,一般用于检验本机各端口的网络连接情况。 参数:-a 显示所有连线中的 Socket。 -n 直接使用 IP 地址,而不通过域名服务器。下面的功能也是检测某个 TCP 或者 UDP 端口是否处在正常状态。

命令介绍

egrep: 在文件内查找指定的字符串。egrep 执行效果如 grep -E,使用的语法及参数可参照 grep 指令,与 grep 不同点在于解读字符串的方法,egrep 是用扩展的正则表达式语法来解读,而 grep 则用基本的正则表达式语法,扩展的正则表达式比基本的正则表达式有更完整的表达规范。

查看某个进程名正在运行的个数

有时我们可能需要得到服务器上某个进程的启动个数,下面的功能是检测某个进程正在运行的个数,例如进程名为 CFTestApp。

检测系统 CPU 负载

在对服务器进行维护时,有时也遇到由于系统 CPU(利用率)负载 过量导致业务中断的情况。服务器上可能运行多个进程,查看单个进程的 CPU 都是正常的,但是整个系统的 CPU 负载可能是异常的。通过脚本对系统 CPU 负载进行时时监控,可以在异常时及时发送告警,便于维护人员及时处理,预防事故发生。下面的函数可以检测系统 CPU 使用情况 . 使用 vmstat 取 5 次系统 CPU 的 idle 值,取平均值,然后通过与 取差得到当前 CPU 的实际占用值。

示例演示:

1)源程序

2)结果输出

3)结果分析

从上面的输出可见:当前 Linux 服务器系统 CPU 利用率为 %,是正常的,没有超过 % 的告警限制。

4)命令介绍

vmstat:Virtual Meomory Statistics(虚拟内存统计)的缩写,可对操作系统的虚拟内存、进程、CPU 活动进行监视。参数: -n 表示在周期性循环输出时,输出的头部信息仅显示一次。

检测系统磁盘空间

系统磁盘空间检测是系统资源检测的重要部分,在系统维护维护中,我们经常需要查看服务器磁盘空间使用情况。因为有些业务要时时写话单,日志,或者临时文件等,如果磁盘空间用尽,也可能会导致业务中断,下面的函数可以检测当前系统磁盘空间中某个目录的磁盘空间使用情况 . 输入参数为需要检测的目录名,使用 df 输出系统磁盘空间使用信息,然后通过 grep 和 awk 过滤得到某个目录的磁盘空间使用百分比。

示例演示:

1)源程序(检测目录为 /boot)

2)结果输出

3)结果分析

从上面的输出可见:当前此 Linux 服务器系统上 /boot 目录的磁盘空间已经使用了 %,是正常的,没有超过使用 % 的告警限制。

4)命令介绍

df:检查文件系统的磁盘空间占用情况。可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息。 参数:-k 以 k 字节为单位显示。

总结

在 Linux 平台下,shell 脚本监控是一个非常简单,方便,有效的对服务器,进程进行监控的方法,对系统开发以及进程维护人员非常有帮助。它不仅可以对上面的信息进行监控,发送告警,同时也可以监控进程的日志等等的信息,希望本文对大家有帮助。

浅谈JavaScript数据类型及转换 JavaScript数据类型1.Boolean(布尔)布尔:(值类型)varb1=true;//布尔类型2.Number(数字)数值:(值类型)varn1=3.;//数值类型n1.toFixed(3);//四舍五入保留

javaScript基础语法介绍 简介JavaScript是一种脚本语言。(脚本,一条条的文字命令。执行时由系统的一个解释器,将其一条条的翻译成机器可识别的指令,然后执行。常见的脚

JavaScript操作Cookie详解 什么是Cookiecookie是存储于访问者的计算机中的变量。每当同一台计算机通过浏览器请求某个页面时,就会发送这个cookie。你可以使用JavaScript来创建和取

标签: shell脚本实现Linux运维监控

本文链接地址:https://www.jiuchutong.com/biancheng/382885.html 转载请保留说明!

上一篇:PHP守护进程实例(php守护进程的应用场景)

下一篇:浅谈JavaScript数据类型及转换(javascript数据)

  • 税务零申报是什么意思情况
  • 工资薪金所得和劳务报酬所得的区别
  • 生产成本科目期末余额反映的是
  • 物业费免交条件
  • 开票资料都包括什么内容
  • 土地补偿款收入要交什么税
  • 房地产销售土地增值税纳税人减免申请核准表
  • 进项转出后是否要交税
  • 普票每季度开多少免税
  • 为什么有的单位没有住房公积金
  • 出口退税进项发票
  • 建筑业会计实操视频教程
  • 差旅费未及时报销说明怎么写
  • 采用审计软件有什么优缺点
  • 个人房源出租
  • 小微企业免税销售额一栏怎么填
  • 计算消费税要价税分离吗
  • 固定资产报废需要在固定资产系统中
  • 代驾费用入什么二级科目
  • 发行股票的承销商佣金分录
  • 培训费开发票明细为会议费如何做账?
  • 债券的到期收益率取决于
  • 禁用的网络在哪里开启
  • php数组函数输出《咏雪》里有多少"片"字
  • 哪些情形不属于伪现金
  • 白兰花的养殖方法和注意事项和病虫害
  • 企业所得税教育经费列支范围
  • 发票开错重新开票怎么做账务处理?
  • 银行提取现金会查征信吗
  • php的!
  • 【Vue】踩坑日记:Scoped下动画无效,曾经以为百利而无一害的Scoped,也有自己的限制
  • 微信小程序人民法院审核通过多久立案
  • 数据挖掘快速入门
  • groupinfo命令
  • 手机做固定资产报废理由怎么写好
  • 购入支票号码和使用支票号码是什么
  • 商会年会活动策划方案模板
  • 补交以前年度环保税会计分录
  • 企业股东变更流程及费用
  • 银行日记账期初余额写哪儿
  • 网银报错
  • 银行代发工资流程
  • 人员招聘费用预算
  • 加盟费明细
  • 普通发票做账需要价税分离吗
  • 抵账协议上可以签字吗
  • 企业的借款利息费用,扣除标准是?
  • 福利费可以计入销售费用吗
  • 车船税怎么计账
  • 差额征税发票可以税前扣除吗
  • 公司法人往来款账务处理
  • 新车一次能开多少时间
  • 跨年的管理费用怎么处理
  • 如何理解会计中的借贷? 知乎
  • 预付款充值发票
  • 一般纳税人暂估入库的会计分录怎么写
  • 生育津贴申请流程
  • mysql5.7免安装版配置
  • aesm_service.exe是什么
  • 操作系统与硬件之间的关系
  • 重装系统重启后怎么操作
  • windows 隐藏软件
  • win7和linux双系统
  • os x10.11el capitan beta2下载地址
  • smsmon32.exe - smsmon32是什么进程
  • ghost到一半报错
  • windows如何禁止访问某ip地址
  • win10各个版本的桌面
  • CCAssert(sm_pSharedApplication, "")导致程序闪退的原因以及解决方案
  • http://www.2cto.com/kf/201402/280576.html
  • cocos creator开发文档
  • nodejs项目实例
  • shell脚本用法
  • jquery使用css
  • jquery异步提交表单
  • js mvvm 原理
  • js根据name取值
  • 第三届一带一国际高峰论坛
  • 怎么撤销税务三方协议
  • 上海市网上税务局如何登录
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号