微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

你知道linux下crontab中的%有啥特殊意义吗?

下面由linux系统教程栏目给大家介绍linux下crontab中%的使用,及其特殊含义,希望对需要的朋友有所帮助!

linux下crontab中%的使用

crontab中下面的脚本不能

 0 1 * * *   (cd /u01/prod; rsync -avz app 192.168.0.192:/u01/prod/) &>/home/applprod/backuplog/rsync_`date +%Y%m%d_%H%M%s`.log

执行的时候,/var/log/messages日志中显示

Sep 22 22:50:01 ebsapp CROND[13389]: (applprod) CMD ((cd /u01/prod; rsync -avz app 192.168.0.192:/u01/prod/) &>/home/applprod/backuplog/rsync_`date +)

好像是命令被截断的样子。

于是我把要执行的命令都封装到一个脚本中,放到crontab中执行。

但是稍后查看crontab的manpage时发现,%在crontab中有特殊含义:

The  sixth  field (the rest of the line) specifies the command to be run.  The entire command portion of the line, up to a new-
       line or % character, will be executed by /bin/sh or by the shell specified in the SHELL variable of the cronfile.   Percent-signs
       (%)  in  the  command, unless escaped with backslash (\), will be changed into newline characters, and all data after the first %
       will be sent to the command as standard input.

到这里问题已经清楚了,并不是crontab命令被截断,而是被理解成另外的含义了,解决方法也有了,就是将%进行转义,修改之后的脚本变成了:

03 23 * * * (cd /u01/prod; rsync -avz app 192.168.0.192:/u01/prod/) &>/home/applprod/backuplog/rsync_`date +\%Y\%m\%d_\%H\%M\%s`.log

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐