Сбой фильтрации вывода ping через несколько каналов

У меня была аналогичная проблема, и добавление следующего к параметрам ядра решило проблему:

acpi_osi= acpi_backlight=vendor
0
13.02.2020, 00:05
2 ответа

Однозначный ответ: буферизация строк . Вы можете продемонстрировать это с помощью ping -c 3вместо простого ping, где весь вывод производится только после завершения первой команды.

В качестве обходного пути с GNU grepвы можете уменьшить два фильтра до одного

ping 192.168.0.1 | grep -oP '[[:digit:].]+(?= ms)'

Или, если вы действительно хотите использовать два фильтра, вам подойдет либо grep --line-buffered..., либо stdbuf -oL grep....

2
20.08.2021, 10:50

Я думаю, что ваша проблема вызвана буферизацией строк в вашей оболочке.

Если вы позволите вашей команде выполняться достаточно долго, вы должны увидеть некоторые выходные данные.
Или просто ограничьте количество пингов вот так:

$ ping -c4 192.168.0.1 | grep -o '[^ =]* ms' | grep -o '^[^ ]*'

Есть еще информация и обходные (решения? )если вы перейдете по этой ссылке

0
20.08.2021, 10:50

Теги

Похожие вопросы