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.