Obvykle používám subprocess
pro spuštění externího příkazu. Ve vašem případě můžete udělat něco jako následující
from subprocess import Popen, PIPE
p = Popen('ps -ef | grep rtptransmit | grep -v grep', shell=True,
stdout=PIPE, stderr=PIPE)
out, err = p.communicate()
Výstup bude v out
proměnná.
commands
je zastaralá, neměli byste ji používat. Použijte subprocess
místo
import subprocess
a = subprocess.check_output('ps -ef | grep rtptransmit | grep -v grep', shell=True)
ps
zjevně omezuje svůj výkon, aby se vešel do předpokládané šířky terminálu. Tuto šířku můžete přepsat pomocí $COLUMNS
proměnnou prostředí nebo s --columns
možnost ps
.
commands
modul je zastaralý. Použijte subprocess
získat výstup ps -ef
a filtrovat výstup v Pythonu. Nepoužívejte shell=True
jak naznačují jiné odpovědi, v tomto případě je to prostě nadbytečné:
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)
Můžete se také podívat na pgrep
pomocí kterého můžete přímo vyhledávat konkrétní procesy.