crontab条目包含%号问题

来源:互联网 发布:java 线程安全的list 编辑:程序博客网 时间:2024/05/30 23:02
crontab条目中包含%号,最常见的取时间,如:date +%d,
对%需要使用\进行转义,否则不能按预期执行,正确做法为:
* * * * * echo "`date +\%d`" > /tmp/r1r.txt
而不能为
* * * * * echo "`date +%d`" > /tmp/r1r.txt


%是crontab的特殊字符,所有%后的被当作了标准输入,这可以通过“ man 5 crontab”查看到说明:
The entire command portion of the line, up to a newline or a "%" character,
will be executed by /bin/sh or by the shell specified in the SHELL variable of the cronfile.
A "%" character in the command, unless escaped with a backslash (\), 
will be changed into newline char-acters,
and all data after the first % will be sent to the command as standard input.


示例:
$ cat /tmp/hello.txt 
cat: /tmp/hello.txt: 没有那个文件或目录
$ echo -e "`crontab -l`\n* * * * * cat > /tmp/hello.txt % hello word"|crontab -
$ crontab -l|grep hello.txt
* * * * * cat > /tmp/hello.txt % hello word
$ cat /tmp/hello.txt 
 hello word
原创粉丝点击