微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用Bash脚本的multithreading编程

我正在像这样运行一个bash脚本:

for i in {0..3250000..50000} do wget "http://xxx/select?q=*:*&row_size=50000&start=$i" -O $i.csv done

每次发送请求时,我都必须等待完成并写入文件,然后继续循环。 不过,我想要asynchronous做到这一点。 我的意思是它会发送一个请求和循环,而不用等待响应。 然而,当一个响应来到它将做适当的事情。

我怎样才能做到这一点?

为命令设置LD_PRELOAD环境variables,而不input完整path

格式输出从Unix“脚本”命令:删除后退,换行和删除的字符?

当把输出保存到一个variables中时,所有的换行符都被删除

如何在shell脚本中保留带有回显的主要空格?

无法在当前目录中获取脚本

将bashexpression式传递给AWK进行浮点运算

在bash中将可读的人转换为字节

如何获得在Linux中的两个文件间的差异(只有补充)

Linuxfind具有相似名称文件,并移动到新目录

Bash sed用文件内容replace文本

你可以使用xargs :

printf '%s' {0..50000..3250000} | xargs -0 -I {} -n 1 -P 20 wget 'http://xxx/select?q=*:*&row_size=50000&start={}' -O {}.csv

-0选择NULL字符作为分隔符, -I {}用参数替换{} , -n 1将单个参数交给wget , -P 20并行处理20个请求。

或者,您可以追加一个&到您的命令行在后台执行,并wait进程完成。

您可以通过以下方式执行它。 &在后台执行命令。

<cmd> &

但是你的循环看起来很大,而且会在后台运行。 控件将被返回到脚本。 所以为了避免执行问题,你应该写一些函数来检查后台操作是否已经退出

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐