我必须chmod和chown成千上万的文件作为迁移脚本的一部分。 每个命令大约需要一个半小时才能完成。 我意识到这两个操作可以同时运行,这减less了运行时间,这是我在shell中testing确认的。
我知道用'&'将命令推入背景的技巧,但是我需要确保两个过程都完成,然后继续执行脚本的其余部分。
谢谢
使用wait命令。
这个演示:
#!/bin/bash echo $SECONDS sleep 12& sleep 15& jobs wait echo $SECONDS echo "jobs are done"
产生这个输出:
0 [1]- Running sleep 12 & [2]+ Running sleep 15 & 15 jobs are done
最后两行输出前有15秒暂停。
您可以捕获该pid并使用等待。
chmod options CHMODPID=$! chown options CHOWNPID=$! wait $CHMODPID wait $CHOWNPID
(应使用bash;其他shelltypes的细节可能不同)
如果您需要确保在进行下一步之前完成这两个过程,一个简单的解决scheme就是将某些内容写入文件并进行检查。 只要在文件上做一个头或猫(默认值为0)并在第一行加1。 如果你检测到2,那么这两个过程都完成了。 当然,添加应该在脚本的最底部完成。