2017-10-20 63 views
0

我有一个按顺序运行多个Python脚本的应用程序。我可以在运行这些码头工人,组成如下:Nomad中的多个bash命令

command: > 
    bash -c "python -m module_a && 
    python -m module_b && 
    python -m module_c" 

现在我,调度在游牧的工作,并且在配置中加入下面的命令码头工人司机:

command = "/bin/bash" 
args = ["-c", "python -m module_a", "&&"," 
     "python -m module_b", "&&", 
     "python -m module_c"] 

但游牧似乎以逃脱&&,只是运行第一个模块,并发出退出代码0.有没有什么办法可以运行类似于docker-compose的多行命令?

+0

的''&&作为一个额外的参数给shell传递,而不是代码运行。 –

回答

1

下保证与exec司机的工作:

command = "/bin/bash" 
args = [ 
    "-c",             ## next argument is a shell script 
    "for module; do python -m \"$module\" || exit; done", ## this is that script. 
    "_",             ## passed as $0 to the script 
    "module_a", "module_b", "module_c"      ## passed as $1, $2, and $3 
] 

注意只有一个参数作为一个脚本传递 - 一个紧跟-c。随后的参数是该脚本的参数,而不是其他脚本或脚本片段。


即使是简单的,你可以运行:

command = "/bin/bash" 
args = ["-c", "python -m module_a && python -m module_b && python -m module_c" ] 
+0

嘿,谢谢,我实际上尝试过,但任一方法导致退出代码2:'退出代码:2,退出消息:“码头集装箱退出非零退出代码:2”' – seemvision

+0

我不假设它'-xc'而不是'-c'(因此日志记录命令运行到stderr)可能是有启发性的? –

+0

(如果没有日志说明,否则“退出代码:2”可能意味着其中一个Python模块已成功启动,然后由于之前的环境与此环境之间的环境或安装差异而退出该状态。) –