我正在写一个shell脚本,我希望这些命令能够同时运行
find ./incoming/kontraktor/ -type f -name '*.html' | sort | awk 'NR % 3 == 1' | ./bin/foo.py -m 3 -b 1 | next_command >> log/foo_log.log 2>&1
find ./incoming/kontraktor/ -type f -name '*.html' | sort | awk 'NR % 3 == 2' | ./bin/foo.py -m 3 -b 2 | next_command >> log/foo_log.log 2>&1
find ./incoming/kontraktor/ -type f -name '*.html' | sort | awk 'NR % 3 == 0' | ./bin/foo.py -m 3 -b 3 | next_command >> log/foo_log.log 2>&1
可以使用&让所有人同时奔跑?如果可能,只有在上述所有三个命令都完成执行后,才能运行以下命令输出日志吗?
tail log/foo_log
答案 0 :(得分:2)
很简单,您可以使用wait
暂停,直到所有进程都退出。
wait: wait [n]
等待指定的进程并报告其终止状态。如果 没有给出N,所有当前活动的子进程都在等待, 并且返回码为零。 N可以是进程ID或作业 规格;如果给出了工作规范,那么工作中的所有流程都是如此 管道等待。
瞧!
find ./incoming/kontraktor/ -type f -name '*.html' | sort | awk 'NR % 3 == 1' | ./bin/foo.py -m 3 -b 1 | next_command >> log/foo_log.log 2>&1 &
find ./incoming/kontraktor/ -type f -name '*.html' | sort | awk 'NR % 3 == 2' | ./bin/foo.py -m 3 -b 2 | next_command >> log/foo_log.log 2>&1 &
find ./incoming/kontraktor/ -type f -name '*.html' | sort | awk 'NR % 3 == 0' | ./bin/foo.py -m 3 -b 3 | next_command >> log/foo_log.log 2>&1 &
wait
tail log/foo_log
答案 1 :(得分:0)
我在搜索解决方案时看到this讨论,所以我想我会尝试回答我自己的问题XD
(find ./incoming/kontraktor/ -type f -name '*.html' | sort | awk 'NR % 3 == 1' | ./bin/foo.py -m 3 -b 1 | next_command >> log/foo_log.log 2>&1) &
(find ./incoming/kontraktor/ -type f -name '*.html' | sort | awk 'NR % 3 == 2' | ./bin/foo.py -m 3 -b 2 | next_command >> log/foo_log.log 2>&1) &
(find ./incoming/kontraktor/ -type f -name '*.html' | sort | awk 'NR % 3 == 0' | ./bin/foo.py -m 3 -b 3 | next_command >> log/foo_log.log 2>&1) &
wait