“进程监控脚本并避免重复执行脚本”的版本间的差异

来自linux中国网wiki
跳到导航 跳到搜索
 
(未显示同一用户的6个中间版本)
第1行: 第1行:
 
[[category:shell]] [[category:devops]]   
 
[[category:shell]] [[category:devops]]   
 
==mysql进程监控脚本shell==
 
==mysql进程监控脚本shell==
 +
=== cndw version===
 
<pre>
 
<pre>
 
cndw version  
 
cndw version  
第8行: 第9行:
 
[ "$RUN" -gt 1 ] && exit
 
[ "$RUN" -gt 1 ] && exit
  
 +
#!/bin/bash
 +
 +
Mycou=`ps -ef | grep data_from_ok:batch_clean | grep -v grep | wc -l`
 +
 +
if  [ $Mycou -eq 0 ]
 +
then
 +
#echo 'run at' >>/data/betch-clean.log
 +
date  >>/data/betch-clean.log
 +
你要执行的命令
 +
fi
 +
</pre>
  
qcloud version  2022  
+
===qcloud version  2022 ===
 +
<pre>
 
详细请见最下面
 
详细请见最下面
 
agent_name="$installPath/bin/sgagent"
 
agent_name="$installPath/bin/sgagent"
 +
check_user()
 +
{
 +
    if [ "root" != "`whoami`" ]; then
 +
        echo "Only root can execute this script"
 +
        exit 2
 +
    fi
 +
}
 
check_alive()
 
check_alive()
 
{
 
{
第24行: 第44行:
  
 
### Main Begin ###
 
### Main Begin ###
 
+
#前面这些全是检查func
 
check_user
 
check_user
 
check_alive
 
check_alive
 +
 +
你运行的脚本的命令
 +
ret=$?
 +
if [ $ret -eq 0 ]
 +
then
 +
    echo "xxxx run succ"
 +
else
 +
    echo "xxxx run failed, errcode: $ret"
 +
fi
 +
exit $ret
  
  
第89行: 第119行:
  
  
[evan@prod-insurance-core ~]$ cat /usr/local/qcloud/stargate/admin/start.sh  
+
[evan@ ~]$ cat /usr/local/qcloud/stargate/admin/start.sh  
 
#!/bin/bash
 
#!/bin/bash
  
第146行: 第176行:
 
</pre>
 
</pre>
  
=R=
+
=reference=
 +
[https://blog.csdn.net/sweeper_freedoman/article/details/103132999  Shell防止执行程序被多重启动]
 +
 
 
https://github.com/eyjian/mooon/tree/master/mooon
 
https://github.com/eyjian/mooon/tree/master/mooon
 +
 +
[https://blog.csdn.net/yuki5233/article/details/83994843  Shell编程---监控检查进程是否存活]
  
 
[https://cloud.tencent.com/developer/article/1179668 通用的进程监控重拉起bash脚本process_monitor.sh]
 
[https://cloud.tencent.com/developer/article/1179668 通用的进程监控重拉起bash脚本process_monitor.sh]

2022年7月13日 (三) 03:50的最新版本

mysql进程监控脚本shell

cndw version

cndw version 

CPID=$$   #$$ 是脚本运行的当前进程ID号
RUN="`ps -ef | grep "$0" | grep -v "grep" | grep -v "$CPID" | wc -l`"  #$0 是脚本本身>的名字
[ "$RUN" -gt 1 ] && exit

#!/bin/bash

Mycou=`ps -ef | grep data_from_ok:batch_clean | grep -v grep | wc -l`

if  [ $Mycou -eq 0 ]
then 
#echo 'run at' >>/data/betch-clean.log
date  >>/data/betch-clean.log
你要执行的命令
fi

qcloud version 2022

详细请见最下面
agent_name="$installPath/bin/sgagent"
check_user()
{
    if [ "root" != "`whoami`" ]; then
        echo "Only root can execute this script"
        exit 2
    fi
}
check_alive()
{
    status=`ps ax | grep "$agent_name" | grep -v "grep" |wc -l`

    if [ $status -ne 0 ]; then
        # process exist
        echo "stargate agent already exist"
        exit 1
    fi
}

### Main Begin ###
#前面这些全是检查func
check_user
check_alive

你运行的脚本的命令
ret=$?
if [ $ret -eq 0 ]
then
    echo "xxxx run succ"
else
    echo "xxxx run failed, errcode: $ret"
fi
exit $ret






#!/bin/bash
# 请放到crontab中运行,如(注意要以后台方式运行,因为脚本是常驻不退出的):
# Usage */20 * * * *   /home/mon/proce-moin.sh   > /dev/null 2>&1 &

LOCK_FILE="/tmp/my.lock"
if [[ -e $LOCK_FILE ]] ; then
echo "re-entry, exiting"
exit 1
fi

### Placing lock file
touch $LOCK_FILE
echo -n "Started..."


 #ps -ef | grep  proce-moin
#if [ $? -eq 0 ]
#then 
#	exit 0
#fi
#checkmyself 
#mypn=`ps -ef | grep proce-moin | grep -v grep | wc -l`
##if  [ $mypn -gt 1 ]
#if  [ -n "$myupn" ]
#then 
#    exit 0
#fi
#


 ps -ef | grep mysqld | grep -v grep
 if  [ $? -eq 0 ]
 then 
	 echo  "mysqlok"
        #exit 1
 else
	 systemctl  start  mysqld.service

 fi
 sleep  500
### Removing lock
rm -f $LOCK_FILE

echo "Done."












[evan@ ~]$ cat /usr/local/qcloud/stargate/admin/start.sh 
#!/bin/bash

umask 0022
unset IFS
unset OFS
unset LD_PRELOAD
unset LD_LIBRARY_PATH
export PATH='/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin'

if [ -w '/usr' ]; then
    installPath="/usr/local/qcloud/stargate"
else
    installPath="/var/lib/qcloud/stargate"
fi
agent_name="$installPath/bin/sgagent"

check_user()
{
    if [ "root" != "`whoami`" ]; then
        echo "Only root can execute this script"
        exit 2
    fi
}

check_alive()
{
    status=`ps ax | grep "$agent_name" | grep -v "grep" |wc -l`

    if [ $status -ne 0 ]; then
        # process exist
        echo "stargate agent already exist"
        exit 1
    fi
}

### Main Begin ###

check_user
check_alive
cd $(dirname $0)
export LD_LIBRARY_PATH=$installPath/lib:$LD_LIBRARY_PATH
$agent_name -d

ret=$?
if [ $ret -eq 0 ]
then
    echo "stargate agent run succ"
else
    echo "stargate agent run failed, errcode: $ret"
fi
exit $ret

### Main End ###

reference

Shell防止执行程序被多重启动

https://github.com/eyjian/mooon/tree/master/mooon

Shell编程---监控检查进程是否存活

通用的进程监控重拉起bash脚本process_monitor.sh

shell脚本监控进程


Shell脚本监控程序运行情况(重启程序)

实现简单的监控脚本(Bash的执行和异常捕获)