Вывод сценария запуска Tomcat недоступен при использовании конвейера (grep)

Los paquetes de red no tienen un campo de "usuario", por lo que lo más que puede hacer es identificar los paquetes de un usuario en el host donde se originan esos paquetes y priorizarlos en este host. Esto no cambiará nada sobre cómo se tratan esos paquetes en el resto de la red.

Alternativamente, si controla la red (o parte de la red ), puede usar la identificación anterior para marcar el paquete de alguna otra manera y luego priorizar esos paquetes marcados en la parte (de la red )que controla.

Eche un vistazo al control de tráfico(tc)y la reescritura de paquetes(iptables).

Modificar el comportamiento de TCP en función del usuario (, por ejemplo, colocando al usuario en un espacio de nombres de red y modificando la configuración de TCP en este espacio de nombres )probablemente no funcionará :Si la red ya está congestionada, los paquetes se caen y los búferes llenos causan latencia en todas partes, enviar paquetes de manera más agresiva solo empeorará las cosas para todos.

Pero eres libre de experimentar en tu red local, por supuesto.

Y si la aplicación práctica que tenía en mente no es la calidad de servicio en su propia red local,pero algo como "Estoy compartiendo piso con otros chicos, y soy muy egoísta y quiero ver videos de Youtube sin esperar, mientras que está bien si los otros chicos esperan" :Esto no funcionará en todo. No está proporcionando contenido útil para otra persona, que podría priorizar, está descargando contenido y el cuello de botella está en el lado del ISP del DSL (o cualquier línea )entre el ISP y su piso. Y el ISP controla este lado y decide cómo priorizar los paquetes, por lo que nada de lo que haga cambiará nada al respecto.

1
14.06.2019, 08:26
2 ответа

Удалите | grep CATALINAиз вашей тестовой команды, и если вы не получаете никакого вывода из строки:

echo $have_tty

Тогда $have _tty не будет установлен и приведет к тому, что выполнение не войдет в блок if. Вам нужно будет проследить, где изначально устанавливается $ have _tty.

Похоже, что Catalina использует эту команду , чтобы определить, есть ли у нее tty:

$ tty
/dev/ttys011

Чтобы получить tty, убедитесь, что скрипт запущен из командной строки, а не через не -процесс tty (, например. процесс инициализации)

0
27.01.2020, 23:30

Во-первых, спасибо @Zeitounator и @A.B за их комментарии!

После некоторого тестирования на разных версиях tomcat и более глубокого копания я обнаружил, что проблема действительно заключается в том, что have_ttyустановлен на ноль. Использование сценария catalina в канале приводит к сбою теста if [ -t 1 ];.

Я был озадачен, потому что использование простого catalinaправильно устанавливает have_ttyв 1. Это было еще более странно, потому что раньше он работал с предыдущей младшей версией tomcat. На самом деле это было введено в этом коммите:https://github.com/apache/tomcat/commit/bf894a0e6b5c8f92b122452645e93d63277ad3ab

Кажется, что тест -t 1не подходит для использования в конвейере. Вместо этого должно быть-t 0(это согласно комментарию AB «Обычно тест выполняется на стандартном вводе» ).

2
27.01.2020, 23:30

Теги

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