Linux 将有效负载分配到多个cron作业
我有一个shell脚本,上面写着Linux 将有效负载分配到多个cron作业,linux,shell,cron,Linux,Shell,Cron,我有一个shell脚本,上面写着data.sh。为了执行这个脚本,我将传递一个参数,比如Table_1 我有一个测试文件,我将得到一个不同的脚本结果 现在在一个测试文件中,我有1000多个参数要传递给脚本 该文件如下所示: Table_1 Table_2 Table_3 Table_4 and..so..on 现在我想执行并行运行的脚本 我使用cron作业来完成这项工作 首先,我在Linux中使用split命令将测试文件拆分为20个部分 split -l $(($(wc -l < te
data.sh
。为了执行这个脚本,我将传递一个参数,比如Table_1
我有一个测试文件,我将得到一个不同的脚本结果
现在在一个测试文件中,我有1000多个参数要传递给脚本
该文件如下所示:
Table_1
Table_2
Table_3
Table_4
and..so..on
现在我想执行并行运行的脚本
我使用cron作业来完成这项工作
首先,我在Linux中使用split命令将测试文件拆分为20个部分
split -l $(($(wc -l < test )/20 + 1)) test
split-l$($(wc-l
然后,我将测试文件分为20个部分,如xaa、xab、xac等
然后运行cron作业:
* * * * * while IFS=',' read a;do /home/XXXX/data.sh $a;done < /home/xxxx/xaa
* * * * * while IFS=',' read a;do /home/XXXX/data.sh $a;done < /home/xxxx/xab
and so on.
***当IFS=','读取a;do/home/XXXX/data.sh$a;完成
因为这涉及到大量的手工过程。我想动态地这样做
以下是我想要实现的目标:
1) 一旦我得到测试文件,我希望它被自动分割成20个文件,并存储在一个特定的地方
2) 然后我想通过将20个文件作为参数传递给脚本,将cron作业安排在每天早上5点
实现这一点的最佳方式是什么?任何带解释的答案都将不胜感激。以下是您可以做的。创建两个
cron
作业:
file\u splitter.sh
->分割文件并将其存储在特定目录中file\u processer.sh
->从上面的目录中一次提取一个文件,执行读取循环,并调用data.sh
。成功处理后删除文件文件拆分器.sh
在文件处理器.sh
之前运行
如果您想进一步实现并行性,可以使用file\u splitter.sh
将分割的文件写入多个目录,每个目录中有几个文件。假设它们被称为sub1、sub2等。然后,您可以调度file\u processor.sh的多个实例,并将子目录名作为参数传递。由于分割文件存储在单独的目录中,因此我们可以确保只有一个作业处理特定子目录中的文件
最好使cron
命令尽可能简单
* * * * * /path/to/file_processor.sh
比
* * * * * while IFS=',' read a;do /home/XXXX/data.sh $a;done < /home/xxxx/xab
***当IFS=','读取a;do/home/XXXX/data.sh$a;完成
有道理吗
我写了一篇关于如何有效管理cron作业的文章。您可能想看看它: