是否可以让 cron 从 shell 脚本的输出中接收它的指令而不是读取静态文件?
我试图在一堆机器上管理 crontabs 并且为每台机器维护单独的 crontab 文件是一件苦差事。我希望 cron 运行一个 shell 脚本,该脚本根据给定机器是否分配给该作业来为每个作业打印出 crontab 行。我可以这样做吗?
PS-我看到一些建议 Puppet/Chef/等。为此目的,但我认为仅处理这个问题就太过分了。
是否可以让 cron 从 shell 脚本的输出中接收它的指令而不是读取静态文件?
我试图在一堆机器上管理 crontabs 并且为每台机器维护单独的 crontab 文件是一件苦差事。我希望 cron 运行一个 shell 脚本,该脚本根据给定机器是否分配给该作业来为每个作业打印出 crontab 行。我可以这样做吗?
PS-我看到一些建议 Puppet/Chef/等。为此目的,但我认为仅处理这个问题就太过分了。
我认为在大多数发行版上执行此操作的最简单方法是使用自动部署工具,如 Puppet/Chef 以及 /etc/cron.d 目录。您可以将 crontab 放在该目录中,但它们使用以下格式而不是典型格式:
将运行 cron 的用户在哪里。
您似乎认为 Puppet 是矫枉过正(事实并非如此),但目录部分也适用于任何其他解决方案。
是的,你当然可以这样做。只需设置生成 crontab 输出所需的任何脚本,并将其 scp 到目标服务器。
在那里,静态 cron 作业可以从任何方便的位置专门读取这些 crontab 来执行。
这正是木偶和朋友的预期用途。
crontab
如果您不喜欢分发包管理的设置方式,您唯一的入口可能是运行 puppet 代理。外部脚本将在人偶大师上。在一个地方。适用于所有机器。
如果考虑使用外部脚本就足够了,我推荐 puppet。厨师肯定可以做类似的事情。
我开始使用 puppet 只是为了管理
~/.ssh/authorized_keys
多台机器上的,这是一个类似的“小”问题。一个流行的技巧是创建一个更新整个 crontab 的 crontab 条目。只要您的 shell 脚本从不向
crontab
.但是,我建议采用一种更易于管理的不同方法:拥有一个经常运行脚本的静态 crontab 条目。让脚本完成所有繁重的工作,以确定何时该运行某些东西。这样,您仍然可以将 crontab 用作常规 crontab,而不必让脚本知道每台机器上可能运行的所有内容。