我如何动态更改 crontab?

我如何动态更改 crontab?

我需要创建一个 bash 脚本以便:

  1. 清空我的根 Crontab;
  2. 通过 bash 脚本插入新的 Cronjobs。

对于第一点我可以使用crontab -r

对于第二点这里我找到了这个脚本:

#!/bin/bash

lines="* * * * * /path/to/command"
(crontab -u root -l; echo "$lines" ) | crontab -u root -

我怎样才能在 Bash 脚本中将它们结合在一起?

像这样:

#!/bin/bash 

crontab -r 

line="* * * * * /path/to/command; 
      * * * * * /path/to/command2;
      * * * * * /path/to/command3" 

(crontab -u root -l; echo "$line" ) | crontab -u root -

答案1

您发布的示例将打印当前 crontab 并注入新指令。

如果你打算只注入新的指令,那么删除当前的 crontab,而不是你的

lines="* * * * * /path/to/command"
( crontab -u root -l; echo "$lines" ) | crontab -u root -

搭配:

lines="* * * * * /path/to/command"
echo "$lines" | crontab -u root -

而且,正如您在评论中指出的那样,添加多个 cron 时使用分号作为分隔符是错误的。您可以这样做:

lines=" line1
line2"

或者:

crontab -u root - <<EOF
line1
line2
EOF

或者:

(
    echo line1
    echo line2
) | crontab -u root -

相关内容