Wenn man ein Pythonscript laufen hat, kann man es nicht einfach per

killall SCRIPTNAME

abwürgen. Man benötigt die PID. Doch wie bekommt man diese? Speziell gefragt, wie bekommt man diese PID in einem anderen Script, welches Prüfen soll, ob ein bestimmter Prozess läuft oder nicht?

Ich hab hier ein kleines Python-Script geschrieben, welches die PID eines laufenden Scripts zurückgibt. Das Script habe ich “get.PID.py” genannt, und es hat folgenden (von Nutzer blubb modifizierten) Inhalt:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import os,sys

def getPID(myprocess):
    cmd = "ps ax|grep -v grep | grep %s" % (myprocess)
    output = ""
    f=os.popen(cmd)
    for i in f.readlines():
        output = output + i
    if output == "":
        #-- Kein Prozess gefunden
        return("NOPID")
    else:
        #-- Prozess existiert, suche PID raus
        begin = 0
        y = True
        while y==True:
            if output[begin] == " ":
                # Leerzeichen gefunden, PID beginnt noch nicht
                begin += 1
            else:
                # Kein Leerzeichen gefunden, PID beginnt hier
                y = False
        end = begin
        y = True
        while y==True:
            if output[end] == " ":
                # Leerzeichen gefunden, PID endet hier, breche ab
                y= False
            else:
                end += 1
        return(output[begin:end])
try:
    searchfor = sys.argv[1]
except:
    print("USAGE: get.PID.py PROCESS")
    sys.exit(1)
print(getPID(searchfor))

Jetzt kann das Script mit get.PID.py PROZESSNAME aufgerufen werden. Sollte der gesuchte Prozess nicht existieren, wirft die Funktion den String “NOPID” zurück.

Hoffe, dass ich dem ein oder anderen damit helfen konnte (nochmals dank an “blubb” fürs Modifizieren). Falls euch das Script zu umständlich vorkommt, schreibt mir nen Kommentar…