1949啦网--小小 痛苦,是因为能力和欲望不匹配造成的

crontab中的百分号

经常使用crontab定时备份文件,并在备份文件名中打上日期标签。例如备份和归档命令:

tar cjf foo-`date +%Y%m%d%H%M%S`.tar.bz2 foo

将这个命令写入crontab中,会发现命令不能如期执行。直觉判断应该是反引号的内容出问题。网上的资料“部分”验证了这个想法:原来crontab将百分号转义成换行符,分号后面的内容会被当做百分号前命令的标准输入。crontab的文档原文解释如下:

解决办法

在百分号的前面加上反斜杠\转义。crontab中的写法为:

* * * * * root tar cjf foo-`date +\%Y\%m\%d\%H\%M\%S`.tar.bz2 foo

注意

问题由百分号引起,与反引号没关系。如果你觉得反引号的写法不好看,可以考虑用$方式执行命令:

* * * * * root tar cjf foo-$(date +\%Y\%m\%d\%H\%M\%S).tar.bz2 foo

使用$符号依然要转义百分号才能正常执行命令。

参考

  1. https://linux.die.net/man/5/crontab

  2. https://serverfault.com/questions/84430/whats-wrong-with-my-cronjob-syntax-im-trying-to-use-a-backtick

原文链接:https://www.qiquanji.com/post/4859.html

本站声明:网站内容来源于网络,如有侵权,请联系我们,我们将及时处理。

微信扫码关注

更新实时通知

作者:xialibing 分类:网络教程 浏览: