我正在尝试编写一个同时运行许多程序的.sh文件
我试过这个
prog1
prog2
Run Code Online (Sandbox Code Playgroud)
但是运行prog1然后等到prog1结束然后开始prog2 ...
那我怎么能并行运行呢?
if
在bash脚本中多线程独立语句的正确方法是什么?是否最好将&
after代码放在if
表达式中或表达式之后?
对于&
表达式之后,如果if
包含大块代码,则根据需要继续进行线程化是有意义的.但是,一行代码也应该结束&
吗?
表达后:
if [ expression ] &
then
#task
fi
Run Code Online (Sandbox Code Playgroud)
完成任务后:
if [ expression ]
then
#task &
fi
Run Code Online (Sandbox Code Playgroud)
想象一下if
,所有3个语句都执行彼此独立的任务,执行如何与不同的位置一起工作&
?根据我的理解,如果放在表达式之后,所有3个表达式(基本上)同时启动,3个任务也是如此.
#Thread 1 #Thread 2 #Thread 3
if [ expr1 ] & if [ expr2 ] & if [ expr3 ] &
then then then
task1 task2 task3
fi fi fi
wait
Run Code Online (Sandbox Code Playgroud)
如果放在任务代码之后,if
将评估第一个任务代码,并且仅在第一个任务开始时才评估第二个任务代码if
.这些任务比同步更加错开.
#Thread 1 #Thread 2 #Thread 3
if [ …
Run Code Online (Sandbox Code Playgroud) 我正在开发一个包含Twitter数据的社区检测项目,我需要在关系的基础上创建一个网络.我收集并过滤了200,000个UID.我的下一步是在其中创建一个朋友/关注者网络.
我使用Ruby脚本和Twitter gem来收集,处理和存储数据.为了克服API调用限制,我使用Apigee代理,所以现在没有速率限制的问题.
获取两个UID之间关系状态的调用位于:https://dev.twitter.com/docs/api/1/get/friendships/show
我需要加快收集数据的过程.目前我的终端中有很多脚本同时运行.我发现这种方法很难管理和扩展.是否有更快,更有效,更易于管理的方式来做同样的事情?或者,我缺少一种完全不同的更好的方法吗?
我有一个名为“projects”的目录,它是父目录,在我的项目附近有 200 个子目录。
现在我正在git pull
通过以下脚本执行。
#!/bin/bash
find . -type d -name .git -exec sh -c "cd \"{}\"/../ && pwd && git pull && echo -e '-------------------- \n ' " \;
Run Code Online (Sandbox Code Playgroud)
有没有什么有效的方法可以以多线程和更快的方式完成这个过程?