Я ищу некоторый рабочий код оболочки для автоматического перезапуска mysql-серверов, если он не работает. вот некоторые коды, которые я разыгрываю в поиске Google, прослушивают порт 3306, если он не работает, перезапустите. если не удается перезапустить, перезагрузите сервер.Синтаксическая ошибка рядом с неожиданным токеном `done 'в коде bash
Может ли этот код работать? Если нет, то кто-нибудь может поделиться мне рабочим кодом? Если да, я встретил syntax error near unexpected token
done 'in bash code`, как его решить? Благодарю.
PORT=`netstat -na|grep "LISTEN"|grep "3306"|awk -F[:" "]+ '{print $5}'`
MYSQLIP=`ifconfig eth0|awk '/inet/{print $2}'|cut -c 6-`
while [ `whoami` == "root" ]
do
if [ "$PORT" == "3306" ];then
echo "mysql is running......"
else
service mysql restart
if [ "$PORT" == "3306" ];then
else
reboot
fi
fi
break
done
Изменить код:
PORT=`netstat -na|grep "LISTEN"|grep "3306"|awk -F[:" "]+ '{print $5}'`
MYSQLIP=`ifconfig eth0|awk '/inet/{print $2}'|cut -c 6-`
while [ `whoami` == "root" ]
do
if [ "$PORT" == "3306" ];then
echo "mysql is running......"
else
service mysql restart
if [ "$PORT" == "3306" ];then
:
else
reboot
fi
fi
break
done
Я думаю, что перезагрузка коробки, если mysql не запускается, - очень плохая идея. Например, если в my.cnf есть какая-либо опечатка, из-за которой mysql не запускается, у вас теперь есть перезагрузка в цикле. –
@Marc Alff, если конфигурация my.cnf хорошо, мой sys запускался несколько месяцев, но иногда mysql разбился, не может перезагружаться в ssh part, только перезагрузка может восстановить систему. так что это еще плохая идея? невозможно проверить мой сайт за 24 часа, спасибо за обсуждение. –
Просто указывая возможные риски. Вы также можете использовать mysqld_safe, см. Http://dev.mysql.com/doc/refman/5.5/en/mysqld-safe.html –