【问题标题】:How to avoid setting up a cron if already there如果已经存在,如何避免设置 cron
【发布时间】:2018-04-12 18:35:53
【问题描述】:

我正在使用以下命令设置 cron

crontab -l | { cat; echo -e "#Adding cron task to execute imz script \n0 */1 * * * /usr/local/sbin/generate_imz_report.sh"; } | crontab -

通过 shell 脚本。每次我执行脚本时,它都会为此脚本添加一个新条目

xyx.local: ~ # crontab -l
#Adding cron task to execute imz script
0 */1 * * * /usr/local/sbin/generate_imz_report.sh
#Adding cron task to execute imz script
0 */1 * * * /usr/local/sbin/generate_imz_report.sh
#Adding cron task to execute imz script
0 */1 * * * /usr/local/sbin/generate_imz_report.sh
#Adding cron task to execute imz script
0 */1 * * * /usr/local/sbin/generate_imz_report.sh
#Adding cron task to execute imz script
0 */1 * * * /usr/local/sbin/generate_imz_report.sh
#Adding cron task to execute imz script
0 */1 * * * /usr/local/sbin/generate_imz_report.sh

为了避免这种情况,我尝试了以下方法

grep '#Adding cron task to execute imz script' /etc/crontab || crontab -l | { cat; echo -e "#Adding cron task to execute imz script \n0 */1 * * * /usr/local/sbin/generate_imz_report.sh"; } | crontab -

但这不起作用。如果 shell 脚本中已经存在,如何避免添加 cron 条目?

【问题讨论】:

    标签: linux bash shell cron


    【解决方案1】:

    如果你添加的 cron 作业已经存在,你需要检查 cron 文件

    SCRIPT="generate_imz_report.sh"
    if crontab -l | grep $SCRIPT > /dev/null ; then
        echo "Cron job already installed."
    else
        crontab -l > newcronjobs                                       # Write out old crontab
        echo "0 */1 * * * /usr/local/sbin/$SCRIPT" >> newcronjobs      # Append new cron job into cron file
        crontab newcronjobs                                            # Install new cron file
        rm newcronjobs
        echo "New cron job is added to crontab!!"
    fi
    

    【讨论】:

    • @kyodev;没找到你?
    • 当这个人没有勇气解释自己时,这很烦人(这就是我想说的,对不起我的英语)。我观察到有些人投的反对票多于他们的答案......很容易:(
    【解决方案2】:

    您确定 crontab 文件“/etc/crontab”的位置吗? 为什么不试试呢

    $( crontab -l | grep 'generate_imz_report' ) || crontab -l | { cat; echo -e "#Adding cron task to execute imz script \n0 */1 * * * /usr/local/sbin/generate_imz_report.sh"; } | crontab -
    

    【讨论】:

      猜你喜欢
      • 2015-02-18
      • 1970-01-01
      • 2019-10-21
      • 1970-01-01
      • 1970-01-01
      • 2011-10-19
      • 2022-01-08
      • 2023-03-20
      • 1970-01-01
      相关资源
      最近更新 更多