Usualmente uso subprocess
para ejecutar un comando externo. Para tu caso, puedes hacer algo como lo siguiente
from subprocess import Popen, PIPE
p = Popen('ps -ef | grep rtptransmit | grep -v grep', shell=True,
stdout=PIPE, stderr=PIPE)
out, err = p.communicate()
La salida estará en out
variables.
commands
está en desuso, no debe usarlo. Usa subprocess
en cambio
import subprocess
a = subprocess.check_output('ps -ef | grep rtptransmit | grep -v grep', shell=True)
ps
aparentemente limita su salida para encajar en el ancho presunto de la terminal. Puede anular este ancho con el $COLUMNS
variable de entorno o con el --columns
opción a ps
.
El commands
el módulo está en desuso. Usa subprocess
para obtener la salida de ps -ef
y filtre la salida en Python. No use shell=True
como lo sugieren otras respuestas, es simplemente superfluo en este caso:
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)
También puede echar un vistazo al pgrep
Comando mediante el cual puede buscar directamente procesos específicos.