A-A+
Linux下定时运行SQL脚本
环境:CentOS,MySQL。
第一步:创建一个reback.sh文件,文件内容如下:
- #!/bin/sh
- mysql -uroot -p123456 -Dmydb</mnt/source.sql
连接MySQL数据库,在mydb库内运行一段sql脚本,我是用来定时清理数据的。
第二步:通过chmod命令赋予该脚本的执行权限chmod 755 reback.sh,使用ls命令查看时,该文件名称显示为绿色即赋予权限成功。
第三步:设置crontab。执行以下命令:
- vim /etc/crontab
增加一行定时任务,如下:
- */30 * * * * root /mnt/reback.sh
上面的意思是:每隔30分钟,使用root账户,执行reback.sh一次。
第四步:重启cron服务。
- service crond restart
需要注意的:
1. cron相关命令:
安装crontab:
- yum install crontabs
服务操作说明:
- service crond start //启动服务
- service crond stop //关闭服务
- service crond restart //重启服务
- service crond reload //重新载入配置
- service crond status //启动服务
查看crontab服务是否已设置为开机启动,执行命令:
- ntsysv
加入开机自动启动:
- chkconfig –level 35 crond on
2. 日志相关
如果命令没有执行成功,可以查看日志,日志在“/var/log/cron”下,可以看到:
- (root) MAIL (mailed 86 bytes of output but got status 0x004b#012)
具体的信息需要去查看邮件,如果不存在“cd /var/spool/mail/root”,可以使用如下命令启动服务试试:
- service postfix start
3. sh文件格式
一般都是在windows系统中编辑sh文件,然后拷贝至linux系统中,在定时执行的时候就会出现编码格式问题,可以使用vi或vim命令打开文件,然后输入以下命令查询文件编码格式:
- :set fileformat
使用如下命令设置文件编码格式:
- :set fileformat=unix