<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh-Hans-CN">
	<id>https://wiki.linuxsa.org/index.php?action=history&amp;feed=atom&amp;title=%E8%BF%9B%E7%A8%8B%E7%9B%91%E6%8E%A7%E8%84%9A%E6%9C%AC%E5%B9%B6%E9%81%BF%E5%85%8D%E9%87%8D%E5%A4%8D%E6%89%A7%E8%A1%8C%E8%84%9A%E6%9C%AC</id>
	<title>进程监控脚本并避免重复执行脚本 - 版本历史</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.linuxsa.org/index.php?action=history&amp;feed=atom&amp;title=%E8%BF%9B%E7%A8%8B%E7%9B%91%E6%8E%A7%E8%84%9A%E6%9C%AC%E5%B9%B6%E9%81%BF%E5%85%8D%E9%87%8D%E5%A4%8D%E6%89%A7%E8%A1%8C%E8%84%9A%E6%9C%AC"/>
	<link rel="alternate" type="text/html" href="https://wiki.linuxsa.org/index.php?title=%E8%BF%9B%E7%A8%8B%E7%9B%91%E6%8E%A7%E8%84%9A%E6%9C%AC%E5%B9%B6%E9%81%BF%E5%85%8D%E9%87%8D%E5%A4%8D%E6%89%A7%E8%A1%8C%E8%84%9A%E6%9C%AC&amp;action=history"/>
	<updated>2026-04-17T03:57:32Z</updated>
	<subtitle>本wiki上该页面的版本历史</subtitle>
	<generator>MediaWiki 1.43.1</generator>
	<entry>
		<id>https://wiki.linuxsa.org/index.php?title=%E8%BF%9B%E7%A8%8B%E7%9B%91%E6%8E%A7%E8%84%9A%E6%9C%AC%E5%B9%B6%E9%81%BF%E5%85%8D%E9%87%8D%E5%A4%8D%E6%89%A7%E8%A1%8C%E8%84%9A%E6%9C%AC&amp;diff=1439&amp;oldid=prev</id>
		<title>Evan：​/* reference */</title>
		<link rel="alternate" type="text/html" href="https://wiki.linuxsa.org/index.php?title=%E8%BF%9B%E7%A8%8B%E7%9B%91%E6%8E%A7%E8%84%9A%E6%9C%AC%E5%B9%B6%E9%81%BF%E5%85%8D%E9%87%8D%E5%A4%8D%E6%89%A7%E8%A1%8C%E8%84%9A%E6%9C%AC&amp;diff=1439&amp;oldid=prev"/>
		<updated>2022-07-13T03:50:59Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;reference&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新页面&lt;/b&gt;&lt;/p&gt;&lt;div&gt;[[category:shell]] [[category:devops]]  &lt;br /&gt;
==mysql进程监控脚本shell==&lt;br /&gt;
=== cndw version===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cndw version &lt;br /&gt;
&lt;br /&gt;
CPID=$$   #$$ 是脚本运行的当前进程ID号&lt;br /&gt;
RUN=&amp;quot;`ps -ef | grep &amp;quot;$0&amp;quot; | grep -v &amp;quot;grep&amp;quot; | grep -v &amp;quot;$CPID&amp;quot; | wc -l`&amp;quot;  #$0 是脚本本身&amp;gt;的名字&lt;br /&gt;
[ &amp;quot;$RUN&amp;quot; -gt 1 ] &amp;amp;&amp;amp; exit&lt;br /&gt;
&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
Mycou=`ps -ef | grep data_from_ok:batch_clean | grep -v grep | wc -l`&lt;br /&gt;
&lt;br /&gt;
if  [ $Mycou -eq 0 ]&lt;br /&gt;
then &lt;br /&gt;
#echo &amp;#039;run at&amp;#039; &amp;gt;&amp;gt;/data/betch-clean.log&lt;br /&gt;
date  &amp;gt;&amp;gt;/data/betch-clean.log&lt;br /&gt;
你要执行的命令&lt;br /&gt;
fi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===qcloud version  2022 ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
详细请见最下面&lt;br /&gt;
agent_name=&amp;quot;$installPath/bin/sgagent&amp;quot;&lt;br /&gt;
check_user()&lt;br /&gt;
{&lt;br /&gt;
    if [ &amp;quot;root&amp;quot; != &amp;quot;`whoami`&amp;quot; ]; then&lt;br /&gt;
        echo &amp;quot;Only root can execute this script&amp;quot;&lt;br /&gt;
        exit 2&lt;br /&gt;
    fi&lt;br /&gt;
}&lt;br /&gt;
check_alive()&lt;br /&gt;
{&lt;br /&gt;
    status=`ps ax | grep &amp;quot;$agent_name&amp;quot; | grep -v &amp;quot;grep&amp;quot; |wc -l`&lt;br /&gt;
&lt;br /&gt;
    if [ $status -ne 0 ]; then&lt;br /&gt;
        # process exist&lt;br /&gt;
        echo &amp;quot;stargate agent already exist&amp;quot;&lt;br /&gt;
        exit 1&lt;br /&gt;
    fi&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
### Main Begin ###&lt;br /&gt;
#前面这些全是检查func&lt;br /&gt;
check_user&lt;br /&gt;
check_alive&lt;br /&gt;
&lt;br /&gt;
你运行的脚本的命令&lt;br /&gt;
ret=$?&lt;br /&gt;
if [ $ret -eq 0 ]&lt;br /&gt;
then&lt;br /&gt;
    echo &amp;quot;xxxx run succ&amp;quot;&lt;br /&gt;
else&lt;br /&gt;
    echo &amp;quot;xxxx run failed, errcode: $ret&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
exit $ret&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
# 请放到crontab中运行，如（注意要以后台方式运行，因为脚本是常驻不退出的）：&lt;br /&gt;
# Usage */20 * * * *   /home/mon/proce-moin.sh   &amp;gt; /dev/null 2&amp;gt;&amp;amp;1 &amp;amp;&lt;br /&gt;
&lt;br /&gt;
LOCK_FILE=&amp;quot;/tmp/my.lock&amp;quot;&lt;br /&gt;
if [[ -e $LOCK_FILE ]] ; then&lt;br /&gt;
echo &amp;quot;re-entry, exiting&amp;quot;&lt;br /&gt;
exit 1&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
### Placing lock file&lt;br /&gt;
touch $LOCK_FILE&lt;br /&gt;
echo -n &amp;quot;Started...&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 #ps -ef | grep  proce-moin&lt;br /&gt;
#if [ $? -eq 0 ]&lt;br /&gt;
#then &lt;br /&gt;
#	exit 0&lt;br /&gt;
#fi&lt;br /&gt;
#checkmyself &lt;br /&gt;
#mypn=`ps -ef | grep proce-moin | grep -v grep | wc -l`&lt;br /&gt;
##if  [ $mypn -gt 1 ]&lt;br /&gt;
#if  [ -n &amp;quot;$myupn&amp;quot; ]&lt;br /&gt;
#then &lt;br /&gt;
#    exit 0&lt;br /&gt;
#fi&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 ps -ef | grep mysqld | grep -v grep&lt;br /&gt;
 if  [ $? -eq 0 ]&lt;br /&gt;
 then &lt;br /&gt;
	 echo  &amp;quot;mysqlok&amp;quot;&lt;br /&gt;
        #exit 1&lt;br /&gt;
 else&lt;br /&gt;
	 systemctl  start  mysqld.service&lt;br /&gt;
&lt;br /&gt;
 fi&lt;br /&gt;
 sleep  500&lt;br /&gt;
### Removing lock&lt;br /&gt;
rm -f $LOCK_FILE&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Done.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[evan@ ~]$ cat /usr/local/qcloud/stargate/admin/start.sh &lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
umask 0022&lt;br /&gt;
unset IFS&lt;br /&gt;
unset OFS&lt;br /&gt;
unset LD_PRELOAD&lt;br /&gt;
unset LD_LIBRARY_PATH&lt;br /&gt;
export PATH=&amp;#039;/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin&amp;#039;&lt;br /&gt;
&lt;br /&gt;
if [ -w &amp;#039;/usr&amp;#039; ]; then&lt;br /&gt;
    installPath=&amp;quot;/usr/local/qcloud/stargate&amp;quot;&lt;br /&gt;
else&lt;br /&gt;
    installPath=&amp;quot;/var/lib/qcloud/stargate&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
agent_name=&amp;quot;$installPath/bin/sgagent&amp;quot;&lt;br /&gt;
&lt;br /&gt;
check_user()&lt;br /&gt;
{&lt;br /&gt;
    if [ &amp;quot;root&amp;quot; != &amp;quot;`whoami`&amp;quot; ]; then&lt;br /&gt;
        echo &amp;quot;Only root can execute this script&amp;quot;&lt;br /&gt;
        exit 2&lt;br /&gt;
    fi&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
check_alive()&lt;br /&gt;
{&lt;br /&gt;
    status=`ps ax | grep &amp;quot;$agent_name&amp;quot; | grep -v &amp;quot;grep&amp;quot; |wc -l`&lt;br /&gt;
&lt;br /&gt;
    if [ $status -ne 0 ]; then&lt;br /&gt;
        # process exist&lt;br /&gt;
        echo &amp;quot;stargate agent already exist&amp;quot;&lt;br /&gt;
        exit 1&lt;br /&gt;
    fi&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
### Main Begin ###&lt;br /&gt;
&lt;br /&gt;
check_user&lt;br /&gt;
check_alive&lt;br /&gt;
cd $(dirname $0)&lt;br /&gt;
export LD_LIBRARY_PATH=$installPath/lib:$LD_LIBRARY_PATH&lt;br /&gt;
$agent_name -d&lt;br /&gt;
&lt;br /&gt;
ret=$?&lt;br /&gt;
if [ $ret -eq 0 ]&lt;br /&gt;
then&lt;br /&gt;
    echo &amp;quot;stargate agent run succ&amp;quot;&lt;br /&gt;
else&lt;br /&gt;
    echo &amp;quot;stargate agent run failed, errcode: $ret&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
exit $ret&lt;br /&gt;
&lt;br /&gt;
### Main End ###&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=reference=&lt;br /&gt;
[https://blog.csdn.net/sweeper_freedoman/article/details/103132999  Shell防止执行程序被多重启动]&lt;br /&gt;
&lt;br /&gt;
https://github.com/eyjian/mooon/tree/master/mooon&lt;br /&gt;
&lt;br /&gt;
[https://blog.csdn.net/yuki5233/article/details/83994843  Shell编程---监控检查进程是否存活]&lt;br /&gt;
&lt;br /&gt;
[https://cloud.tencent.com/developer/article/1179668 通用的进程监控重拉起bash脚本process_monitor.sh]&lt;br /&gt;
&lt;br /&gt;
[https://blog.csdn.net/Primeprime/article/details/78538757  shell脚本监控进程]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://blog.csdn.net/weixin_44100850/article/details/94588412  Shell脚本监控程序运行情况（重启程序）]&lt;br /&gt;
&lt;br /&gt;
[https://segmentfault.com/a/1190000019444629 实现简单的监控脚本（Bash的执行和异常捕获）]&lt;/div&gt;</summary>
		<author><name>Evan</name></author>
	</entry>
</feed>