在bash中的并行进程之间添加等待

lel*_*uch 5 linux parallel-processing bash shell xargs

我有一个bash脚本可将数据上传到站点。我的上传速度越来越慢,因此我开始使用xargs和-N1并行运行它,同时运行5个。

但是,问题是服务器是否要求我解决一次验证码,如果我一次运行5次,而一次运行1次则可以正常工作。

我认为这是因为所有进程都完全在同一时间启动,因此我被标记了。

无论如何,这就是问题所在,我有什么办法可以在xargs / gnu并行启动过程之间添加等待时间(例如1秒)吗?

我唯一想出的就是使用pgrep脚本| wc -1来计算脚本实例,并休眠该秒数。

但是,这实际上不是最佳选择,是否有更好的方法呢?

Ole*_*nge 6

如果上传需要随机时间,您只需要前 5 个开始,延迟 1-5 秒:

cat list | parallel -j5 [ {#} -lt 6 ] \&\& sleep {#}\; upload {}
Run Code Online (Sandbox Code Playgroud)