crontab中的命令有没有限制?
我有一个178字符的crontab命令,它似乎在执行时被截断为164。 我可以从收到的电子邮件中知道这个数字,并从这个点上改变vi的颜色。
那么这是“官方”的限制吗? 我找不到任何有关这方面的文件。
哇,我发现我的问题是什么,和线长无关。
事实certificate,我的命令有一个%(百分号),它在crontab中有特殊的含义。 它用于向STDINinput文本(请参阅为什么我的crontab无法正常工作,如何解决它? )。
所以我不得不逃脱它。 我的命令是:
gzip -c /path/to/a/file > /backup/dir/file-$(date +%F_%T).gz
变
gzip -c /path/to/a/file > /backup/dir/file-$(date +\%F_\%T).gz
从经验上讲 ,在我的所有Ubuntu机器上,每行有999个字符的截断,尽pipe我还没有find任何相关的说明文档。
我已经在Ubuntu 10.04,12.04和14.04上进行了testing,并且999个字符的计数从超出计划的第一个非空白字符开始(在我的例子中,计划是* * * * *
,等于每分钟1次) 。
注意:
首先我们计算我们要添加到crontab中的命令的字符 – 没有时间表 :
davidamick@myputer:~$ echo -n "/bin/echo '' > /tmp/test.log" | wc -c 999 davidamick@myputer:~$
将该命令添加到我们的crontab中,以便每分钟运行一次(WARN会覆盖相关用户的任何现有crontab条目)
davidamick@myputer:~$ echo "* * * * * /bin/echo '' > /tmp/test.log" | crontab - davidamick@myputer:~$
等一分钟,检查是否创build了包含所有“a”的/tmp/test.log
文件:
davidamick@myputer:~$ cat /tmp/test.log aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa davidamick@myputer:~$
重新开始,删除crontab和日志文件:
davidamick@myputer:~$ crontab -r davidamick@myputer:~$ rm /tmp/test.log davidamick@myputer:~$
添加和以前一样的命令,只增加1个字符(在我的情况下, B
):
davidamick@myputer:~$ echo "* * * * * /bin/echo '' > /tmp/test.log" | crontab - davidamick@myputer:~$
/tmp/test.lo
的文件是用你的“a”创build的。 这是因为第1000个字符被截断。 要确认,删除添加的B
,而是将1
添加到文件名,如下所示:
davidamick@myputer:~$ echo "* * * * * /bin/echo '' > /tmp/test1.log" | crontab -
/tmp/test1.lo
的文件是用你的“a”创build的。 /bin/echo
到/usr/bin/echo
的符号链接,并且发现您将不得不从命令中删除额外的4个字符。