So rufen Sie die Prozessstartzeit (oder -verfügbarkeit) in Python ab


stanleyxu2005:

Wie kann ich die Prozessstartzeit (oder -verfügbarkeit) in Python unter Linux abrufen?

Ich weiß nur, ich kann "ps -p my_process_id -f" aufrufen und dann die Ausgabe analysieren. Aber es ist nicht cool.

Daniel G:

Wenn Sie dies aus dem Python-Programm heraus tun, das Sie messen möchten, können Sie Folgendes tun:

import time
# at the beginning of the script
startTime = time.time()
# ...
def getUptime():
    """
    Returns the number of seconds since the program started.
    """
    # do return startTime if you just want the process start time
    return time.time() - startTime

Ansonsten haben Sie keine andere Wahl, als zu analysieren psoder darauf einzugehen /proc/pid. Eine gute bashMöglichkeit, die verstrichene Zeit zu ermitteln, ist:

ps -eo pid,etime | grep $YOUR_PID | awk '{print $2}'

Dadurch wird nur die verstrichene Zeit im folgenden Format gedruckt, sodass das Parsen recht einfach sein sollte:

days-HH:MM:SS

(Wenn es weniger als einen Tag läuft, ist es nur HH:MM:SS)

Die Startzeit ist wie folgt verfügbar:

ps -eo pid,stime | grep $YOUR_PID | awk '{print $2}'

Wenn Ihr Prozess heute nicht gestartet wurde, erhalten Sie leider nur das Datum, an dem er gestartet wurde, und nicht die Uhrzeit.

Der beste Weg, dies zu tun, besteht darin, die verstrichene Zeit und die aktuelle Zeit zu ermitteln und nur ein bisschen zu rechnen. Das folgende Python-Skript verwendet eine PID als Argument und erledigt die oben genannten Schritte für Sie, wobei das Startdatum und die Startzeit des Prozesses ausgedruckt werden:

import sys
import datetime
import time
import subprocess

# call like this: python startTime.py $PID

pid = sys.argv[1]
proc = subprocess.Popen(['ps','-eo','pid,etime'], stdout=subprocess.PIPE)
# get data from stdout
proc.wait()
results = proc.stdout.readlines()
# parse data (should only be one)
for result in results:
    try:
        result.strip()
        if result.split()[0] == pid:
            pidInfo = result.split()[1]
            # stop after the first one we find
            break
    except IndexError:
        pass # ignore it
else:
    # didn't find one
    print "Process PID", pid, "doesn't seem to exist!"
    sys.exit(0)
pidInfo = [result.split()[1] for result in results
           if result.split()[0] == pid][0]
pidInfo = pidInfo.partition("-")
if pidInfo[1] == '-':
    # there is a day
    days = int(pidInfo[0])
    rest = pidInfo[2].split(":")
    hours = int(rest[0])
    minutes = int(rest[1])
    seconds = int(rest[2])
else:
    days = 0
    rest = pidInfo[0].split(":")
    if len(rest) == 3:
        hours = int(rest[0])
        minutes = int(rest[1])
        seconds = int(rest[2])
    elif len(rest) == 2:
        hours = 0
        minutes = int(rest[0])
        seconds = int(rest[1])
    else:
        hours = 0
        minutes = 0
        seconds = int(rest[0])

# get the start time
secondsSinceStart = days*24*3600 + hours*3600 + minutes*60 + seconds
# unix time (in seconds) of start
startTime = time.time() - secondsSinceStart
# final result
print "Process started on",
print datetime.datetime.fromtimestamp(startTime).strftime("%a %b %d at %I:%M:%S %p")

Verwandte Artikel


So erhalten Sie die Prozessstartzeit in PowerShell

n179911 Wie erhalte ich die Prozessstartzeit in PowerShell? Ich habe dies in der PowerShell-Eingabeaufforderung versucht: (Get-Process MyProcessName).StartTime.ToString('yyyyMMdd') Und das ist der Fehler, den ich bekommen habe: (Get-Process MyProcessName).Sta

So rufen Sie die Ausgabe des Python-Unterprozesses ab

criss Ich verwende die Python-Unterprozessfunktion, weil ich die Ausgabe des Befehls in Echtzeit lesen möchte. Aber ich möchte, dass nach dem Ende des Prozesses alles, was als Stream-Ausgabe geschrieben wurde, vollständig an das Objekt zurückgegeben wurde. imp

SqlServer: So rufen Sie eine vorhandene oder die letzte ID ab

SteMMo Ich muss einen Datensatz nur dann in eine Tabelle einfügen, wenn er nicht vorhanden ist. In jedem Fall möchte ich die ID-Spalte (wenn der Datensatz gefunden wird) oder die zuletzt verwendete ID-Spalte (wenn der Datensatz neu ist) zurückgeben. if exists

So rufen Sie Daten von einer Webseite in Java oder Python ab

Benutzer9420246 Ich arbeite an einem Projekt und in einem bestimmten Teil muss ich nach Informationen suchen und die Ergebnisse dieser Suche aus dem Internet abrufen, damit die Daten von der Webseite abgerufen werden können, um sie zu verwenden? NRJ Selenium v

So rufen Sie die Variable in def __init__ in Python ab

Afira Ich muss eine Variable in der def __init__. Der Code wie folgt: class HuffmanCode(object): def __init__(self, probabilities, digits): self.probabilities = probabilities #print (self.probabilities) self.huffman = huffman_nary_

So rufen Sie die Themenliste mit Python ab

Park Hyung-ryeol Angenommen ich habe das: [ {"name": "Tom", "age": 10}, {"name": "Mark", "age": 5}, {"name": "Pam", "age": 7} ] und indem ich nach Name suche, möchte ich die Themenliste abrufen: ["Tom", "Mark", "Pam"] Wie erreicht man das? Sujay Sie kön