나는 서블릿이라는 다른 데몬 Bash 스크립트를 실행하도록 되어 있는 Bash 스크립트를 작성 중입니다.
내가 쿼리하고 싶은 기능은 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
}
무엇~해야 한다이것이 하는 일은 인수가 사용자가 소유한 실행 중인 프로세스인지 확인하고, Online
그렇다면 출력하고, Offline
그렇지 않으면 출력하는 것입니다.
이제 이 기능이 작동하는 것 같습니다.완벽한. 문제는 내가 하는 방식에 있는 것 같습니다.분석하다그것:
if [ "$(getStatus ${tbnServlet})" == "Online" ]; then
outSuccess "Started servlet: ${tbnServlet}"
exit 0
else
outWarning "Failed to start servlet: ${tbnServlet}"
exit 3
fi
이상한 점은 서블릿이 실행 중인데도 이 메시지가 표시된다는 것입니다. Failed to start/stop servlet
서블릿을 나열하는 기능을 실행하면 오프라인이 아닌데도 모든 서블릿이 오프라인으로 나열됩니다.
문제는 무엇이며 어떻게 해결할 수 있습니까?
답변1
이 기본 작업에 코드가 너무 복잡합니다...
pgrep -u $USER "$tbnServlet" >/dev/null && echo "Started servlet: $tbnServlet" || echo "Failed to start servlet: $tbnServlet"