首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过bash脚本向crontab添加bash脚本

通过bash脚本向crontab添加bash脚本
EN

Stack Overflow用户
提问于 2021-12-17 14:03:57
回答 3查看 181关注 0票数 1

我想将文件名日期添加到bash脚本中,该脚本将通过脚本添加到crontab文件中。问题是crontab文件中的条目已经被附加了日期。但我的要求是在crontab中包含日期命令。

代码语言:javascript
复制
crontab -l > "$FILENAME"
if grep -i cron "$FILENAME"; then
    echo "Cron Job already present in User's crontab file"
else
    echo "*/5 * * * * bash -x /home/cronjob/cron.sh > /home/cronjob/myjob_`date +\%Y\%m\%dT\%H\%M\%S`.log 2>&1 " >> mycron
    crontab mycron
    echo "Crontab added to User's Crontab"
fi

实际:

代码语言:javascript
复制
*/5 * * * * bash -x /home/cronjob/cron.sh > /home/cronjob/myjob_20211217053830.log 2>&1

所需经费:

代码语言:javascript
复制
*/5 * * * * bash -x /home/cronjob/cron.sh > /home/cronjob/myjob_`date +%Y%m%d%H%M%S`.log 2>&1

我也尝试过添加转义字符,但似乎不起作用。

EN

回答 3

Stack Overflow用户

发布于 2021-12-17 15:02:28

看起来你的crontab条目已经关闭了。由于%s是crontab文件中的特殊(换行符)字符,因此转义它们应该提供所需的结果:

代码语言:javascript
复制
*/5 * * * * bash -x /home/cronjob/cron.sh > /home/cronjob/myjob_`date +\%Y\%m\%d\%H\%M\%S`.log 2>&1

实现此功能的回波线是:

代码语言:javascript
复制
echo "*/5 * * * * bash -x /home/cronjob/cron.sh > /home/cronjob/myjob_\`date +\\%Y\\%m\\%dT\\%H\\%M\\%S\`.log 2>&1 " >> mycron

我证实了这在Ubuntu中是可行的。

此外,将行SHELL=/bin/bash添加到crontab文件(条目上方)可以确保bash解释crontab条目。虽然您可能不需要它,但在这种情况下,它将提供更多的可能性。

票数 0
EN

Stack Overflow用户

发布于 2021-12-17 16:30:19

使用猫

代码语言:javascript
复制
cat << '==CRONTAB_LINE==' >> mycron
*/5 * * * * bash -x /home/cronjob/cron.sh > /home/cronjob/myjob_$(date +%Y%m%dT%H%M%S).log 2>&1 
==CRONTAB_LINE==

结果

代码语言:javascript
复制
crontab -e
*/5 * * * * bash -x /home/cronjob/cron.sh > /home/cronjob/myjob_$(date +%Y%m%dT%H%M%S).log 2>&1
票数 0
EN

Stack Overflow用户

发布于 2021-12-18 00:10:29

要插入必须替换的命令输出

代码语言:javascript
复制
`date +\%Y\%m\%dT\%H\%M\%S` 

$(date +\%Y\%m\%dT\%H\%M\%S)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70394371

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档