【问题标题】:Shell scripting trying to launch tasks in parallel?Shell脚本试图并行启动任务?
【发布时间】:2012-06-09 22:35:21
【问题描述】:

我需要做的基本任务是多次调用 python 脚本,每次都使用不同的参数。例如:

script.py -t command1
script.py -t command2
script.py -t command3

等等。现在的问题是 script.py 需要很长时间才能运行,所以只是将上面的内容放在一个 shell 脚本中并连续运行它们(一个接一个)是浪费时间。

相反,我想做的是打开多个终端,并在每个终端中运行

script.py -t command_i

对于第 i 个命令参数。有没有办法做到这一点?如果没有,对于我正在尝试做的事情,还有其他有用的并行选项吗?

干杯

编辑 - 刚刚意识到:我可能想要某种分叉,是吗?不过,我从来没有使用 shell 脚本来做到这一点。

【问题讨论】:

    标签: linux shell scripting


    【解决方案1】:

    要在后台运行命令,请在末尾添加&

    script.py -t command1 &
    script.py -t command2 &
    script.py -t command3 &
    

    如果您在 shell 脚本中使用它并希望等待所有进程完成,请不带参数运行 wait。在继续执行脚本之前,它将等待当前 shell 中的所有后台作业完成。

    【讨论】:

    • 您应该在解决方案中提供解释。
    • @YoungMoney - Emil Vikström 是绝对正确的。要“分叉”,您需要做的就是在命令中添加一个与号(“&”)。
    • 值得在之后添加wait,以防有人决定将这些后台作业包装在脚本中,这样它就不会立即终止,给人一种错误的印象。
    猜你喜欢
    • 2017-04-07
    • 2015-03-12
    • 2016-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-01
    相关资源
    最近更新 更多