我在 shell 脚本中设置了循环,处理列表中的几个文件需要花费一些时间。如何在后台推动该进程并在第一个文件仍在处理时选择下一个文件?
for newfile in `ls new*`
do
time consuming process &
done
我尝试在 > /dev/null 2>&1 之后的命令末尾添加 &,但似乎不起作用。
答案1
要将进程置于后台,只需将 放在&
末尾,然后删除之前;
用于终止命令的done
for newfile in new* ; do
long_running_command 2>&1 > /dev/null &
done
你不需要
`ls new*`
你可以使用
new*
shell 会帮你将其展开。
例子
touch new1
touch new2
for newfile in new* ; do ls $newfile 2>&1 > /dev/null & done
生产
[1] 92197
[1]+ Done ls $newfile 2>&1 > /dev/null
[1] 92198
[1]+ Done ls $newfile 2>&1 > /dev/null