Linux(Debian)使用crontab设置定时任务
买过一些阿里云最便宜的ECS(几百元/年,1GB内存,安装Debian),使用Wordpress做小企业官网
然后隔一段时间就会出现网页打不开,显示 “建立数据库连接时出错”。原因是mysql宕机了。
一般解决的方法:
- reboot
- service mysql start
- 网友提到的在wp_options表-修复表-执行,修改wp-config.php(实际都无效)
现在,就是要设置一个定时任务:每分钟检查一次mysql是否运行?如果没有运行,则启动。
crontab可以设置任务,定时执行某个脚本——比如也可以定时执行一个PHP文件; 如果没有安装crontab,可百度一下
step1 设置定时任务
定时任务代码
# 每隔 1 分钟执行一次 test.sh */1 * * * * /var/www/test.sh上述 五个星号 按顺序依次代表:0-59分钟,0-23小时,1-31某一天,1-12某个月,0-6 Sunday=0 or 7 星期几
先别管test.sh是啥,路径自定义
将上面代码添加到crontab文件
方法1:修改root用户文件
打开 /etc/crontab 文件,添加上述代码,保存即可
注意:需要root权限方法2:修改普通用户文件(建议)
直接ssh执行命令
crontab -e
会打开 /var/spool/cron/crontabs/username文件(如果没有username,这个文件还是root)
添加上述代码
按ctrl+X退出,提示是否保存,按Y,回车,会有提示:
crontab: installing new crontab本方法的好处:会检查设置是否有错误
crontab 服务重启
/etc/init.d/cron restart
或
service cron restart也有说不需要重启服务
step2 自定义任务
新建 /var/www/test.sh (我把权限设置755),刚才的crontab设置就是每分钟执行这个test.sh的
#!/bin/bash pgrep -x mysqld &> /dev/null if [ $? -ne 0 ] then /etc/init.d/mysql start else echo "MySQL server is running ." fi注意,如果把 /etc/init.d/mysql start 启动数据库命令改为:service mysql start ,则可能因为权限不够无法执行
到这里就设置好了
查看执行情况(crontab执行日志)
方法1:系统自带
- 执行结果不论是否成功,都会在 /var/spool/mail/mail文件中有crontab执行日志的记录
- 另外说在/var/log/cron.log有,我在Debian中没找到
方法2:自定义日志
新建 /var/www/mysql_start.log(我把权限设置555)
把test.sh改成如下:
#!/bin/bash pgrep -x mysqld &> /dev/null if [ $? -ne 0 ] then echo "At time: `date`: MySQL is stop .">> /var/www/mysql_start.log /etc/init.d/mysql start else echo "MySQL server is running ." fi
然后每分钟的执行情况,都会写入这个日志文件,
相关推荐
liguojia 2020-10-20
木子李CSDN 2020-06-05
kernelstudy 2020-05-21
playlinuxxx 2020-05-08
IsanaYashiro 2020-04-22
fenxinzi 2020-04-07
山兔与孟婆 2020-03-28
stoneechogx 2020-02-17
onlykg 2020-02-15
大老张学编程 2020-02-09
linuxisperfect 2020-01-09
liuyh 2019-12-22
蜀川居 2013-08-05
happywxp 2013-03-27
chenzelin 2013-03-31
NeverAgain 2019-12-13
mieleizhi0 2019-12-05
ningningmingming 2019-11-13
playlinuxxx 2013-09-02