Linux下使用Shell脚本实现进程监控的流程

 更新时间:2023年02月27日 08:40:35   作者:赤露水  
这篇文章主要介绍了Linux下使用Shell脚本实现进程监控,在 Linux 平台下,shell 脚本监控是一个非常简单、方便的工具,它可以有效的对服务器、进程进行监控,对系统开发以及进程维护人员非常有帮助,需要的朋友可以参考下

本文介绍一种在Linux系统下为实现某些关键进程状态的实时监控而使用shell脚本的编写方法。在这里主要通过监控某些进程是否退出作为判断依据,如果某个进程退出了,则进行对应的恢复处理,如重新拉起相关的进程等。

下面介绍该脚本的实现流程。

首先生成一个名为”process_check.sh”的脚本,脚本内容如下:

#!/bin/bash
 
#该函数检查关键进程的状态,最终返回进程的个数。
checkprocess()
{
#       echo "checkprocess...$1"
        if [ "$1" = "" ];
        then
                return 1
        fi
        process_num=`ps -ef|grep "$1" |grep -v "grep" |wc -l`
#       echo "checkprocess num=$process_num"
        return $process_num
}
#进程如有退出,则记录相关的信息,并做相关的处理
recordinfo()
{
#       echo "check $1"
        if [ "$1" = "" ];
        then
                return
        fi
#打印进程退出的时间
        date "+++++++++++++++++++ +%Y-%m-%d %H:%M:%S '$1' exit! +++++++++++++++++++"
#重新拉起这个进程
        "$1" &
        echo "restart $1"
}
 
#检查进程的状态
check()
{
        echo "####check $1"
        if [ "$1" = "" ];
        then
                return
        fi
        checkprocess "$1"
        check_result=$?
#如果该进程的个数为0,则说明该进程已经退出
        if [ $check_result -eq 0 ];
        then
                recordinfo "$1"
#               exit
        fi
}
#循环检测
while [ 1 ] ; do
        #关键进程列表,多个进程以逗号分隔,这里以两个进程为例子。
        process_name="./test1,./test2"
        OLD_IFS="$IFS"
        IFS=","
        arr=($process_name)
        IFS="$OLD_IFS"
 
        for s in ${arr[@]}
        do
          check "$s"
        done
        sleep 3
#       echo "check loop..."
done

测试验证

这里写一个简单的测试程序,代码如下:

void main()
{
        while(1) {
                sleep(3);
        }
}

编译后生成两个名为“test1”,“test2”的可执行文件。

为了方便测试,可以将”process_check.sh”,”test1”,”test2”放置于同一个目录下。

1.运行”process_check.sh”,如下所示:

从上图可知,”test1”,”test2”刚开始并未被拉起,运行”process_check.sh”之后,检测出”test1”,”test2”不存在,则触发拉起的机制,最终”test1”,”test2”被启动了。

2.运行过程中kill掉某一个进程,验证”process_check.sh”是否有将该进程拉起。

由下图可知,被kill的进程最终又被拉起了。

至此,该脚本的功能已被验证完毕。

结语:在 Linux 平台下,shell 脚本监控是一个非常简单、方便的工具,它可以有效的对服务器、进程进行监控,对系统开发以及进程维护人员非常有帮助。

到此这篇关于Linux下使用Shell脚本实现进程监控的文章就介绍到这了,更多相关Shell脚本进程监控内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 使用shell脚本来给mysql加索引的方法

    使用shell脚本来给mysql加索引的方法

    今天小编就为大家分享一篇关于使用shell脚本来给mysql加索引的方法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-04-04
  • Linux进程通信(IPC)方式简介

    Linux进程通信(IPC)方式简介

    linux下进程间通信的几种主要方式:管道(pipe)和有名管道(FIFO)、信号(signal)、消息队列、共享内存(shared memory)、信号量(semaphore)、套接字(socket),本文对这些做简单介绍
    2013-12-12
  • Window11 WSL2 添加静态IP的脚本

    Window11 WSL2 添加静态IP的脚本

    这篇文章主要介绍了Window11 WSL2 添加静态IP的脚本方法,通过一段脚本给 Windows 端的"vEthernet (WSL)"加了IPv4 172.18.16.1,给 Linux 端的 eth0 添加 IPv4 172.18.16.1,在使用前,请按需调整网络接口的名称和IP地址,需要的朋友可以参考下
    2023-01-01
  • Bash Shell中的select命令简单使用示例

    Bash Shell中的select命令简单使用示例

    这篇文章主要介绍了Bash Shell中的select命令简单使用示例,通常用于流程控制功能的实现,需要的朋友可以参考下
    2015-07-07
  • Linux启动新进程的三种方法

    Linux启动新进程的三种方法

    本篇文章主要介绍了Linux启动新进程的三种方法以及这三种方法之间的区别。具有很好的参考价值。下面跟着小编一起来看下吧
    2017-04-04
  • ubuntu修改terminal终端的主机名的实现方法

    ubuntu修改terminal终端的主机名的实现方法

    这篇文章主要介绍了ubuntu修改terminal终端的主机名的实现方法的相关资料,希望通过本文能帮助大家,需要的朋友可以参考下
    2017-08-08
  • Linux 中常用的sed命令

    Linux 中常用的sed命令

    sed是一种流编辑器,它是文本处理中非常中的工具,能够完美的配合正则表达式使用,功能不同凡响。接下来通过本文给大家介绍Linux 中常用的sed命令,感兴趣的朋友一起看看吧
    2017-09-09
  • CentOS中使用Shell脚本实现每天自动备份网站文件和数据库并上传到FTP中

    CentOS中使用Shell脚本实现每天自动备份网站文件和数据库并上传到FTP中

    这篇文章主要介绍了CentOS中使用Shell脚本实现每天自动备份网站文件和数据库并上传到FTP中,本文脚本比较实用,其它Linux系统也可参考,需要的朋友可以参考下
    2014-12-12
  • linux定时备份mysql并同步到其它服务器

    linux定时备份mysql并同步到其它服务器

    这篇文章主要介绍了linux定时备份mysql并同步到其它服务器,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-09-09
  • Shell判断字符串变量是否为空的方法实现

    Shell判断字符串变量是否为空的方法实现

    本文主要介绍了Shell判断字符串变量是否为空的方法实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-06-06

最新评论