Töten mit python

Ich muss ein Skript machen, das vom Benutzer das folgende erhält:

1) Prozessname (auf Linux).

2) Der Log-Dateiname, den dieser Prozess darauf schreibt.

Es muss den Prozess töten und überprüfen, ob der Prozess heruntergefahren ist. Ändern Sie den Namen der Protokolldatei in einen neuen Dateinamen mit der Uhrzeit und dem Datum. Und dann den Prozess noch einmal, überprüfen Sie, dass es in Ordnung ist, wird es weiterhin auf die Protokolldatei zu schreiben.

Vielen Dank im Voraus für die Hilfe.

  • Warum Druckbetrieb innerhalb des Signalhandlers kann die Deadlock-Situation ändern?
  • Importfehler kein Modul namens zlib (braup install python)
  • Datastax Python-Cassandra-Treiber baut auf Ubuntu aus
  • Korrektes Dämonverhalten (aus PEP 3143) erklärt
  • Wie kann ich einen Python Pyro Client mit PHP und Apache Webserver richtig anrufen?
  • 502 Bad Gateway verbindet Nginx mit Django über Sockel
  • 2 Solutions collect form web for “Töten mit python”

    Sie können die Prozess-ID (PID) abrufen, die es mit dem Befehl pgrep wie pgrep angeben hat:

     import subprocess import signal import os from datetime import datetime as dt process_name = sys.argv[1] log_file_name = sys.argv[2] proc = subprocess.Popen(["pgrep", process_name], stdout=subprocess.PIPE) # Kill process. for pid in proc.stdout: os.kill(int(pid), signal.SIGTERM) # Check if the process that we killed is alive. try: os.kill(int(pid), 0) raise Exception("""wasn't able to kill the process HINT:use signal.SIGKILL or signal.SIGABORT""") except OSError as ex: continue # Save old logging file and create a new one. os.system("cp {0} '{0}-dup-{1}'".format(log_file_name, dt.now())) # Empty the logging file. with open(log_file_name, "w") as f: pass # Run the process again. os.sytsem("<command to run the process>") # you can use os.exec* if you want to replace this process with the new one which i think is much better in this case. # the os.system() or os.exec* call will failed if something go wrong like this you can check if the process is runninh again. 

    Hoffe das kann helfen

    Wenn Sie wissen, wie man es im Terminal macht, dann könnten Sie folgendes verwenden:

     import os os.system("your_command_here; second_command; third; etc") 

    So dass Sie am Ende mit einer Art Shell-Skript in Python. Ich würde auch erwägen, diese Shell-Skript existieren auf eigene Faust und dann rufen Sie es aus Python:

     import os os.system("path/to/my_script.sh") 

    Prost!

    Python ist die beste Programmiersprache der Welt.