Seu código é muito complexo para este trabalho básico ...
pgrep -u $USER "$tbnServlet" >/dev/null && echo "Started servlet: $tbnServlet" || echo "Failed to start servlet: $tbnServlet"
Estou escrevendo um script Bash que deve executar outros scripts Bash daemon, chamados servlets.
A função sobre a qual estou perguntando é getStatus
:
getStatus() {
servletToCheck="$@"
if [ "$(ps -aux | grep \"$(whoami)\" | grep \"${servletToCheck}\" | grep -v \"grep\" | wc -l)" -eq 0 ]; then
echo -n "Offline"
else
echo -n "Online"
fi
}
O que deve estar fazendo é verificar se os argumentos são um processo em execução de propriedade do usuário e a saída Online
se for, Offline
caso contrário.
Agora, esta função parece estar funcionando perfeitamente . O problema parece estar em como estou analisando :
if [ "$(getStatus ${tbnServlet})" == "Online" ]; then
outSuccess "Started servlet: ${tbnServlet}"
exit 0
else
outWarning "Failed to start servlet: ${tbnServlet}"
exit 3
fi
Estranhamente, mesmo quando o servlet está ativo e em execução, ele diz que Failed to start/stop servlet
e a execução de uma função que lista os servlets lista todos eles como off-line, mesmo quando não estão.
Qual é o problema e como posso corrigi-lo?
Tags bash io daemon shell-script