从脚本向cron添加行

有没有办法通过脚本向用户的cron添加行?

我通常使用crontab -e来做,但我想用shell脚本自动执行此任务。

你可以将这一行回显到当前用户crontab的底部,如下所示:

 #!/bin/bash line="* * * * * /path/to/command" (crontab -u userhere -l; echo "$line" ) | crontab -u userhere - 

如果要编辑crontab中的值,可以执行以下操作:

 $ crontab -l | sed -e 's/foo/bar/' | crontab - 

显然你需要小心你的替换,以确保它只匹配你想要改变的线; 否则所有foos变成bars (在本例中)。

此方法的优点是您不会替换整个crontab。 (一个隐喻的镊子而不是大锤。)

您可以使用任何编辑命令而不是sed 。 例如,如果您想使用ed来修饰一个看起来像这样的行:

 2 * * * * /sbin/flitch --days 3,4 > /var/log/flitch.out 2>&1 

假设这条线在很多行中,或者你有许多不同的crontabs可以在不同的系统上更新,你只知道你的线将是唯一一个带有术语flitch行。

它可能看起来像:

 $ cat /tmp/edscript /flitch s/3/9/ w q $ crontab -l > /tmp/out && ed /tmp/out < /tmp/edscript && crontab - < /tmp/out $ crontab -l ... 2 * * 1 * /sbin/flitch --days 9,4 > /var/log/flitch.out 2>&1 ... 

现在我必须承认,几乎100%的时间都会按照自己的意愿行事,但在瑞士军刀上使用额外的工具总是好的。 ^。^