首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用脚本在crontab中添加新任务

如何使用脚本在crontab中添加新任务
EN

Stack Overflow用户
提问于 2017-03-21 23:27:54
回答 2查看 2.4K关注 0票数 1

我需要使用crontab添加要在特定时间完成的新任务。我需要使用脚本添加这些任务。我会做这样的事情:

代码语言:javascript
运行
复制
echo "command" >> /etc/crontab

但我知道这个crontab文件仅供根用户使用,因此我需要使用:

代码语言:javascript
运行
复制
crontab -e

打开我自己的任务列表。问题是前面的命令打开一个临时文件,我找不到它。(它在/tmp中有一个随机名称,还是别的什么?)我会做这样的事情:

代码语言:javascript
运行
复制
echo "5 5 5 5 5 user command" | crontab -e

在我自己的crontab列表中写一个新行,但这不起作用。

我做错什么了吗?有人想办法解决这个问题吗?我在用Ubuntu。

EN

回答 2

Stack Overflow用户

发布于 2017-03-22 02:29:02

您对当前的方法有困难,因为crontab -e不从stdin中读取。但是,没有crontab开关的-e确实是从stdin读取的。

最明显的方法是将新的cron作业附加到现有的crontab:

代码语言:javascript
运行
复制
crontab -l > current_cron
cat >> current_cron << EOF
# new cron job here
EOF
crontab < current_cron
rm -f current_cron

这种方法的明显问题是没有检查cron作业是否已经存在。在那里它会变得有点棘手。

解决这一问题的一种方法是在crontab中有一个“脚本管理部分”,通常在底部:

代码语言:javascript
运行
复制
# DO NOT MODIFY THE SECTION BELOW MANUALLY.  IT'S MANAGED BY AUTOMATION.
#---script managed section---
"cron job 1"
"cron job 2"

然后,脚本可以管理这个部分--最好只有一个脚本来管理所有自动cron作业:

代码语言:javascript
运行
复制
crontab -l > current_cron
sed '/---script managed section---/q' current_cron > new_cron
cat >> new_cron << EOF
# updated cron jobs here
EOF
crontab < new_cron
rm -f new_cron current_cron

如果我们需要更细粒度的控制,那么我们可以为每个托管cron作业创建一个区段,并使用开始和结束标记,并使脚本每次处理特定的部分。

但是,对于Ubuntu,还有一个更好的主意。我们可以完全取消crontab,而使用/etc/cron.d。这里,我们为每个cron作业提供了一个文件,它遵循cron作业规范的确切格式。由于cron作业和/etc/cron.d文件之间有1:1的对应关系,所以它们直接作为文件而不是通过crontab命令进行管理,因此自动化要容易得多。

来自Ubuntu上的man cron

在Debian中,cron读取/etc/cron.d目录中的文件。cron将/etc/cron.d中的文件与/etc/crontab文件一样对待(它们遵循该文件的特殊格式,即它们包括用户字段)。但是,它们独立于/etc/crontab:例如,它们不从/etc/crontab继承环境变量设置。此更改是Debian特有的。

票数 2
EN

Stack Overflow用户

发布于 2017-03-21 23:51:31

crontab使用该临时文件为您提供插入新命令的访问权限。您不能编辑自己的文件,也不能处理系统的文件副本。相反,尝试创建您自己的文件;然后我们**crontab -l获得系统crontab中列出的文件。

如果您很固执,可以尝试将vi命令流到crontab -e,但这很难做到。

够让你走了吗?

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

https://stackoverflow.com/questions/42940093

复制
相关文章

相似问题

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