通用的进程监控脚本process_monitor.sh使用方法

时间:2022-10-23 13:02:53

不用做任何修改,即可用process_monitor.sh监控各种进程。
源码下载:https://github.com/eyjian/libmooon/blob/master/shell/process_monitor.sh

使用之前,请给process_monitor.sh带上可执行权限,不带任何参数执行process_monitor.sh时显示帮助信息。
通常需要将process_monitor.sh放到crontab上,以便系统重启自动生效,也可避免process_monitor.sh被意外终止导致失效,crontab的时间部分一般设置为1分钟执行一次,如:* * * * *。

运行process_monitor.sh,需要指定两个参数:
1)参数1:被监控的对象,支持同一程序带不同参数的分别监控,典型的如java程序
2)参数2:被监控的对象不存在时,重拉起脚本或命令

参数1又可分成两部分:
1)被监控对象,如java程序,不含参数部分,值需要和ps看到的完全相同,比如ps看到的是绝对路径,则也需为绝对路径;
2)参数匹配部分,一个用于区分同一程序不同进程的源自于参数的字符串。这部分是可选的,只有当被监控对象以不同参数在同一机器上同时运行时才需要指定。

建议将process_monitor.sh放到目录/usr/local/bin下,以方便使用。

示例1:监控ZooKeeper进程(假设ZooKeeper安装目录为/data/zookeeper,JDK安装目录为/usr/local/jdk)
/usr/local/bin/process_monitor.sh "/usr/local/jdk/bin/java -Dzookeeper" "/data/zookeeper/bin/zkServer.sh start"

上面的“-Dzookeeper”为参数的一部分,借助它可以区分于其它java程序,比如HDFS DataNode为“-Dproc_datanode”:
/usr/local/bin/process_monitor.sh "/usr/local/jdk/bin/java -Dproc_datanode" "/data/hadoop/sbin/hadoop-daemon.sh start datanode"

参数2无匹配部分使用示例:
/usr/local/bin/process_monitor.sh "/usr/local/ip2location/bin/ip2location" "/usr/local/ip2location/bin/ip2location --num_worker_threads=8 --num_io_threads=2"

放在crontab中的示例:
* * * * * /usr/local/bin/process_monitor.sh "/usr/local/ip2location/bin/ip2location" "/usr/local/ip2location/bin/ip2location --num_worker_threads=8 --num_io_threads=2"