Кажется, это глупый вопрос, но я не могу понять, почему мой bash-скрипт ведет себя странно.
У меня есть простой bash-скрипт, который контролирует сервер и проверяет, работает он или нет.
Скрипт работает нормально, но существует примерно через 30 секунд. Затем я снова запускаю скрипт, он немного зацикливается и снова выходит.
Сервер постоянно работает, он не останавливается, поэтому я не понимаю, почему мой цикл завершается через некоторое время.
#!/bin/bash
export ZOOKEEPER_HOST=localhost
export ZOOKEEPER_PORT=2181
export KAFKA_HOME=/home/.../server/kafka/kafka_2.11-2.0.0
# *********************************************************
# ** STOP: Kafka **
# *********************************************************
stop-kafka() {
echo "-> Stopping Kafka server..."
#${KAFKA_HOME}/bin/kafka-server-stop.sh &
while echo dump | nc ${ZOOKEEPER_HOST} ${ZOOKEEPER_PORT} | grep brokers
do
echo "Kafka server is still running..."
sleep 1
done
}
stop-kafka
exit 0
Это вывод первых строк моего скрипта на консоли:
xxx@hp:~/workspace/xxx/xxx$ ./test-run.sh
-> Stopping Kafka server...
/brokers/ids/0
Kafka server is still running...
/brokers/ids/0
Kafka server is still running...
/brokers/ids/0
Kafka server is still running...
И последние строки перед моим скриптом завершаются:
Kafka server is still running...
/brokers/ids/0
Kafka server is still running...
/brokers/ids/0
Kafka server is still running...
/brokers/ids/0
Kafka server is still running...
/brokers/ids/0
Kafka server is still running...
/brokers/ids/0
Kafka server is still running...
xxx@hp:~/workspace/xxx/xxx$
-> ОБНОВЛЕНИЕ <- </strong>
Я изменил свой скрипт согласно предложению @ shellter.
stop-kafka() {
echo "-> Stopping Kafka server..."
#${KAFKA_HOME}/bin/kafka-server-stop.sh &
#while echo dump | nc ${ZOOKEEPER_HOST} ${ZOOKEEPER_PORT} | grep brokers
while true
do
echo "Kafka server is still running..."
echo dump | nc ${ZOOKEEPER_HOST} ${ZOOKEEPER_PORT}
sleep 1
done
}
Я запустил его с помощью этой команды: ./test-run.sh > test-run.log
Файл журнала:
...
Kafka server is still running...
SessionTracker dump:
Session Sets (3):
0 expire at Thu Jan 01 02:22:48 CET 1970:
0 expire at Thu Jan 01 02:22:51 CET 1970:
1 expire at Thu Jan 01 02:22:54 CET 1970:
0x10000491a850000
ephemeral nodes dump:
Sessions with Ephemerals (1):
0x10000491a850000:
/controller
/brokers/ids/0
Kafka server is still running... <-- missing content after this line
Kafka server is still running...
SessionTracker dump:
Session Sets (3):
0 expire at Thu Jan 01 02:22:48 CET 1970:
0 expire at Thu Jan 01 02:22:51 CET 1970:
1 expire at Thu Jan 01 02:22:54 CET 1970:
0x10000491a850000
ephemeral nodes dump:
Sessions with Ephemerals (1):
0x10000491a850000:
/controller
/brokers/ids/0
...
После некоторого цикла, как вы видите, содержимое "полезной нагрузки" отсутствует.
Это ошибка в nc
?
Не могли бы вы предложить мне другой уровень косвенности?