0%

274_shell写crontab计划任务

QQ群:397745473

274_shell写crontab计划任务

执行crontab 时由于我们编写脚本用的是bash解释器, 而在用脚本自动设定crontab 没有指定bash, 这样会导致系统在执行程序时出现一些未预料的错误. 下面记录一下如何解决这个问题,

crontab 动态添加任务测试过几种方法, 我最喜欢第2种. 因为 SHELL=/bin/bash 会永远在第一行. 而方法1 有可能会把 SHELL=/bin/bash 加到文件末尾,

方法1

1
( crontab -l 2>/dev/null | grep -v 'SHELL=/bin/'; echo 'SHELL=/bin/bash' ) | crontab -

方法2

这个方法会先判断一下crontab 中是否指定了SHELL, 如果没有才执行下面的添加命令. 其中的 cron_job 变量是你需要增加的执行命令.

1
2
3
4
5
6
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

参考

1
2
3
4
5
shell脚本常用命令总结:
https://vksec.com/175_shell%E8%84%9A%E6%9C%AC%E5%B8%B8%E7%94%A8%E5%91%BD%E4%BB%A4%E6%80%BB%E7%BB%93.html
crontab 动态添加任务: https://blog.csdn.net/qq_37933685/article/details/116714188
https://blog.csdn.net/xiadeliang1111/article/details/112305929
https://codeantenna.com/a/n4KnSXzcFr

QQ群:397745473

欢迎关注我的其它发布渠道