今天想给服务器加个自动备份mysql数据库的功能(别怪我这么久才加,阿里云每天全盘备份的,不怕丢数据库),本以为只要5分钟就能搞定的,结果入了两个大坑。

我的crontab是这样写的:

 * * * mysqldump -u user -pxxxx database > "/alidata/backup/imyzf.com/$(date +%F\ %T).sql"

首先,是百分号(%)。

在crontab -e中输入的命令里,第一个%会被认为是标准输入的开始,接下来的%都会被认为是换行。所以在这里原本只是格式化日期的%被当成了标准输入,命令就出问题了。(详见:http://www.hcidata.info/crontab.htm)
解决方案有两种,一是用上面链接里提到的sed;我采用了另外一种方法,把命令写到了sh文件里(为什么?因为还有一个大坑)。

然后,是环境变量。

即使解决了上面的问题,还是不能正常执行任务,因为crontab的环境变量是另外定义的。通过cat /etc/crontab你会发现默认的PATH是/sbin:/bin:/usr/sbin:/usr/bin,而我们的mysqldump是在/alidata/server/mysql/bin里的。

所以要修改默认设置,或者简单点,在sh文件里另外加上一行修改PATH,最后成了这样:

#!/bin/bash
PATH="$PATH:/alidata/server/mysql/bin"
mysqldump -u user -pxxxx database > "/alidata/backup/www.imyzf.com/$(date +%F\ %T).sql"

然后,我的crontab写成了这样(使用/dev/null是为了丢弃mysqldump使用标准输出的提示):

 * * * /alidata/backup/www.imyzf.com/backup.sh > /dev/null 2>&1

好了,终于搞定了!

crontab的两大坑:百分号和环境变量的更多相关文章

  1. Linux Crontab内环境变量与Shell环境变量的关系及解决问题的办法

    为了定时监控Linux系统CPU.内存.负载的使用情况,写了个Shell脚本,当达到一定值得时候,发送邮件通知.需要用到Crontab的定时任务去执行这个脚本,但是发现通过命令(./test.sh)执 ...

  2. 【linux草鞋应用编程系列】_2_ 环境变量和进程控制

    一. 环境变量     应用程序在执行的时候,可能需要获取系统的环境变量,从而执行一些相应的操作.     在linux中有两种方法获取环境变量,分述如下.   1.通过main函数的参数获取环境变量 ...

  3. Bash 是如何从环境变量中导入函数的

    在上文中曾说到: 所谓的环境变量的真实面目其实就是个任意字符串 Bash 在启动时会将 environ 数组中包含 = 号的字符串导入成为自己的变量 Bash 在启动外部命令时会将自己内部标记为环境变 ...

  4. Linux 环境变量_006

    ***Linux 环境变量指系统运行程序或命令的能快速找到其位置等其它功能,不用输入复杂命令.以$PATH环境变量为例子, $PATH决定了shell指定寻找命令或程序的路径,比较执行ls命令,如果没 ...

  5. ubuntu 设置环境变量

    两种方式设置环境变量: 1,添加到环境变量路径$PATH中 # 加到PATH末尾 export PATH=$PATH:/path/to/your/dir # 加到PATH开头 export PATH= ...

  6. Linux环境变量从用户配置改为系统配置

    部署了一个新的tomcat到一个新的用户下,发下启动失败了 /home/personal/apache-tomcat/bin/catalina.sh: line 434: /usr/lib/jvm/j ...

  7. linux中使用Crontab定时执行java的jar包无法使用环境变量的问题

    1.crontab简单使用 cmd 其实就是5个星星的事情,随便百度一下吧 5个时间标签用来标注执行的设定.比如每5分钟执行一次/5 * * * cmd 要特别注意 2.有些命令在命令行里执行很好,到 ...

  8. [CentOS] 解决 crontab 无法读取环境变量的问题

    参考资料:http://blog.slogra.com/post-238.html 1. 问题描述 一段数据处理的 shell 程序,在 shell 中手动运行,可以正确执行.但是,把它放在 cron ...

  9. [转]crontab环境变量设置

    原文连接:http://blog.csdn.net/zc02051126/article/details/20480289 come from http://www.360doc.com/conten ...

随机推荐

  1. jmeter性能测试 套路二

    1.一般我们不会通过下面这种去跑性能测试 2.我们会通过这种方式去跑性能测试 3.录制自动化 就用新的 4.录制性能测试  就用

  2. HDMI转MIPI DSI芯片方案TC358870XBG

    型号:TC358870XBG功能:HDMI1.4b转MIPI DSI通信方式:IIC分辨率:2560*1600@60fps/4k*2k@30fps电源:3.3/1.8/1.2/1.1封装形式:BGA8 ...

  3. Angular中Constructor 和 ngOnInit 的本质区别

    在Medium看到一篇Angular的文章,深入对比了 Constructor 和 ngOnInit 的不同,受益匪浅,于是搬过来让更多的前端小伙伴看到,翻译不得当之处还请斧正. 本文出处:The e ...

  4. Angular+ionic2 web端 启动程序出现短暂 白屏或黑屏 的处理小妙招

    在ionic2项目启动是会出现短暂的白屏或者黑屏,虽然很短,但是用户体验不太好.上网查了相关的资料,都是针对打包APP的解决办法,针对浏览器端使用的项目没有效果,所以自己写了样式,巧妙的避开这个问题, ...

  5. sqlserver与mysql中vachar(n)中遇到的坑

    前两天在做将mysql的数据表导入到sqlserver当中. 本人比较愚笨,操作方法 是先将mysql的数据表到处为insert脚本,再在sqlserver中执行sql脚本 在网上看了一下那些方法 , ...

  6. About Cheating and Plagiarism

    我先描述一下此次事件的具体经过.昨天3月15号的晚上十点,是第四次作业的deadline.在15号之前,只有五位同学提交了作业,而在临近deadline的这几个小时内密密麻麻地提交了二十多份作业.和第 ...

  7. 团队作业8----第二次项目冲刺(beta阶段)5.21

    1. 开会 会议内容:1.总结昨天的任务工作 2. 由潘益靖同学对当天的代码修改及功能的改善做个简单的阐述 3.每个人对项目的发表一些意见及建议 4.组长分配任务 每日讨论图片(拍摄者小组成员 武健男 ...

  8. 201521123072《java程序设计》第五周学习总结

    201521123072<java程序设计>第五周学习总结 标签(空格分隔): java学习 1. 本周学习总结 1.1 尝试使用思维导图总结有关多态与接口的知识点. 2. 书面作业 代码 ...

  9. 201521123096《Java程序设计》第五周学习总结

    1. 本周学习总结 1.1 尝试使用思维导图总结有关多态与接口的知识点. 2. 书面作业 (1)代码阅读:Child压缩包内源代码 1.1 com.parent包中Child.java文件能否编译通过 ...

  10. 201521123074 《Java程序设计》第4周学习总结

    1.本周学习总结 这次用XMind画的图,果然比百度脑图好用一点. 2.书面作业 Q1.注释的应用 使用类的注释与方法的注释为前面编写的类与方法进行注释,并在Eclipse中查看.(截图) 类注释 方 ...