ich das Timeout Befehl von GNU Coreutils läuft,ein Programm mit Timeout Lauf
gtimeout 600 Python myprogram.py
Nach dem manual,
Dauer ist ein Fließkommazahl, gefolgt von einer optionalen Einheit:
's' für Secon ds (Standardeinstellung) ‚m‘ für Minuten ‚h‘ Stunden ‚d‘ für Tage
Somit wird der "python myprogram.py
Teil soll innerhalb von 600 Sekunden (10 Minuten) beendet. Zu meiner Überraschung ist der Befehl nach 1 Stunde tatsächlich abgelaufen. Warum?
Vielleicht reagiert Ihr Python-Skript nicht richtig SigTerm? Versuchen Sie, "-s 9" hinzuzufügen, z. 'gtimeout -s 9 600 python myprogram.py', um stattdessen SIGKILL zu senden. – CherryDT
Könntest du ein wenig näher ausführen? Ich werde deine Antwort wahrscheinlich akzeptieren. – zell
Ich bin nicht sicher, ob dies die richtige Lösung in Ihrem Fall ist, Sie müssten es versuchen. Gerade jetzt war es eine Vermutung und ich dachte, es ist nicht genug für eine tatsächliche Antwort. Aber die Sache ist, dass es zwei Möglichkeiten gibt, einen Prozess zu beenden: das Signal "SIGTERM", das grundsätzlich einen Prozess zum Beenden auffordert (es kann sich weigern) und "SIGKILL", der nicht blockiert werden kann und den Prozess erzwingt vom Betriebssystem beendet werden. 'gtimeout' sendet normalerweise SIGTERM (wie' kill'). Sie können '-s' verwenden, um ein anderes Signal zu spezifizieren, wie' 9' (dasselbe wie 'KILL', der Name des Signals), wie Sie es mit' kill -9' tun würden. – CherryDT