0
파이썬에서 서브 프로세스를 사용하여 쉘 명령을 실행하는 중에 출력이 잘못되었습니다.파이썬 서브 프로세스 출력이 잘림
그렙 배시 셸 (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
그렙 파이썬 쉘 (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 할 때 나는 결과를 얻었지만 그럴 필요는 없다.
그렙 만 카프카
>>> 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)하지만 파이썬 쉘 proce의 COMMAND 컬럼 출력 ss 명령이 불완전합니다.
그것은 아무것도 절단 아니에요, – user1767754
에 cmd = "추신 auxww | 그렙 com.vertica.solutions.kafka.Launcher | 그렙 -v 그렙 | AWK '{$ 2 인쇄}' '내가 올바른 결과를 얻었다 전주 플래그를 사용하여 합니다. –