这篇“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”放置于同一个目录下。
运行”process_check.sh”,如下所示:
从上图可知,”test1”,”test2”刚开始并未被拉起,运行”process_check.sh”之后,检测出”test1”,”test2”不存在,则触发拉起的机制,最终”test1”,”test2”被启动了。
运行过程中kill掉某一个进程,验证”process_check.sh”是否有将该进程拉起。
由下图可知,被kill的进程最终又被拉起了。
以上就是关于“Linux下如何使用Shell脚本实现进程监控的流程”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注编程网行业资讯频道。