ubuntuusers.de

Python - Programm via Shell für x Sekunden laufen lassen und dann beenden

Status: Gelöst | Ubuntu-Version: Ubuntu 20.04 (Focal Fossa)
Antworten |

jAIk

Avatar von jAIk

Anmeldungsdatum:
7. Juni 2007

Beiträge: 254

Hallo zusammen,

ich habe recht lange nach einer Möglichkeit gesucht, einen Konsolen-Befehl via Python für eine bestimmte Zeit auszuführen und dann zu beenden (Pendant zu Strg + Z nach x Sekunden).

Raus gekommen ist der folgende Code. Meine Frage: Das geht doch bestimmt deutlich sauberer als mit kill, oder? Gerne auch einfach Stichworte nennen. Am Googeln wird es nicht scheitern. ☺

1
2
3
4
5
6
7
8
9
def executer(command):
    print("Run command: " + str(command))
    pro = subprocess.Popen(command, stdout=subprocess.PIPE, 
                       shell=True, preexec_fn=os.setsid) 
    time.sleep(10)
    os.killpg(os.getpgid(pro.pid), signal.SIGTERM)   

command = "watch tail -n 1 mylogfile.txt"
executer(command)

VG jaik

Axel-Erfurt

Anmeldungsdatum:
18. Mai 2016

Beiträge: 1347

Wenns nicht unbedingt python sein muß kannst du auch timeout versuchen

Beispiel (Ende nach 20 Sekunden)

1
timeout 20s befehl

sebix Team-Icon

Ehemalige

Anmeldungsdatum:
14. April 2009

Beiträge: 5584

Einfach nicht die - ohnehin nicht empfohlene - Funktion subprocess.Popen verwenden, sondern die wesentlich bessere subprocess.run. Und die hat praktischerweise einen Parameter namens timeout =)

jAIk

(Themenstarter)
Avatar von jAIk

Anmeldungsdatum:
7. Juni 2007

Beiträge: 254

Danke!

Antworten |