2016-01-27 25 views
0

bash的cmd是:蟒子運行shell不起作用

ps aux |grep tomcat |grep -Ev grep |grep -o 'Dcatalina.base=.*tomcat' |gawk -F'[ =]+' '{print $2}'" 

這種運作良好,在bash和輸出是:

/opt/Backuplog/tomcat-6.0.44 

不過,我想用這個cmd在巨蟒,所以我用的子進程

out=subprocess.Popen(cmd,shell=True,stdout=subprocess.PIPE,stderr=subprocess.STDOUT) 
output,outerr = out.communicate() 

但產量'',我想知道如何處理的機智h拍攝

+0

爲什麼有'「'在命令的結尾? (這是無效的語法)。你是否檢查過* *輸出*和*'outerr'? – jfs

回答

0

使用bash運行它,你的命令應該是:

cmd = '''bash -i -c "ps aux |grep tomcat |grep -Ev grep |grep -o 'Dcatalina.base=.*tomcat' |gawk -F'[ =]+' '{print $2}'"''' 

或者你可以使用subprocess.check_output

cmd = "ps aux |grep tomcat |grep -Ev grep |grep -o 'Dcatalina.base=.*tomcat' |gawk -F'[ =]+' '{print $2}'" 

subprocess.check_output(['bash', '-i', '-c', cmd]) 
+0

@page選中此項。 – Zety

+0

使用「bash -i -c」完成工作,輸出也是'' – page

+0

@page你能告訴我它是否適用於'cmd =「ps -eo comm,pid | grep systemd」'? – Zety