【问题标题】:Running multiple background processes in script在脚本中运行多个后台进程
【发布时间】:2015-05-06 21:59:25
【问题描述】:

我有一个如下格式的 shell 脚本:

cd /path/a/
make 
cd /path/b/
make
cd /path/c/
make

每个 make 命令在不同的目录中相互独立。我想通过使用'&'在后台运行不同的make命令来加速脚本

cd /path/a/
make & 
cd /path/b/
make &
cd /path/c/
make &

这行得通吗?在第一个 make 命令运行时,目录已更改为下一行中的 /path/b/。这会影响后台的第一个make推荐吗?

编辑:我怀疑这种方法是否真的会使这个过程更快,并且想知道这些是否需要在单独的进程中运行。

【问题讨论】:

    标签: shell unix parallel-processing


    【解决方案1】:

    应该没问题。 make 也接受 -C 选项以在读取 makefile 之前更改其目录。所以你也可以这样做:

    make -C /path/a/ &
    make -C /path/b/ &
    make -C /path/c/ &
    

    【讨论】:

    • 谢谢。这些 make 命令是真正并行运行的……而不是在后台一个接一个地运行?
    • 如果你有多处理器,它肯定会并行运行。对于单处理器,这将是时间分片的并行。
    【解决方案2】:

    我相信make 采用-f 命令行参数,您可以在其中简单地指定所需的makefile。所以,这应该工作: make -f /path/a/makefile & make -f /path/b/makefile & make -f /path/c/makefile &

    【讨论】:

    • 只有在 make 文件在任何地方都使用绝对路径时才有效
    • 啊,对。看起来 tivn 的答案在相对路径的情况下更相关。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-19
    • 2013-10-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多