Ответ состоял в том, чтобы установить метод аутентификации для root следующим образом:
$ sudo mysql -u root
...
mysql> USE mysql
...
mysql> UPDATE user SET plugin='mysql_native_password' WHERE User='root';
Query OK, 1 row affected (0.01 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> FLUSH PRIVILEGES
mysql> exit
$ service mysql restart
$ mysql -u root
Welcome to the MySQL monitor. Commands end with ; or \g.
...
mysql>
Я беру нож в мрак, так как не совсем понимаю вопрос, но попробуй
(sleep 1; command || printf 'command failed with exit code %s.\n' "$?") &
if tail -f –n0 "out.log" | grep -q "demo1"
then
echo "Application started with success."
else
echo "Startup failed."
fi
tail -n0
выводит последние 0 (ноль )строк файла. Само по себе это довольно бесполезно. В сочетании с -f
он позволяет просматривать только дополнения к файлу а не любое из текущего содержания. Я не знаю времени / динамики command
и записи в файл журнала. Я предполагаю, что demo1
может быть записано в файл очень быстро; так быстро, что может быть уже там перед выполнением команды tail
в скрипте. Я предполагаю, что именно поэтому вы используете -n3
, так что вы можете посмотреть на строки, которые могли быть добавлены за последнюю микросекунду.
Задерживая выполнениеcommand
(с помощью sleep
), мы запускаем tail -f
до запуска command
, так что теперь мы должны записывать все, что записывается в файл .
Если ваша версия sleep
принимает не -целочисленные аргументы, вы, вероятно, можете спать менее одной секунды.
tail … | grep …
должен быть сделан пока обе grep
и tail
не погаснут. Этот кладж предварительно исправляет это :(sleep 1; command || printf 'command failed with exit code %s.\n' "$?") &
if grep -q "demo1" <(tail -f –n0 "out.log")
then
echo "Application started with success."
else
echo "Startup failed."
fi