GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo usar el comando `subproceso` con tuberías

Consulte la documentación sobre cómo configurar una canalización mediante un subproceso:http://docs.python.org/2/library/subprocess.html#replacing-shell-pipeline

No he probado el siguiente ejemplo de código, pero debería ser más o menos lo que desea:

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]

O siempre puede usar el método de comunicación en los objetos de subproceso.

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

El método de comunicación devuelve una tupla de la salida estándar y el error estándar.


Para usar una tubería con el subprocess módulo, tienes que pasar shell=True .

Sin embargo, esto no es realmente recomendable por varias razones, una de las cuales es la seguridad. En su lugar, cree el ps y grep procesa por separado y canaliza la salida de uno a otro, así:

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

Sin embargo, en su caso particular, la solución simple es llamar a subprocess.check_output(('ps', '-A')) y luego str.find en la salida.


Usando subproceso.ejecutar

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. Cómo usar el comando ethtool con ejemplos

  2. Cómo usar el comando Su en Linux

  3. Cómo usar tuberías y tuberías con nombre en Linux (con ejemplos)

  4. Comando SCP en Linux:cómo usarlo, con ejemplos

  5. ¿Cómo usar expresiones regulares con el comando de búsqueda?

Cómo usar el comando gunzip de Linux con ejemplos

Cómo usar el comando rm de Linux con ejemplos

Cómo usar el comando PS

Cómo usar el comando SUPERIOR

Cómo usar el comando de apagado con ejemplos

Cómo usar el comando de suspensión en Linux:explicado con ejemplos