在shell中批量启动多个计算

时间:2017-03-31 08:03:36

标签: linux shell ksh

我有16个计算要做,我想批量启动它,以便同时使用我的机器的16个核心。 我想做一个这样的shell脚本:

#!/bin/ksh
for i in `seq 16`
do
  cd directory$i
  <batch command>
done

有可能吗?

2 个答案:

答案 0 :(得分:3)

可以。你必须确保它们作为后台任务运行,例如:

#!/bin/ksh
for i in `seq 16`
do
  cd directory$i
  <batch command> &
done

如果没有它,它将按顺序运行作业。您可能还希望通过使用wait

确保等待所有这些完成
#!/bin/ksh
for i in `seq 16` ; do
  cd directory$i
  <batch command> &
done
wait # May depends on shell, bash/ksh waits for all

答案 1 :(得分:1)

无需反引号(外部命令)

#!/bin/ksh
for d in  dir{1..16}; do
    echo $d &
done
wait
echo done

btw schellcheck.net会说:

Use $(..) instead of legacy `..`
相关问题