很多朋友更喜欢windows下面的可以参考下面的代码
第一种方法:也比较普遍的方法,包括rsync、serv_u等都可以,通过查找进程中的exe文件,例如mysql就是mysqld.exe
1
2
3
4
5
6
7
8
9
10
11
|
@ echo off for /f "usebackq" %%i in (` "tasklist|find /c " mysqld.exe "" `) do ( set chkstat=%%i ) if %chkstat% == 0 ( net start mysql echo ================ >> % date :~0,10%.log echo % date % % time % check mysql service stop >> % date :~0,10%.log echo restart mysql service! >> % date :~0,10%.log echo ================ >> % date :~0,10%.log ) |
第二种方法:
1
2
3
4
5
6
7
8
9
10
11
12
13
|
@ echo off for /f "skip=3 tokens=4" %%i in ( 'sc query mysql' ) do set "zt=%%i" &goto :next :next if /i "%zt%" == "RUNNING" ( echo 已经发现该服务在运行,正在已经关闭服务 net stop mysql ) else ( echo 该服务现在处理停止状态,正在现在开启服务 net start mysql ) exit pause |
linux系统中通过shell命令实现
检测 MySQL 是否宕掉,如果宕掉则启动
如果你的 MySQL 经常宕机,可以用这个脚本来实现宕机后自动启动,把它加到 crontab 里执行即可。
详细介绍请看 http://www.codeproject.com/Articles/988967/Mysql-Uptime-Check-Script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
#!/bin/bash result=` /usr/bin/mysqladmin ping ` expected= 'mysqld is alive' if [[ "$result" != "$expected" ]] then echo "It's dead - restart mysql" # email subject SUBJECT= "[MYSQL ERROR] - Attempting to restart service" # Email To ? EMAIL= "info@endyourif.com" # Email text/message EMAILMESSAGE= "/tmp/emailmessage.txt" echo "$result was received" > $EMAILMESSAGE echo "when we were expected $expected" >>$EMAILMESSAGE # send an email using /bin/mail mail -s "$SUBJECT" "$EMAIL" < $EMAILMESSAGE sudo /etc/init .d /mysql restart fi |
方法二、
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
#!/bin/bash #mysql check PORT= "0" PORT=` netstat -lnt | grep 3306 | wc -l ` echo $PORT if [ $PORT - eq 1 ] then echo "mysql is running" else echo "mysql is not running" echo "progrome reeady to start mysql " sudo service mysql start . /check_mysql .sh fi |