在并行运行所有脚本时如何运行特定命令

时间:2019-10-16 13:20:36

标签: python node.js linux shell automation

我有正在构建图像的脚本,将它们推到docker hub并检查所有错误。 但是我的主要目的是运行特定的命令,例如“ node server.js ”,而不是开始运行脚本命令。

并且我希望它一起位于同一脚本文件中。

目前,我正在从第一个终端打开 2个终端,并运行命令“ node server.js ”启动该应用程序。 然后从第二终端运行脚本。

我要配置的是在脚本内配置“ node server.js”命令以使其在后台运行,并让脚本同时运行。

现在这是我的脚本,当脚本开始运行命令 os.system(start_node)时,脚本停止运行其他命令。 所以我的问题是如何运行此命令,并在不打开2个终端的情况下继续运行脚本,并在1个终端节点server.js中运行,而在第二个脚本中,不使用命令 os.system(start_node)

#!/usr/bin/env python3
#Before running this script need to start the app 'node server.js'
import os
import sys
os.chdir ("/opt/new-test-app")

start_node = 'node server.js'
npm_test = 'npm test'
npm_output = '  8 passing'
image = 'docker build -t test/new-test-app-new:latest .'
test = 'curl -o /dev/null -s -w "%{http_code}\n" http://localhost:8081'
docker_login = 'cat /cred/cred.txt | docker login --username test --password-stdin'
docker_push = 'docker push alexkocloud/new-test-app-new:latest'

os.system(start_node)


os.system(npm_test)

if npm_output == 0:
    print ("npm test not succesfully passed")
    sys.exit()
else:
    print('npm test successfuly passed with "8 passing"')

if os.system(test) == 0:
    print('HTTP Status Code 200 OK')
else:
    print('ERROR CODE')
    sys.exit()

os.system(image)

os.system(docker_login)
os.system(docker_push)

sys.exit(0)

1 个答案:

答案 0 :(得分:0)

好吧,我所做的只是添加了这一行

nohup节点server.js> output.log&

在我的变量中: start_node ='nohup节点server.js> output.log&'

它可以按我的要求工作。

如果有人有更好的解决方案,我很乐意看到。 谢谢。