GNU/Linux >> Belajar Linux >  >> Linux

Cara menggunakan perintah `subproses` dengan pipa

Lihat dokumentasi tentang menyiapkan jalur pipa menggunakan subproses:http://docs.python.org/2/library/subprocess.html#replacing-Shell-pipeline

Saya belum menguji contoh kode berikut tetapi kira-kira seperti yang Anda inginkan:

query = "process_name"
ps_process = Popen(["ps", "-A"], stdout=PIPE)
grep_process = Popen(["grep", query], stdin=ps_process.stdout, stdout=PIPE)
ps_process.stdout.close()  # Allow ps_process to receive a SIGPIPE if grep_process exits.
output = grep_process.communicate()[0]

Atau Anda selalu dapat menggunakan metode komunikasi pada objek subproses.

cmd = "ps -A|grep 'process_name'"
ps = subprocess.Popen(cmd,shell=True,stdout=subprocess.PIPE,stderr=subprocess.STDOUT)
output = ps.communicate()[0]
print(output)

Metode komunikasi mengembalikan tuple keluaran standar dan kesalahan standar.


Untuk menggunakan pipa dengan subprocess modul, Anda harus melewati shell=True .

Namun, ini sebenarnya tidak disarankan karena berbagai alasan, yang paling tidak adalah keamanan. Sebagai gantinya, buat ps dan grep memproses secara terpisah, dan menyalurkan output dari satu ke yang lain, seperti:

ps = subprocess.Popen(('ps', '-A'), stdout=subprocess.PIPE)
output = subprocess.check_output(('grep', 'process_name'), stdin=ps.stdout)
ps.wait()

Namun, dalam kasus khusus Anda, solusi sederhananya adalah dengan memanggil subprocess.check_output(('ps', '-A')) lalu str.find pada keluaran.


Menggunakan subprocess.run

import subprocess
    
ps = subprocess.run(['ps', '-A'], check=True, capture_output=True)
processNames = subprocess.run(['grep', 'process_name'],
                              input=ps.stdout, capture_output=True)
print(processNames.stdout)

Linux
  1. Cara Menggunakan Perintah ethtool dengan Contoh

  2. Perintah SCP di Linux:Cara Menggunakannya, dengan Contoh

  3. Bagaimana cara menggunakan regex dengan perintah find?

  1. Cara menggunakan Perintah Su di Linux

  2. Cara Menggunakan Pipes dan Named Pipes di Linux (dengan Contoh)

  3. Cara Menggunakan Perintah RMmod Di Linux Dengan Contoh

  1. Cara Menggunakan Perintah IP di Linux dengan Contoh

  2. Cara Menggunakan Perintah Linux Cat (Dengan Contoh)

  3. Cara Menggunakan Perintah Hexdump Linux dengan Contoh Praktis