Trato de desarrollar el administrador de Tareas para mi uso personal y el uso de python3. En mi código que utilice este comando para listar todos los procesos en ejecución en un bucle while
ps -eo pid,comm,user,%mem,%cpu | awk '{$4=<Variablehere>*$4/100;}{print;}'
pero cada vez que se ejecuta existen tres procesos no quiero ser listados que se sh
ps
awk
así que mi pregunta es, ¿cómo puedo obtener el Pid de estos procesos de modo que puedo después de deshacerse de ellos de la lista
gracias
[EDITAR]
importación de subproceso desde el momento de la importación del sueñoclase processData : def init (self) : mem = siguiente(auto._run_command("m")).decode('utf-8').replace("\n","") mem = str(int(float(mem)/1024)) #print(mem)
self.allprocess = "ps -eo pid,comm,user,%mem,%cpu | awk '{$4="+mem+"*$4/100;}{print;}';" self.ownprocess = "ps -eo pid,comm,user,%mem,%cpu | awk '{$4=(" + mem + "*$4/100);}{print;}' | grep $USER" self.otherprocess = "ps -eo pid,comm,user,%mem,%cpu | awk '{$4=(" + mem + "*$4/100);}{print;}' | grep -v $USER" def _run_command(self,fil): if fil == "a" : command = self.allprocess elif fil == "u" : command = self.ownprocess elif fil == "o" : command = self.otherprocess elif fil == "m" : command = "awk '/MemTotal/ {print $2}' /proc/meminfo" p = subprocess.Popen(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True) for line in iter(p.stdout.readline, b''): if line: yield line while p.poll() is None: sleep(.1) err = p.stderr.read() if p.returncode != 0: print("Error: " + str(err)) @staticmethod def unique(list1 , list2) : ids = [i[0] for i in list2] return [i for i in list1 if i[0] not in ids]; def get(self,choice) : processes = []; for process in self._run_command(choice) : processes.append(process.decode('utf-8').replace("\n","").split()); return processes#[0:(len(processes)-1)-2]; print(processData().get("a"));
Lo que queremos no es una lista de procesos que se ejecutan debido a la ejecución de mi programa