linux - 将 sed 应用于 crontab 行?

标签 linux unix sed cron

我想以编程方式更改某些 cron 作业执行的时间。 我不确定我的做法是否正确,但计划如下。

可能会发生变化的工作将在“#change-enabled”行的末尾添加注释。

15 5 7,14,21,28 * * /path/to/executable1 #change-enabled
15 * * * * /path/to/executable2
45 5 */2 * * /path/to/executable3 #change-enabled

然后我想通过 sed 将“crontab -l”的输出通过管道传输,以捕获和更改末尾带有该注释的作业,并将结果通过“crontab -”通过管道传输。

//编辑

我的直觉告诉我不要以 root 身份执行此操作,因为新的时间是使用来自第 3 方的数据确定的。 (Google Analytics Data Export API)所以/etc/cron.d/是我要远离这个应用程序的东西。

这是在调试期间一直与我当前的所有 cron 作业一起使用的命令。我一直在使用“date +%l”代替“/home/user/slow-hour”并省略“| cron -”以查看打印的内容。

crontab -l | sed -e "s/^\([^ ]*\) [0-9]* \(.*#change-enabled\)/\1`/home/user/slow-hour` \2/" | crontab -

~/slow-hour 的内容将是一个脚本,它在 Google Analytics 中获取网站配置文件的每小时数据,并寻找最慢的时间。如果出现任何错误,该脚本将在凌晨 1 点返回,请给我发送通知然后退出。

为了减少由于慢时间早于当前时间而跳过一天执行的可能性,自动 cron 重新调度程序将设置为在午夜运行,最早的时间 ~/slow-hour 将返回凌晨 1 点。

根据我过去的手动 cron 作业调整,我预计将午夜排除在最慢的时间之外不会成为我的问题。

最佳答案

定时任务-l | sed '/change-enabled$/s/pat/repl/' |定时任务-

关于linux - 将 sed 应用于 crontab 行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1251784/

相关文章:

linux - sed 命令如何与多个组一起使用

linux - ALT_SMP 和 ALT_UP 有什么作用?

linux - 如何在 bash for 循环中跳过带有注释(# 空格)的行

bash - 使用 sed/awk 将 x^2 添加到每个 "nonzero"系数

linux - 遍历进程树

windows - 如何在 Windows 中获取文件名中带有冒号的文件?

bash - 将文件内容 append 到 Bash 中现有文件的底部

Ubuntu 的 C++ 更新框架

python - 无法导入模块 'lambda_function' : No module named '_speech_py_impl'

Ruby 代码查找特定文件并重命名它,不起作用?