import subprocess
def getSecondsFromStartProcess(process):
"""
Esta funcion devuelve un diccionario del tipo id:segundos con los segundos
desde el inicio de cada proceso
"""
def getSeconds(days,hour,minutes,seconds):
"""
Esta funcion calcula y devuelve los segundos desde los valores pasados
como son dias, horas, ...
"""
totalSeconds=int(days)*24*60*60
totalSeconds+=int(hour)*60*60
totalSeconds+=int(minutes)*60
totalSeconds+=int(seconds)
return totalSeconds
# diccionari que contendra los id:segundos de los procesos
listProcessors={}
# obtenemos los id's y procesos que cumplen con la condicion pasada
processors=subprocess.getoutput("/bin/ps -eo pid,etime,cmd | grep '%s' | grep -v grep" % process)
# separamos las lineas en una lista
lines=processors.splitlines()
# recorremos todas las lineas
for line in lines:
days=0
# obtenemos la hora de inicio del proceso, que puede estar en tres formatos
# diferentes:
# 3-17:36:59
# 17:36:59
# 36:59
time=line.split()[1]
if time.find("-")>=0:
# el formato es 3-17:36:59
days=time.split("-")[0]
time=time.split("-")[1]
elif len(time.split(":"))==3:
# el formato es 17:36:59
pass
else:
# el formato es 36:59
time="00:"+time
time=time.split(":")
listProcessors[int(line.split()[0])]=getSeconds(days, time[0], time[1], time[2])
return listProcessors
print(getSecondsFromStartProcess("chromium"))
Comentarios sobre la versión: Versión 1.0 - Python 3.x (1)