Crontab的最大命令长度

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的。
  • 对于奖励certificate,创build从/bin/echo/usr/bin/echo的符号链接,并且发现您将不得不从命令中删除额外的4个字符。