pythonでサブプロセスを使用してシェルコマンドを実行しているときに出力が間違っています。pythonサブプロセスの出力が切り捨て
Pythonシェルでbashシェル内のgrep(com.vertica.solutions.kafka.Launcher)
ps -ef | grep com.vertica.solutions.kafka.Launcher
root 92300 39024 0 23:06 pts/1 00:00:00 grep --color=auto com.vertica.solutions.kafka.Launcher
dbadmin 413872 413868 0 22:06 pts/0 00:00:24 java -cp /opt/vertica/packages/kafka/bin/../lib/*:/opt/vertica/java/lib/vertica-jdbc.jar:/opt/vertica/packages/kafka/bin/../config/* -Dlog4j.configurationFile=/opt/vertica/packages/kafka/bin/../config/vkafka-log-config.xml -DLog4jContextSelector=org.apache.logging.log4j.core.async.AsyncLoggerContextSelector com.vertica.solutions.kafka.Launcher --conf /home/dbadmin/live.conf
のgrep(com.vertica.solutions.kafka.Launcher)
>>> cmd = "ps aux |grep com.vertica.solutions.kafka.Launcher| grep -v grep"
>>> check_output(cmd,shell=True).strip()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib64/python2.7/subprocess.py", line 575, in check_output
raise CalledProcessError(retcode, cmd, output=output)
subprocess.CalledProcessError: Command 'ps aux |grep com.vertica.solutions.kafka.Launcher| grep -v grep' returned non-zero exit status 1
これは、サブプロセスがps出力を切り捨てるためです。私が単語kafkaでgrepするとき、私は結果を得るが、望ましくない。
はgrepだけカフカ
>>> cmd = "ps aux | grep kafka | grep -v grep"
>>> check_output(cmd,shell=True).strip()
dbadmin 413868 0.0 0.0 113128 1372 pts/0 S 22:06 0:00 /bin/bash /opt/vertica/packages/kafka/bin/vkconfig launch --conf /home/dbadmin/live.conf\n
dbadmin 413872 0.6 1.0 7403000 175544 pts/0 Sl 22:06 0:25 java -cp /opt/vertica/packages/kafka/bin/../lib/*:/opt/vertica/java/lib/vertica-jdbc.jar:/opt/vertica/package'
私はワードカフカでgrepし、私は、プロセスを取得する(PID 413872)が、PythonでシェルproceのCOMMAND列の出力ssコマンドが不完全です。
それは、 – user1767754
CMD =が何かを切り捨てていません。 –