我正在尝试执行以下一系列命令来创建MySQL数据库的备份。
当我尝试使用crontab -e将命令添加到我的crontab时,我收到错误消息“错误在crontab文件中,无法安装”,并询问我是否要重试。
mkdir /home/mysql-backup/`date '+%m-%d-%Y'`; mysql -s -r -e 'show databases' | while read db; do mysqldump $db -r /home/mysql-backup/`date '+%m-%d-%Y'`/${db}.sql; done; rm -r -f `date --date="1 week ago" +%m-%d-%Y`; du -k |sort -n > output; mail -s "MySQL Backups" "steven@brightbear.net" < output此文件中是否有我应该更改的内容?或者我应该考虑创建一个脚本文件并从cron调用它。
提前感谢您所能提供的任何帮助。
发布于 2013-02-08 08:40:44
如果你把这个脚本给了crontab -e,它当然不会同意。crontab文件中的一行应该以5个字段开头,指示您希望脚本运行的时间,作为can be read in crontab's manpage。
另一方面,现在大多数Linux发行版都预置了每小时执行一次(/ etc /cron.hourly)、每天执行一次(/etc/cron.daily)等的功能。只需将脚本放在适当目录下的文件中,它就会在选定的时间栅格中执行,这样就容易多了。一个额外的优点是,在这些文件中,您不会被迫将所有内容都塞到一行中。
发布于 2013-02-08 08:40:01
是的,就风格而言,我鼓励将SQL命令放到shell脚本中,然后从cron. 运行shell脚本(并且,正如新指出的,如果命令序列被分成多行并带有注释,则更容易维护/调试。)但是--这就是您输入到crontab中的所有内容吗?请查看man crontab,并添加指定命令运行时间的字段。
发布于 2013-02-08 08:51:34
从crontab(5)手册页上看,百分号(%)似乎有特殊的含义,所以这可能就是您遇到麻烦的地方。
是的,您应该将命令放入一个单独的shell脚本中,然后从crontab行调用它。这还将使读取crontab文件变得更加容易,并且您可以很好地格式化脚本,使其更易于维护。您可以通过这种方式从crontab中单独测试它。
https://stackoverflow.com/questions/14763687
复制相似问题