linux 进程监控 shell

本文介绍了一个用于进程监控的Shell脚本,该脚本能够自动重启配置文件中指定的进程,并具备检查进程运行状态及文件修改日期的功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#!/bin/bash
# =====================================================================================================
# Name        : reproc.sh
# Author      : nanyun
# Version     : v1.0
# Date        : 20111220
# Copyright   : XXXXXXXXXXXXXXXXXXXXX
# Description : 进程监控,需要监控的进程需要配置在"./proclist.txt"中,且必须为全路径。
# =====================================================================================================

ScriptSelfPwd=$(cd "$(dirname "$0")"; pwd)
cd "$ScriptSelfPwd"

CHECKFILE="TransRecord.txt"
CONFIGFILE="./proclist.txt"
MODIFYFILE="./config.ini"

#重启函数,参数为$1重启程序的全路径,$2为重启程序所在的目录
reproc()
{
cd "$2"
if [ "$PWD" != "$2" ];then
echo "PWD=$PWD cd $2 failed."
return -1
fi
    #修改下载的文件日期
datestring=$(grep 'GETDATE' "$MODIFYFILE"|awk -F= '{print $2}'|awk  '{print $1}')
    sed -i s/"$datestring"/`date +'%Y%m%d' -d '-1 day'`/g "$MODIFYFILE"
    #启动程序
(source /oracle/.bash_profile && nohup "$1" &) 
    return 0
}

grep -v '^#' $CONFIGFILE |while read LINE
 do
    #检查要监控的程序文件是否存在
    if [ ! -f "$LINE" ];then
        echo -e "$LINE: No such file or directory."
        continue
    fi
    psproc=$(ps -ef |grep "$LINE" |grep -v "grep")
    DIRNAME=$(dirname "$LINE")
    checkstring="find  $DIRNAME -type f -mmin +100 -name $CHECKFILE"
    
    if [ -z "$psproc" ];then
        echo -e "`date +"%Y%m%d%H%M%S"`    "$LINE" reboot."
        reproc "$LINE" "$DIRNAME"
        continue
    elif (RUNCHECK=$($checkstring) && [ -n "$RUNCHECK" ]);then 
        echo -e "`date +"%Y%m%d%H%M%S"`    "$LINE" kill and reboot."
        #kill进程
        killpid=$(ps -ef |grep "$LINE"|grep -v 'grep'|awk '{print $2}'|xargs kill -9)
        reproc "$LINE" "$DIRNAME"             
fi
 done
exit 0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值