Wie kann ich einen nicht reagierenden Dateideskriptor simulieren?

Wie kann ich einen nicht reagierenden Dateideskriptor simulieren?

Wir haben eine Anwendung, die in eine Protokolldatei schreibt. In der Produktionsumgebung ist das Protokolldateiverzeichnis einem NAS zugeordnet:

192.168.1.10:/storage/app/log 2554360832 11844608 2412762112   1% /usr/local/app/log

Mir wurde gesagt, dass das NAS in einigen Fällen ausgefallen ist, was dazu führte, dass unsere Anwendung beim Versuch, in die Protokolldatei zu schreiben, auf unbestimmte Zeit blockiert wurde.

Ich würde gerne versuchen, dies zu reproduzieren, um sicherzugehen, dass dies tatsächlich passiert ist, und um eine Lösung testen zu können. Aber wir haben in unserer Entwicklungsumgebung kein NAS.

Gibt es eine Möglichkeit, einen Dateideskriptor so zu veranlassen, dass er nicht mehr reagiert, sodass ein Versuch, in ihn zu schreiben, auf unbestimmte Zeit blockiert wird?

Antwort1

Erstellen Sie eine benannte Pipe, aber öffnen Sie sie nicht zum Lesen:

$ mkfifo /tmp/test-fifo
$ echo a > /tmp/test-fifo

Antwort2

Öffnen Sie eines davon, ohne dass sich am anderen Ende etwas befindet.

  • Eine benannte Pipe.
  • Eine anonyme Pfeife.
  • Eine Internet-Buchse.
  • ...

Sie können einen Dienst auch lokal ausführen. Sie können ihn sogar in Docker (oder über Containerisierung oder Virtualisierung) ausführen. Dies ist vorzuziehen, da Sie keine Ahnung haben, welche Unterschiede es bei den anderen Optionen gibt.

verwandte Informationen