Zum Inhalt springen

Timeout: Unterschied zwischen den Versionen

Aus Foxwiki
 
(11 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 2: Zeile 2:


== Beschreibung ==
== Beschreibung ==
; timeout: Einen Befehl mit Zeitlimit ausführen
[[timeout]] führt den angegebenen <var>Befehl</var> aus und beendet ihn, wenn er nach Ablauf der angegebenen Zeitspanne noch läuft. Übersicht:timeout [<var>Option</var>] <var>Dauer</var> <var>Befehl</var> [<var>Argument</var>]...
<code>timeout</code> führt den angegebenen <var>Befehl</var> aus und beendet ihn, wenn er nach Ablauf der angegebenen Zeitspanne noch läuft. Übersicht:
timeout [<var>Option</var>] <var>Dauer</var> <var>Befehl</var> [<var>Argument</var>]...
<var>Befehl</var> darf kein spezielles integriertes Dienstprogramm sein (siehe Spezielle integrierte Dienstprogramme).
<var>Befehl</var> darf kein spezielles integriertes Dienstprogramm sein (siehe Spezielle integrierte Dienstprogramme).
BEFEHL ausführen und, falls er nach DAUER immer noch    läuft, beenden


== Installation ==
== Installation ==
Zeile 33: Zeile 33:
! Wert !! Beschreibung
! Wert !! Beschreibung
|-
|-
| 0 || Erfolg
| 124 || falls der BEFEHL die Zeit überschreitet und      '''--preserve-status''' nicht angegeben ist
|-
| 125 || falls der '''timeout'''-Befehl selbst fehlschlägt
|-
| 126 || falls der BEFEHL zwar gefunden wurde, aber nicht aufgerufen werden    kann
|-
|-
| >0  || Fehler
| 127 || falls der BEFEHL nicht gefunden wurde
|-
| 137 || falls der Befehl (oder '''timeout''' selbst) das KILL(9)-Signal empfangen      hat (128+9)
|}
|}


 
ansonsten der Rückgabewert des BEFEHLs
; 124
: falls der BEFEHL die Zeit überschreitet und      '''--preserve-status''' nicht angegeben ist
; 125
: falls der '''timeout'''-Befehl selbst fehlschlägt
; 126
: falls der BEFEHL zwar gefunden wurde, aber nicht aufgerufen werden    kann
; 127
: falls der BEFEHL nicht gefunden wurde
; 137
: falls der Befehl (oder '''timeout''' selbst) das KILL(9)-Signal empfangen      hat (128+9)
; -
: ansonsten der Rückgabewert des BEFEHLs


== Anwendung ==
== Anwendung ==
Zeile 79: Zeile 73:
----
----
{{Special:PrefixIndex/{{BASEPAGENAME}}/}}
{{Special:PrefixIndex/{{BASEPAGENAME}}/}}
----
* [[kill]]


=== Dokumentation ===
=== Dokumentation ===
; Man-Page  
; Man-Page  
# [https://manpages.debian.org/stable/procps/pgrep.1.de.html prep(1)]
# [https://manpages.debian.org/trixie/manpages-de/timeout.1.de.html timeout(1)]
 
<!--
; Info-Pages
-->


=== Links ===
=== Links ===
Zeile 92: Zeile 84:
==== Weblinks ====
==== Weblinks ====


{{DEFAULTSORT:new}}
{{DEFAULTSORT:timeout}}
{{DISPLAYTITLE:new}}
{{DISPLAYTITLE:timeout}}
 


[[Kategorie:new]]
[[Kategorie:Coreutils]]
[[Kategorie:Linux/Befehl]]


</noinclude>
</noinclude>
Zeile 163: Zeile 157:
= TMP2 =
= TMP2 =


= BESCHREIBUNG =
== Optionen ==
BEFEHL ausführen und, falls er nach DAUER immer noch    läuft, beenden
Die obligatorischen Argumente für Optionen sind für    deren Kurz- und Langform gleich.


Die obligatorischen Argumente für Optionen sind für    deren Kurz- und Langform gleich.


'''-f''', '''--foreground'''
'''-f''', '''--foreground'''
Zeile 198: Zeile 191:


Bei einer Zeitüberschreitung wird das TERM-Signal an den    BEFEHL gesendet, sofern kein anderes SIGNAL angegeben ist. Das Signal TERM    beendet jegliche Prozesse, die dieses Signal nicht abblocken oder abfangen.    Es muss eventuell das Signal KILL benutzt werden, da dieses Signal nicht    abgefangen werden kann.
Bei einer Zeitüberschreitung wird das TERM-Signal an den    BEFEHL gesendet, sofern kein anderes SIGNAL angegeben ist. Das Signal TERM    beendet jegliche Prozesse, die dieses Signal nicht abblocken oder abfangen.    Es muss eventuell das Signal KILL benutzt werden, da dieses Signal nicht    abgefangen werden kann.
= SIEHE AUCH =
kill(1)
Vollständige Dokumentation unter:    <<nowiki>https://www.gnu.org/software/coreutils/timeout</nowiki>> 
oder lokal verfügbar mit: info '(coreutils) timeout invocation'
Paketiert durch Debian (9.7-2) 
Copyright © 2025 Free Software Foundation, Inc. 
Lizenz GPLv3+: GNU GPL Version 3 oder neuer    <<nowiki>https://gnu.org/licenses/gpl.html</nowiki>>. 
Dies ist freie Software: Sie können sie verändern und    weitergeben. 
Es gibt KEINE GARANTIE, soweit gesetzlich zulässig.

Aktuelle Version vom 6. September 2025, 02:38 Uhr

timeout - Befehl mit Zeitbeschränkung ausführen

Beschreibung

timeout führt den angegebenen Befehl aus und beendet ihn, wenn er nach Ablauf der angegebenen Zeitspanne noch läuft. Übersicht:timeout [Option] Dauer Befehl [Argument]... Befehl darf kein spezielles integriertes Dienstprogramm sein (siehe Spezielle integrierte Dienstprogramme).

BEFEHL ausführen und, falls er nach DAUER immer noch läuft, beenden

Installation

Aufruf

timeout [OPTION] DAUER BEFEHL [ARGUMENT]  
timeout [OPTION]

Optionen

Unix GNU Parameter Beschreibung

Parameter

Umgebungsvariablen

Exit-Status

Wert Beschreibung
124 falls der BEFEHL die Zeit überschreitet und --preserve-status nicht angegeben ist
125 falls der timeout-Befehl selbst fehlschlägt
126 falls der BEFEHL zwar gefunden wurde, aber nicht aufgerufen werden kann
127 falls der BEFEHL nicht gefunden wurde
137 falls der Befehl (oder timeout selbst) das KILL(9)-Signal empfangen hat (128+9)

ansonsten der Rückgabewert des BEFEHLs

Anwendung

Problembehebung

Einige Plattformen unterstützen derzeit keine Zeitüberschreitungen über das Jahr 2038 hinaus

Konfiguration

Dateien

Datei Beschreibung


Anhang

Siehe auch



Dokumentation

Man-Page
  1. timeout(1)

Links

Projekt

Weblinks


TMP

Optionen

Das Programm akzeptiert die folgenden Optionen. Siehe auch Allgemeine Optionen. Optionen müssen vor Operanden stehen.

-f
--foreground
Es wird keine separate Hintergrundprogrammgruppe erstellt, sodass der verwaltete Befehl das Vordergrund-TTY normal verwenden kann. Dies ist erforderlich, um zwei Situationen beim Zeitüberschreiten von Befehlen zu unterstützen, wenn timeout nicht von einer interaktiven Shell aufgerufen wird.
  1. Befehl ist interaktiv und muss beispielsweise vom Terminal lesen
  2. Der Benutzer möchte das Senden von Signalen direkt vom Terminal an Befehl unterstützen (z. B. Strg-C). In diesem Betriebsmodus wird für keine untergeordneten Prozesse von Befehl ein Zeitlimit festgelegt. Außerdem wird SIGCONT nicht an Befehl gesendet, da dies bei Vordergrundprozessen in der Regel nicht erforderlich ist und zu zeitweiligen Problemen bei der Signalübermittlung mit Programmen führen kann, die selbst Monitore sind (wie beispielsweise GDB).
-k Dauer
--kill-after=Dauer
Stellen Sie sicher, dass der überwachte Befehl durch Senden eines „KILL”-Signals beendet wird. Die angegebene Dauer beginnt zu dem Zeitpunkt, zu dem timeout das erste Signal an Befehl sendet, d. h. nicht zu Beginn, wenn der Befehl gestartet wird. Diese Option hat keine Wirkung, wenn entweder die Hauptoption duration des Befehls timeout oder die für diese Option angegebene Option duration den Wert 0 hat. Diese Option kann nützlich sein, wenn das ausgewählte Signal den Befehl nicht beendet hat, entweder weil das Signal blockiert oder ignoriert wurde oder weil der Befehl zu lange braucht (z. B. für Aufräumarbeiten), um sich innerhalb einer bestimmten Zeit selbst zu beenden.
-p
--preserve-status
Gibt bei Zeitüberschreitung den Exit-Status des verwalteten Befehls zurück, anstatt einen bestimmten Exit-Status, der eine Zeitüberschreitung anzeigt. Dies ist nützlich, wenn der verwaltete Befehl die Ausführung für eine unbestimmte Zeit unterstützt.
-s signal
--signal=signal
Sendet dieses signal bei Zeitüberschreitung an command anstelle des Standard-Signals „TERM“. signal kann ein Name wie „HUP“ oder eine Zahl sein. Siehe Signal-Spezifikationen.
-v
--verbose
Diagnose bei Standardfehler, jedes bei Zeitüberschreitung gesendete Signal.

duration ist eine Gleitkommazahl entweder in der aktuellen oder der C-Locale (siehe Gleitkommazahlen), gefolgt von einer optionalen Einheit: ‘s’ für Sekunden (Standard) ‘m’ für Minuten „h“ für Stunden „d“ für Tage Eine Hexadezimalzahl kann nur dann vor einem Suffix „d“ stehen, wenn die Zahl einen Exponenten im Stil „p“ hat, z. B. bedeutet „0x1p0d“ einen Tag. Eine Dauer von 0 deaktiviert das zugehörige Timeout. Die tatsächliche Timeout-Dauer hängt von den Systembedingungen ab, was insbesondere bei der Angabe von Timeouts im Subsekundenbereich berücksichtigt werden sollte.

Exit-Status: 124, wenn Befehl zeitlich begrenzt ist und --preserve-status nicht angegeben ist 125, wenn timeout selbst fehlschlägt 126, wenn Befehl gefunden wird, aber nicht aufgerufen werden kann 127, wenn Befehl nicht gefunden werden kann 137, wenn Befehl oder timeout das KILL(9)-Signal (128+9) gesendet wird ansonsten der Exit-Status von Befehl Im Falle des Signals „KILL(9)“ gibt timeout den Exit-Status 137 zurück, unabhängig davon, ob dieses Signal an command oder an timeout selbst gesendet wird, d. h., diese Fälle können nicht unterschieden werden. Im letzteren Fall kann der Prozess Befehl nach der erzwungenen Beendigung von timeout noch aktiv sein.

Beispiele:

  1. Sende nach 20 Sekunden das Standard-TERM-Signal an ein kurzlebiges „sleep 1”.
  2. Da dies lange vor Ablauf der angegebenen Dauer beendet wird, kehrt „timeout”
  3. mit dem gleichen Exit-Status wie der Befehl zurück, in diesem Fall 0.

timeout 20 sleep 1

  1. Sende das INT-Signal nach 5 Sekunden an den Befehl „sleep”. Gibt nach
  2. 5 Sekunden den Exit-Status 124 zurück, um das Senden des Signals anzuzeigen.

timeout -s INT 5 sleep 20

  1. Ebenso, aber der Befehl ignoriert das INT-Signal, da er
  2. über „env --ignore-signal” gestartet wurde. Somit wird „sleep” nach
  3. den vollen 20 Sekunden regulär beendet, „timeout” kehrt jedoch mit dem Exit-Status 124 zurück.

timeout -s INT 5s env --ignore-signal=INT sleep 20

  1. Ebenso, jedoch wird das KILL-Signal 3 Sekunden nach dem ursprünglichen
  2. INT-Signal. Daher wird „sleep” nach etwa
  3. 8 Sekunden (5+3) zwangsweise beendet und „timeout” kehrt mit dem Exit-Status 137 zurück.

timeout -s INT -k 3s 5s env --ignore-signal=INT sleep 20

TMP2

Optionen

Die obligatorischen Argumente für Optionen sind für deren Kurz- und Langform gleich.


-f, --foreground

Falls timeout nicht direkt aus einem Shellprompt aufgerufen wird, wird dem BEFEHL erlaubt, aus dem TTY zu lesen und TTY-Signale zu empfangen. In diesem Modus läuft die Zeit für Kindprozesse von BEFEHL nicht ab.

-k, --kill-after=DAUER

Außerdem ein KILL-Signal senden, falls BEFEHL noch nach der DAUER, nachdem das anfängliche Signal gesandt wurde, ausgeführt wird.

-p, --preserve-status

beendet sich sogar dann mit dem selben Status wie BEFEHL, wenn der Befehl die Zeit überschreitet.

-s, --signal=SIGNAL

Das Signal angeben, das bei einer Zeitüberschreitung gesandt werden soll. SIGNAL könnte eine Name, wie »HUP«, oder eine Nummer sein. Lesen Sie »kill -l«, um eine Liste der Signale zu erhalten.
-v, --verbose
Jedes Signal, das bei einer Zeitüberschreitung gesandt werden soll, auf die Standardfehlerausgabe bestimmen.
--help
zeigt Hilfeinformationen an und beendet das Programm.
--version
gibt Versionsinformationen aus und beendet das Programm.

DAUER ist eine Fließkommazahl mit optionaler Endung: »s« für Sekunden (Vorgabe), »m«  für Minuten, »h« für Stunden oder »d« für Tage. Eine Dauer von 0 deaktiviert die zugehörige Zeitüberschreitung.

Bei einer Zeitüberschreitung wird das TERM-Signal an den BEFEHL gesendet, sofern kein anderes SIGNAL angegeben ist. Das Signal TERM beendet jegliche Prozesse, die dieses Signal nicht abblocken oder abfangen. Es muss eventuell das Signal KILL benutzt werden, da dieses Signal nicht abgefangen werden kann.