Python使用&执行Shell命令,但仍在等待

时间:2018-10-29 19:04:02

标签: python shell

我正在编写一个将运行Shell脚本的python cgi脚本。由于该Shell脚本将执行很长时间,因此我决定在后台运行该Shell并获取该Shell的pid,仅供以后检查。

但是,当我单击网页上的请求时,服务器端总是等待shell脚本完成,即使我已经添加了“&”字符。

我的shell调用python源代码如下:

try :
    args = ["/bin/bash" , "/var/www/html/cgi-enabled/run_all.sh" 
        , "master" , "False" , "NONE" , "hdfs" 
        , "\"select * from data\"" ,"abc.csv"]
    cmd = "(" + " ".join(args) + ") & (echo $!)"
    pid = (subprocess.check_output(cmd  , shell=True))
    result = "실행 성공"
except Exception as e:
    result = e

run_all.sh如下:

#!/bin/sh
DATABASE="default"
MASTERIP="$1"
SSL="$2"
HIVE_AUTHEN="$3"
HIVEUSER="$4"
QUERY="$5"
LOCATION="/01.Project/01.표준분석모델/Data/새올/$6"
sleep 5s

我试图在终端中运行shell脚本,但是它仍然可以不等待而运行,但是我不知道为什么使用Python运行时,它一直等待直到shell完成。请帮我看看我的问题。

编辑:我已经检查了问题的答案this,但是,它没有提供我想要的东西。我真的很想问,即使我添加了“&”字符,服务器端仍然在等待。

谢谢。

0 个答案:

没有答案