У меня есть простой сценарий bash, который, как предполагается, должен контролировать, если mysql находится вверх или вниз. Если он не работает, я хочу также остановить запуск HAProxy. Ниже приведен мой простой сценарий bash:Linux bash script действующий weird
#!/bin/bash
nc -z 127.0.0.1 3306
rt_val=$?
msg=$(sudo service haproxy stop);
if [ $rt_val != 0 ]; then
eval $msg
exit 3
else
exit 0
fi
Работающая или не работающая часть MySQL работает нормально. Это прекрасная часть HAProxy, которая, похоже, имеет проблему. Случается, что HAProxy останавливается, когда mysql останавливается. Но когда я запускаю MySQL и HAProxy, похоже, что скрипт продолжает останавливать HAProxy, даже если MySQL запущен и работает.
Рекомендация по хранению команды в строке - не очень хорошая идея. Функция или массив ** намного лучше и надежнее. См. [Bash FAQ 050] (http://mywiki.wooledge.org/BashFAQ/050) для получения дополнительной информации об этой проблеме. (Он работает для этого простого случая, но не подходит для более сложных, поэтому лучше всего всегда избегать его.) –
@EtanReisner: Да, конечно. Я попытаюсь переделать. –
Спасибо, Майкл. Использование функции работает. Код второй части на самом деле этого не делает. –