【问题标题】:Insert entry into crontab unless it already exists (as one-liner if possible) [duplicate]将条目插入 crontab,除非它已经存在(如果可能,作为单行)[重复]
【发布时间】:2015-01-29 09:20:04
【问题描述】:

将条目插入 /etc/crontab 的首选方法是什么,除非它存在,最好使用单行?

这是我希望放入 /etc/crontab 的示例条目,除非它已经存在于其中。

*/1 *  *  *  * some_user python /mount/share/script.py

我在 CentOS 6.6 上,到目前为止我有这个:

if grep "*/1 *  *  *  * some_user python /mount/share/script.py" /etc/crontab; then echo "Entry already in crontab"; else echo "*/1 *  *  *  * some_user python /mount/share/script.py" >> /etc/crontab; fi 

【问题讨论】:

    标签: bash centos6


    【解决方案1】:

    你可以这样做:

    grep 'some_user python /mount/share/script.py' /etc/crontab || echo '*/1 *  *  *  * some_user python /mount/share/script.py' >> /etc/crontab
    

    如果该行不存在,grep 将返回 1,因此将执行 or 的右侧 ||

    【讨论】:

    • 我知道这些天我们不应该直接编辑 /etc/crontab - 我们将如何使用 crontab -e 来编辑?
    • (crontab -l | grep 'some_user python /mount/share/script.py') || { crontab -l; '*/1 * * * * some_user python /mount/share/script.py'; } | crontab -
    • @PhilJ 为什么我们在 '*/1 * * * *....' 之前使用 crontab -l ?
    • 对我不起作用:“权限被拒绝”。将通过tee探索选项
    • @PhilJ 遇到错误-bash: */1 * * * * some_user python /mount/share/script.py: No such file or directory
    【解决方案2】:

    分解文件名并使用 q & F 选项 file="/etc/crontab"; grep -qF "some_user python /mount/share/script.py" "$file" || echo "*/1 * * * * some_user python /mount/share/script.py"

    【讨论】:

      【解决方案3】:

      你可以这样做:

      if grep "\*\/5 \* \* \* \* /usr/local/bin/test.sh" /var/spool/cron/root; then echo "Entry already in crontab"; else echo "*/5 * * * * /usr/local/bin/test.sh" >>  /var/spool/cron/root; fi
      

      或者更简洁:

      grep '\*\/12 \* \* \* \* /bin/yum makecache fast' /var/spool/cron/root \
          || echo '*/12 * * * * /bin/yum makecache fast' >> /var/spool/cron/root
      

      【讨论】:

        猜你喜欢
        • 2014-03-02
        • 2018-03-15
        • 1970-01-01
        • 1970-01-01
        • 2019-04-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多