linux执行sql脚本_linux - crontab注意变量问题

简介

在Linux上定时任务都是使用crontab进行运行的。但是在执行任务的时候如果没有设置好,就会导致任务失败。

72eca8640ffcc0a452fb3ca74febd0ca.png

变量问题

crontab在执行的时候是不加载/etc/profile里面变量的,默认加载的是/etc/crontab这个文件的环境变量。

因此如果需要加载/etc/profiles里面的变量,需要先source /etc/profile

4b6e5053c335c8fed579ac7774ecca51.png

例如

00 00 * * * mysqldump -uroot -prootpassword mydb > /data/backup/backupfile$(date +%Y%m%d%H%M).sql

加载变量:

00 00 * * * source /etc/profiles ; mysqldump -uroot -prootpassword mydb > /data/backup/backupfile$(date +%Y%m%d%H%M).sql

但是这样子,命令在终端是可以执行,但是crontab运行的时候就会报错,运行不了。这个是因为“%”引起的,第一个%会被认为是标准输入的开始,接下来的%都会被认为是换行。

更正:

00 00 * * * source /etc/profiles ; mysqldump -uroot -prootpassword mydb > /data/backup/backupfile$(date +%Y%m%d%H%M).sql

反转译一下就可以正常运行。


总结

这样子crontab任务写了一长串,感觉很乱,而且还一不小心就写错了。因此,建议写成脚本然后crontab设置执行脚本的任务即可。

vim /data/sh/backupsql.sh

#!/bin/bashsource /etc/profilesmysqldump -uroot -prootpassword mydb > /data/backup/backupfile$(date +%Y%m%d%H%M).sql

crontab -e

00 00 * * * /bin/bash /data/sh/backupsql.sh >> /tmp/backupsql.log 2>&1
e00f40474001e78865191ff7fbf74d13.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值