1 votos

Cómo excluir algunos procesos al utilizar el comando ps

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ño

clase 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

0voto

Mike Puntos 1

Basta con insertar la condición `` :

Significa "si $2 no coincide con el Inicio de la cadena, seguido de ya sea , , o `` , seguido por el final de la cadena" entonces...

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: