我有一个从 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/