吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1747|回复: 8
收起左侧

[其他原创] Linux中crontab的shell脚本小技巧--动态添加任务

[复制链接]
vsyour 发表于 2022-8-30 14:37
执行crontab 时由于我们编写脚本用的是bash解释器, 而在用脚本自动设定crontab 没有指定bash, 这样会导致系统在执行程序时出现一些未预料的错误.
下面记录一下如何解决这个问题,

安排

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

方法1:
[Bash shell] 纯文本查看 复制代码
( crontab -l 2>/dev/null | grep -v 'SHELL=/bin/'; echo 'SHELL=/bin/bash' ) | crontab -



方法2:
这个方法会先判断一下crontab 中是否指定了SHELL, 如果没有才执行下面的添加命令.  其中的 cron_job 变量是你需要增加的执行命令.
[Bash shell] 纯文本查看 复制代码
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吾爱币 +1 热心值 +1 收起 理由
kerwincsc + 1 + 1 用心讨论,共获提升!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

jinhougou 发表于 2022-8-30 14:55
感谢大佬受教了
guohuanxian 发表于 2022-8-30 15:15
小蓝人 发表于 2022-8-30 15:15
Khaoss 发表于 2022-8-30 16:08
感谢大佬,受教受教
爱飞的猫 发表于 2022-8-30 19:50
本帖最后由 爱飞的猫 于 2022-8-30 19:51 编辑
  1. 可以直接新建文件到 /etc/cron.d/文件名(格式同 /etc/crontab),不影响已经定义好的规则。
  2. 可以把脚本写到文件系统再使用 bash 执行(如 bash /opt/my-app/cron/work1.sh)。后续更新也方便,不需要再改 crontab 文件。
 楼主| vsyour 发表于 2022-9-1 09:05
爱飞的猫 发表于 2022-8-30 19:50
[md]1. 可以直接新建文件到 `/etc/cron.d/文件名`(格式同 `/etc/crontab`),不影响已经定义好的规则。
2 ...

感谢,非常棒。

skoy03 发表于 2022-9-6 11:25
前来学习了!
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 03:54

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表