MySQL Crontab 检查

MySQL Crontab 检查

我有一个从 digitalocean(1gb Ram)运行的 serverpilot.io 服务器,MySQL 每周会崩溃一次,统计信息显示服务器使用了 1gb 中的 ~256mb,但 mysql 会崩溃并显示内存不足......

为了解决这个问题,我找到了这个脚本:

service mysql status| grep 'mysql start/running' > /dev/null 2>&1

#!/bin/bash
if [[ ! "$(/usr/sbin/service mysql status)" =~ "start/running" ]]
then
  /usr/sbin/service mysql start
fi

当我直接运行它时它可以工作bash /srv/mysql.sh

我也跑过chmod +x /srv/mysql.sh

我也尝试过:

* * * * * sh /srv/mysql.sh

* * * * * bash /srv/mysql.sh

* * * * * /usr/bin/sh /srv/mysql.sh

* * * * * /srv/mysql.sh

每次运行 mysql 时我都会收到这封电子邮件,但 mysql 无法正常启动

/srv/mysql.sh: 4: /srv/mysql.sh: [[: not found

当我运行“service mysql stop”并使用“service mysql status”检查时,mysql 服务仍然停止并且不起作用。

任何建议将不胜感激

编辑 1:我>>/srv/cronlog.log 2>&1在 crontab 行的末尾添加了

我得到了这个:

/srv/mysql.sh: 5: /srv/mysql.sh: [[: not found
/srv/mysql.sh: 5: /srv/mysql.sh: [[: not found
/srv/mysql.sh: 5: /srv/mysql.sh: [[: not found
/srv/mysql.sh: 5: /srv/mysql.sh: [[: not found

编辑2:我改为* * * * * bash /srv/mysql.sh >>/srv/cronlog.log 2>&1

 * Starting MySQL database server mysqld
   ...done.
 * Checking for tables which need an upgrade, are corrupt or were 
not closed cleanly.

Mysql 仍然处于测试阶段

编辑 3:crontablog.log 的尾部

 * Starting MySQL database server mysqld
   ...done.
 * Starting MySQL database server mysqld
   ...done.
 * Starting MySQL database server mysqld
   ...done.
 * Starting MySQL database server mysqld
   ...done.

答案1

在搜索过程中,我偶然发现了一个更好的脚本并决定尝试一下,并且它有效:

#!/bin/bash
PATH=/usr/sbin:/usr/bin:/sbin:/bin
if [[ ! "$(/usr/sbin/service mysql status)" =~ "start/running" ]]
then
    echo "MySQL restarted" | mail -s "Email Subject" [email protected]
    sudo service mysql start
fi

更多信息请点击此处http://cssjockey.com/如何创建cron作业以启动mysql-if-it-stops/

相关内容