Warum bleibt das Dig-Dienstprogramm auf unbestimmte Zeit hängen, selbst wenn eine Zeitüberschreitung angegeben ist?

Warum bleibt das Dig-Dienstprogramm auf unbestimmte Zeit hängen, selbst wenn eine Zeitüberschreitung angegeben ist?

Ich verwende digein Dienstprogramm, um eine öffentliche IP-Adresse zu finden.

Der Befehl, den ich verwendet habe, ist:

dig +short myip.opendns.com @resolver1.opendns.com

aber ich hatte ein Problem, da es auf einigen anderen Computern so lange dauerte, also fügte ich hinzuTimeout nach 5 Sekunden:

dig +short +time=5 +tries=1 myip.opendns.com @resolver1.opendns.com

und auf manchen Computern schlägt es wie erwartet fehl, aber auf anderen Computern wird es nie beendet. Es bleibt einfach hängen ...

Irgendeine Idee, warum das liegt und wie man es beheben kann, damit das Timeout wie erwartet nach 5 Sekunden erfolgt?

BEARBEITEN:

Habe es schon probiert timeout, aber es hängt immer noch. Ich glaube, es bleibt beim Auflösen des DNS hängen. Ich kann zum Beispiel nicht ping www.google.com, aber ich kann 172.217.20.4.

Antwort1

Was die Verwendung von Anwendungs-Timeouts in einigen Dienstprogrammen betrifft, ist bei Verbindungsproblemen nicht immer gewährleistet, dass die Anwendung durch äußere Einflüsse von selbst beendet wird.

Für die problematischen Situationen, in denen es hängen bleibt, würde ich vorsichtshalber nach einiger Zeit ein externes Dienstprogramm verwenden, um es zu beenden.

Wie in:

timeout 5 dig +short +time=5 +tries=1 myip.opendns.com @resolver1.opendns.com

Ausman timeout

NAME nach oben

   timeout - run a command with a time limit

ZUSAMMENFASSUNG

   timeout [OPTION] DURATION COMMAND [ARG]...
   timeout [OPTION]

BESCHREIBUNG

   Start COMMAND, and kill it if still running after DURATION.

verwandte Informationen