У нас есть приложение, которое пишет в файл журнала. В среде prod каталог файла журнала отображается на NAS:
192.168.1.10:/storage/app/log 2554360832 11844608 2412762112 1% /usr/local/app/log
Мне сообщили, что несколько раз NAS выходил из строя, что приводило к бесконечной блокировке нашего приложения при попытке записи в файл журнала.
Я хотел бы попробовать воспроизвести это, чтобы убедиться, что это именно то, что произошло, а также иметь возможность протестировать исправление. Но у нас нет NAS в нашей среде разработки.
Есть ли способ сделать так, чтобы файловый дескриптор перестал отвечать, и попытка записи в него была бы заблокирована на неопределенный срок?
решение1
Создайте именованный канал, но не открывайте его для чтения:
$ mkfifo /tmp/test-fifo
$ echo a > /tmp/test-fifo
решение2
Откройте один из них, оставив на другом конце пустое место.
- Именованный канал.
- Анонимная трубка.
- Интернет-розетка.
- ...
Вы также можете запустить службу локально. Вы даже можете запустить их в docker (или поверх контейнеризации или виртуализации). Это предпочтительно, так как вы не будете знать, какие различия существуют в других вариантах.