gpt4 book ai didi

python - 如何在多个包含文件的文件夹上自动化我的三个 bash 脚本?

转载 作者:太空狗 更新时间:2023-10-29 11:27:10 25 4
gpt4 key购买 nike

我有大量文件,每个文件都将被解码、排序/最小化,然后放入数据库。这些操作中的每一个都有自己的 bash 脚本。这些文件被分类为每日文件,这些文件位于它们连续的每月文件夹中。问题是只有一个数据库,一张表(SQLite),所以数据库脚本一次只能在一个文件上运行,而解码和排序可以同时在大约四个文件上进行。

要排序的文件,必须经过解码过程,要将文件放入数据库,必须解码和排序。这些脚本的运行时间是不一样的,我相信解码就是禁食,然后是输入,然后是排序。

每个 bash 脚本 decode.sh sort.sh saveintodb.sh 循环遍历文件夹中的所有文件并执行其工作。

最初我想有一个执行 decode.sh-> sort.sh-> saveintodb.sh 的 masterscript对于每个文件夹(月)。

但是,由于这预计需要几天的时间,所以我想到了这样的事情:

1: decode.sh January
2: sort.sh January, decode.sh February
3: saveintodb.sh January sort.sh February decode.sh March
4: saveintodb.sh February sort.sh March decode.sh April

等到 12 月。

但是,我不知道如何设置它,以一种好的方式。我知道我可以并行运行 2: 中的脚本,但是我不太确定如何在 2: 完成时自动运行脚本 3:。

我也不确定这是否是最好的方法。理想情况下,有一个解码脚本、一个排序脚本和一个 saveintodb 脚本一直在运行。甚至可能是几个解码和排序脚本(不知道这是否会加快这个过程,遗憾的是我正在使用外部 HD)。

数据量:1.3TB

数据类型:文本文件

背景:位置报告(纬度/经度、时间)

抱歉,文字很长,有什么建议吗?

最佳答案

在 Linux 上,使用 crontab(5)安排各种 shell 脚本。它们可以并行运行。

您也可以查看 GNU parallel ,但我猜你不需要它。

最后,一个 shell 脚本可以使用 at 安排另一个脚本或 batch .例如,decode.sh可能以 batch -f sort.sh 结尾或 at -f sort.sh now + 10 minutes

你可能会使用一些更强大的脚本语言,例如Python、Guile、Perl、....

顺便说一句,一定要测试每个脚本(甚至其中的部分)是否成功。使用 logger(1)发出日志消息(可能在持续超过半小时的每个步骤或命令之后,以及每个脚本的开始和结束时)。每天检查日志!

最后,我不明白为什么一次只能运行一个数据库脚本。大多数真正的 DBMS(PostGreSQL、MonGoDB、MariaDB 等)——但不是 sqlite——可以运行(或配置为运行)多​​个数据库客户端同时访问同一个数据库(当然也可以是不同的数据库)。阅读更多关于 ACID 的信息属性。

在某些外部 USB 硬盘上这样做是恕我直言的错误,因为此类硬件的可靠性有限(而且通常很慢)。你应该考虑拥有一些服务器(也许一个好的桌面可能有这样的作用)。您可能需要 UPS以避免电源故障。

如果这种复杂的处理和处理后的数据对您有一定的值(value),您应该同时升级硬件(获得一台服务器机器,可能带有 UPS 和 ECC RAM,如果数据合适,则为 SSD)和软件(使用真正的 DBMS,小心失败)。估计故障和/或数据丢失的成本(记住要考虑您的时间)。也许租用一些云计算或存储可能会很有趣(或者只是一个带备份的 VPS 托管 Linux 系统,您每个月可以花大约两打美元或欧元获得一个:kimsufiovhrackspaceaws , ...)...

关于python - 如何在多个包含文件的文件夹上自动化我的三个 bash 脚本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31299430/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com