检查后台进程的返回状态

时间:2012-07-06 15:02:52

标签: shell background

我需要将几个文件复制到远程服务器。

for database in `mysql -Bse"show databases" | grep '^us' `
do

time scp $database.gz gs://tbl_name/ &

done

我使用& 在后台推送进程,以便脚本可以继续处理下一个文件。问题是由于网络问题,10个文件中有1个无法传输。但是我无法检查返回代码,因此不知道哪些文件失败了。

1 个答案:

答案 0 :(得分:1)

您可以等待特定流程并从中获取状态:

cmd &
pid=$!
cmd2 &
pid2=$!
wait $pid || echo cmd failed >&2
wait $pid2 || echo cmd2 failed >&2