GNU/Linux >> Linux Esercitazione >  >> Linux

Come usare il comando `subprocess` con pipe

Consulta la documentazione sulla configurazione di una pipeline utilizzando subprocess:http://docs.python.org/2/library/subprocess.html#replacing-shell-pipeline

Non ho testato il seguente esempio di codice, ma dovrebbe essere più o meno quello che desideri:

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]

Oppure puoi sempre utilizzare il metodo di comunicazione sugli oggetti del sottoprocesso.

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

Il metodo di comunicazione restituisce una tupla dell'output standard e dell'errore standard.


Per utilizzare una pipa con subprocess module, devi superare shell=True .

Tuttavia, questo non è davvero consigliabile per vari motivi, non ultimo quello della sicurezza. Invece, crea il ps e grep elabora separatamente e reindirizza l'output da uno all'altro, in questo modo:

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

Nel tuo caso particolare, tuttavia, la soluzione semplice è chiamare subprocess.check_output(('ps', '-A')) e poi str.find in uscita.


Usando 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. Come utilizzare il comando ethtool con esempi

  2. Come utilizzare il comando Hexdump di Linux con esempi pratici

  3. Come utilizzare pipe e pipe con nome in Linux (con esempi)

  4. Comando SCP in Linux:come usarlo, con esempi

  5. Come utilizzare il comando Rmmod su Linux con esempi

Come utilizzare il comando gunzip di Linux con esempi

Come utilizzare il comando Linux rm con esempi

Come usare il comando PS

Come usare il comando TOP

Come usare il comando di spegnimento con esempi

Come utilizzare il comando Sleep in Linux:spiegato con esempi