后台进程

后台进程

我在 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

相关内容