Bash 在脚本中并行重定向
Bash redirection in a script in parallel
我有一个 bash 脚本,其中包含我想要并行 运行 的进程循环:
for i in {1..5}
do
echo Running for simulation $i
python script.py $i > ./outlogs/$i.log 2>&1 &
done
但是当我这样做时,文件重定向不起作用,所以 $i.log
只是保持为空。重定向仅在我最后不使用 &
时有效,但脚本会等待每个进程完成后再开始下一个进程,这是我不想要的。
我尝试了一个使用 script -c
的解决方案,但这不会实时更新,只有在进程结束时才会更新。有没有人有更好的建议,文件重定向在这个脚本中有效但它仍然实时更新?
您只需要添加 -u
选项,它看起来像这样:
python -u script.py $i > ./outlogs/$i.log 2>&1 &
选项 -u
用于无缓冲的二进制标准输出和标准错误
我有一个 bash 脚本,其中包含我想要并行 运行 的进程循环:
for i in {1..5}
do
echo Running for simulation $i
python script.py $i > ./outlogs/$i.log 2>&1 &
done
但是当我这样做时,文件重定向不起作用,所以 $i.log
只是保持为空。重定向仅在我最后不使用 &
时有效,但脚本会等待每个进程完成后再开始下一个进程,这是我不想要的。
我尝试了一个使用 script -c
的解决方案,但这不会实时更新,只有在进程结束时才会更新。有没有人有更好的建议,文件重定向在这个脚本中有效但它仍然实时更新?
您只需要添加 -u
选项,它看起来像这样:
python -u script.py $i > ./outlogs/$i.log 2>&1 &
选项 -u
用于无缓冲的二进制标准输出和标准错误