Back to home

如何使用bash脚本动态创建cronjob

问题

如何不通过编辑器创建cronjob ?可以用脚本动态创建么?

dogbane 回答

通过如下脚本添加crontab

#write out current crontab
crontab -l > mycron
#echo new cron into cron file
echo "00 09 * * 1-5 echo hello" >> mycron
#install new cron file
crontab mycron
rm mycron

Edo 补充:(crontab -l ; echo "00 09 * * 1-5 echo hello") | crontab

TheBonsai 回答

一行代码解决:

crontab -l | { cat; echo "0 0 0 0 0 some entry"; } | crontab -

stoutie 回答

command="php $INSTALL/indefero/scripts/gitcron.php"
job="0 0 * * 0 $command"
cat <(fgrep -i -v "$command" <(crontab -l)) <(echo "$job") | crontab -

解释:

  1. <(*command*)crontab -l的输出传入fgrep
  2. fgrep 排除任何匹配$command-v 参数),大小写不敏感的内容
  3. 再次通过<(*command*)将结果传入cat
  4. cat 再接受echo "$job"输出
  5. 将所有输出通过管道传入 crontab - 最终写入