仅在 gnu parallel 运行所有作业后才执行命令
execute command only after gnu parallel runs all jobs
我有 bash 文件 -
cat input.txt | parallel -j4 'python {}'
cp -r outputs /home/usr/my_outputs
我只想在所有作业执行完毕后才将 outputs
复制到 my_outputs
。目前,它看起来像 parallel
returns 立即(在启动作业后)然后 cp -r
立即执行,但我想在复制之前等待作业完成执行。我该怎么做呢?谢谢!
编辑:
input.txt 就像 -
run1.py -n 5
run2.py -n 5
run3.py -n 5
run4.py -n 5
我做过类似的事情,我同时有 4 个 python 脚本 运行 并且遇到了同样的问题,尽管我是将它们推到后台。这些脚本写入了稍后在我的 bash 脚本中使用的文件。我使用 wait $(jobs -rp)
-
解决了它
python script1.py &
python script2.py &
python script3.py &
python script4.py &
wait $(jobs -rp)
# other bash code that needs to run after the above
这也适用于 gnu parallel。试试这个:
cat input.txt | parallel -j4 'python {}'
wait $(jobs -rp)
cp -r outputs /home/usr/my_outputs
尝试:
parallel --colsep ' '
否则你实际上是在尝试 运行:
python 'run1.py -n 5'
这意味着 Python 解释器正在寻找一个名为 run1.py -n 5
的脚本
我有 bash 文件 -
cat input.txt | parallel -j4 'python {}'
cp -r outputs /home/usr/my_outputs
我只想在所有作业执行完毕后才将 outputs
复制到 my_outputs
。目前,它看起来像 parallel
returns 立即(在启动作业后)然后 cp -r
立即执行,但我想在复制之前等待作业完成执行。我该怎么做呢?谢谢!
编辑: input.txt 就像 -
run1.py -n 5
run2.py -n 5
run3.py -n 5
run4.py -n 5
我做过类似的事情,我同时有 4 个 python 脚本 运行 并且遇到了同样的问题,尽管我是将它们推到后台。这些脚本写入了稍后在我的 bash 脚本中使用的文件。我使用 wait $(jobs -rp)
-
python script1.py &
python script2.py &
python script3.py &
python script4.py &
wait $(jobs -rp)
# other bash code that needs to run after the above
这也适用于 gnu parallel。试试这个:
cat input.txt | parallel -j4 'python {}'
wait $(jobs -rp)
cp -r outputs /home/usr/my_outputs
尝试:
parallel --colsep ' '
否则你实际上是在尝试 运行:
python 'run1.py -n 5'
这意味着 Python 解释器正在寻找一个名为 run1.py -n 5