linux - crontab注意变量问题
简介
在Linux上定时任务都是使用crontab进行运行的。但是在执行任务的时候如果没有设置好,就会导致任务失败。
变量问题
crontab在执行的时候是不加载/etc/profile里面变量的,默认加载的是/etc/crontab这个文件的环境变量。
因此如果需要加载/etc/profiles里面的变量,需要先source /etc/profile
例如
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/bash source /etc/profiles mysqldump -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
相关推荐
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