Linux中crontab的shell脚本小技巧--动态添加任务
执行crontab 时由于我们编写脚本用的是bash解释器, 而在用脚本自动设定crontab 没有指定bash, 这样会导致系统在执行程序时出现一些未预料的错误.下面记录一下如何解决这个问题,
安排
crontab 动态添加任务测试过几种方法, 我最喜欢第2种. 因为 SHELL=/bin/bash 会永远在第一行. 而方法1 有可能会把 SHELL=/bin/bash 加到文件末尾,
方法1:
( crontab -l 2>/dev/null | grep -v 'SHELL=/bin/'; echo 'SHELL=/bin/bash' ) | crontab -
方法2:
这个方法会先判断一下crontab 中是否指定了SHELL, 如果没有才执行下面的添加命令.其中的 cron_job 变量是你需要增加的执行命令.
if ! crontab -l 2>/dev/null | grep 'SHELL=/bin/' >/dev/null 2>&1 ;then
crontab <<-EOF `crontab -l`
SHELL=/bin/bash
$cron_job
EOF
fi
感谢大佬受教了 过来看看 感谢大佬受教了 感谢大佬,受教受教 本帖最后由 爱飞的猫 于 2022-8-30 19:51 编辑
1. 可以直接新建文件到 `/etc/cron.d/文件名`(格式同 `/etc/crontab`),不影响已经定义好的规则。
2. 可以把脚本写到文件系统再使用 bash 执行(如 `bash /opt/my-app/cron/work1.sh`)。后续更新也方便,不需要再改 crontab 文件。 爱飞的猫 发表于 2022-8-30 19:50
1. 可以直接新建文件到 `/etc/cron.d/文件名`(格式同 `/etc/crontab`),不影响已经定义好的规则。
2 ...
感谢,非常棒。
前来学习了!
页:
[1]