我已经预定了一些cronjob。
当我crontab -e
时,我会找到现有的cronjobs。
* * * * * #Runs every minute
30 * * * * #Runs at 30 minutes past the hour
45 6 * * * #Runs at 6:45 am every day
45 18 * * * #Runs at 6:45 pm every day
00 1 * * 0 #Runs at 1:00 am every Sunday
00 1 * * 7 #Runs at 1:00 am every Sunday
现在我想添加另一个cronjob
,但不需要手动执行crontab -e
。并安排工作。
我在文件中有cronjob。我做了如下:
crontab /home/$USER/new_cronjob
如上所述,所有现有作业都将被删除,并且只添加了new_cronjob
* * * * * #Runs every minute
30 * * * * #Runs at 30 minutes past the hour
45 6 * * * #Runs at 6:45 am every day
45 18 * * * #Runs at 6:45 pm every day
00 1 * * 0 #Runs at 1:00 am every Sunday
00 1 * * 7 #Runs at 1:00 am every Sunday
* * * * * /home/$USER/new_cronjob
我的结果crontab /home/$USER/new_cronjob
:
* * * * * /home/$USER/new_cronjob
实现我想要的正确方法是什么?
答案 0 :(得分:2)
您可以使用所有cron作业创建临时文件:
crontab -l > /tmp/temp_crontab
cat /home/$USER/new_cronjob >> /tmp/temp_crontab
crontab /tmp/temp_crontab
答案 1 :(得分:1)
您可以通过将旧的crontab和文件的内容传递给crontab -
来附加到现有的crontab,如下所示:
{ crontab -l; cat /home/$USER/new_cronjob; } | crontab -
{ ... }
是对多个命令进行分组。
我们在这里对两个命令进行分组,以便我们可以将两者的完整输出组合在一起。
答案 2 :(得分:0)
除了@janos's answer中演示的标准方法,以防止重复条目之外,您还需要在重写crontab之前grep -v
将它们删除:
{
line="* * * * * /home/$USER/new_cronjob"
crontab -l | grep -Fv "$line"
echo "$line"
} 2>/dev/null | crontab -