使用脚本编辑 cron 作业名称

使用脚本编辑 cron 作业名称

我需要在主机列表上编辑 cron 作业名称。考虑到主机数量,我们可以有一个脚本来编辑 cron 作业名称吗?

示例:/var/spool/cron有以下 cron 作业:

00 * * * * /home/app2/limit_proc_status_2048.sh >> /export/home/app2/limit_proc_status.txt

我需要找到将十进制 2048 编辑为 4096 的脚本。

答案1

要修改 crontab 条目(这些是计划和命令,它们没有名称),您必须

  1. 将当前 crontab 转储到文件中
  2. 修改文件
  3. 从文件重新加载 crontab

第一步和最后一步可以完成

crontab -l >crontab.old

crontab crontab.new

请注意,从这样的文件加载 crontab取代当前用户的所有现有 crontab 条目。

这两个操作之间发生的修改可能是一个简单的sed替换:

sed 's/limit_proc_status_2048\.sh/limit_proc_status_4096.sh/' crontab.old >crontab.new

替换模式需要足够具体,以便仅修改文件中的相应行。

最好把两者crontab.old都留在身边crontab.new,以防出现问题。


为了更容易修改作业,通常最好安排一个运行作业的脚本。在您的情况下,如果您的 crontab 调用了一个脚本,该脚本又调用并安排了重定向到日志文件等,那么您根本limit_proc_status_2048.sh不需要浪费时间。crontab唯一需要更改的是该脚本。

对于在运行之前可能需要额外逻辑和设置的作业,或者仅包含复杂命令的作业(我通常编写一个简短的脚本,并安排它来代替,对于比单个简单命令更长的任何内容)尤其如此。 。

相关内容