Normalerweise verwende ich subprocess zum Ausführen eines externen Befehls. Für Ihren Fall können Sie so etwas tun
from subprocess import Popen, PIPE
p = Popen('ps -ef | grep rtptransmit | grep -v grep', shell=True,
stdout=PIPE, stderr=PIPE)
out, err = p.communicate()
Die Ausgabe erfolgt in out Variable.
commands veraltet ist, sollten Sie es nicht verwenden. Verwenden Sie subprocess stattdessen
import subprocess
a = subprocess.check_output('ps -ef | grep rtptransmit | grep -v grep', shell=True)
ps begrenzt anscheinend seine Ausgabe, um in die vermutete Breite des Terminals zu passen. Sie können diese Breite mit dem $COLUMNS überschreiben Umgebungsvariable oder mit dem --columns Option zu ps .
Die commands Modul ist veraltet. Verwenden Sie subprocess um die Ausgabe von ps -ef zu erhalten und filtern Sie die Ausgabe in Python. Verwenden Sie nicht shell=True Wie andere Antworten vermuten lassen, ist es in diesem Fall einfach überflüssig:
ps = subprocess.Popen(['ps', '-ef', '--columns', '1000'], stdout=subprocess.PIPE)
output = ps.communicate()[0]
for line in output.splitlines():
if 'rtptransmit' in line:
print(line)
Vielleicht möchten Sie auch einen Blick auf pgrep werfen Befehl, mit dem Sie direkt nach bestimmten Prozessen suchen können.