【问题标题】:Add To Crontab (if not already exists) Using Bash Script使用 Bash 脚本添加到 Crontab(如果不存在)
【发布时间】:2021-12-27 05:32:19
【问题描述】:

bash 脚本将作业添加到 crontab 的正确方法是什么,例如

  • 不会有重复的工作
  • 不会使用 crontab 文件
  • (可选)接近单线

遇到了下面这个解决方案,但是不影响运行crontab -l的输出。

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

尝试将其转换为影响crontab -l

(crontab -l | grep '/mount/share/script.py') || { crontab -l; '*/1 * * * * some_user python /mount/share/script.py >> /root/foo/logs/foo.cron.log 2>&1'; } | crontab -

但是运行这个命令会报错:

-bash: */1 * * * * some_user python /mount/share/script.py >> /root/foo/logs/foo.cron.log 2>&1: No such file or directory

【问题讨论】:

    标签: linux bash ubuntu cron


    【解决方案1】:

    但是运行这个命令会报错:

    -bash: */1 * * * * some_user python /mount/share/script.py >> /root/foo/logs/foo.cron.log 2>&1: No such file or directory
    

    代码:

    (crontab -l | grep '/mount/share/script.py') || { crontab -l; '*/1 * * * * some_user python /mount/share/script.py >> /root/foo/logs/foo.cron.log 2>&1'; } | crontab -
    

    将尝试执行/运行:

    '*/1 * * * * some_user python /mount/share/script.py >> /root/foo/logs/foo.cron.log 2>&1'
    

    如果grep 失败。


    在其前面添加回显或 printf,因为 crontab 期待来自 stdin 的输入,就像您在第一个示例/代码中所做的那样,类似于:

    (crontab -l | grep '/mount/share/script.py') || { crontab -l; echo '*/1 * * * * some_user python /mount/share/script.py >> /root/foo/logs/foo.cron.log 2>&1'; } | crontab -
    

    这是一个替代方案,它是一个完整的脚本。

    #!/usr/bin/env bash
    
    cron_entry=$(crontab -l 2>&1)
    is_in_cron='/mount/share/script.py'
    new_cron_entry='*/1 * * * * some_user python /mount/share/script.py >> /tmp/foo/logs/foo.cron.log 2>&1'
    
    if [[ $cron_entry != *"$is_in_cron"* ]]; then
      printf '%s\n' "$cron_entry" "$new_cron_entry" | crontab -
    fi
    

    【讨论】:

      猜你喜欢
      • 2017-07-01
      • 2022-01-20
      • 2014-08-29
      • 2013-04-19
      • 1970-01-01
      • 2016-11-29
      • 2017-08-13
      • 1970-01-01
      相关资源
      最近更新 更多