Há um problema em sua declaração if.
O !
no início do teste de condição significa que você está procurando se a expressão "$(/usr/sbin/service mysql status)"
é falsa, o que não é o que você deseja alcançar. Você deseja verificar se o resultado do comando de status do serviço não é uma cadeia que contém 'start / waiting'. !=
é a melhor maneira de dizer que não é igual a.
Além disso, o =~
está esperando uma expressão regular, em que você está apenas fornecendo uma parte da string que espera ver. Como a sintaxe de colchetes duplos de instruções if suporta shell globbing, você pode procurar por 'start / waiting' com *start/waiting*
.
Se você alterar a linha:
if [[ ! "$(/usr/sbin/service mysql status)" =~ "start/running" ]]
Para:
if [[ "$(/usr/sbin/service mysql status)" != *start/running* ]]
Seu script deve funcionar corretamente; caso contrário, acho que você está reiniciando o serviço e enviando e-mails toda vez que o script é executado.
EDITAR:
O seguinte não é uma solução ideal, estou apenas postando para tentar ajudar na situação atual que você está enfrentando.
Para tentar lidar com a saída de systemd-sysv-generator
, você pode tentar substituir a primeira linha da instrução if
por:
if [[ "$(/usr/sbin/service mysql status)" = *inactive* ]]