Di solito uso subprocess
per eseguire un comando esterno. Per il tuo caso, puoi fare qualcosa di simile
from subprocess import Popen, PIPE
p = Popen('ps -ef | grep rtptransmit | grep -v grep', shell=True,
stdout=PIPE, stderr=PIPE)
out, err = p.communicate()
L'output sarà in out
variabile.
commands
è deprecato, non dovresti usarlo. Usa subprocess
invece
import subprocess
a = subprocess.check_output('ps -ef | grep rtptransmit | grep -v grep', shell=True)
ps
apparentemente limita la sua uscita per adattarsi alla presunta larghezza del terminale. Puoi sovrascrivere questa larghezza con $COLUMNS
variabile d'ambiente o con il --columns
opzione a ps
.
L'commands
modulo è deprecato. Usa subprocess
per ottenere l'output di ps -ef
e filtrare l'output in Python. Non utilizzare shell=True
come suggerito da altre risposte, in questo caso è semplicemente superfluo:
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)
Potresti anche dare un'occhiata al pgrep
comando con il quale puoi cercare direttamente processi specifici.