Saya biasanya menggunakan subprocess
untuk menjalankan perintah eksternal. Untuk kasus Anda, Anda dapat melakukan sesuatu seperti berikut
from subprocess import Popen, PIPE
p = Popen('ps -ef | grep rtptransmit | grep -v grep', shell=True,
stdout=PIPE, stderr=PIPE)
out, err = p.communicate()
Outputnya akan berada di out
variabel.
commands
sudah usang, Anda sebaiknya tidak menggunakannya. Gunakan subprocess
sebagai gantinya
import subprocess
a = subprocess.check_output('ps -ef | grep rtptransmit | grep -v grep', shell=True)
ps
tampaknya membatasi outputnya agar sesuai dengan lebar terminal yang diperkirakan. Anda dapat mengganti lebar ini dengan $COLUMNS
variabel lingkungan atau dengan --columns
opsi untuk ps
.
commands
modul tidak digunakan lagi. Gunakan subprocess
untuk mendapatkan output dari ps -ef
dan saring hasilnya dengan Python. Jangan gunakan shell=True
seperti yang disarankan oleh jawaban lain, itu tidak berguna dalam hal ini:
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)
Anda mungkin juga ingin melihat pgrep
perintah yang dengannya Anda dapat langsung mencari proses tertentu.