programing

bash 스크립트가 MariaDB 서비스 상태를 올바르게 제공하지 않음

randomtip 2022. 9. 6. 22:14
반응형

bash 스크립트가 MariaDB 서비스 상태를 올바르게 제공하지 않음

CentOS 7에서 MariaDB 서비스가 실행 중인지 여부를 확인해야 합니다.

이를 위해 .sh 파일을 생성하기만 하면 됩니다.이 파일의 내용은 다음과 같습니다.

#!/bin/bash
service=mariadb

if ( $(ps -ef | grep -v grep | grep $service | wc -l) > 0 )
then
  echo "$service is running!!!"
else
  echo "$service is not running!!!"
fi

다음 명령을 실행하면

ps -ef | grep -v grep | grep mariadb | wc -l

서비스가 실행 중인 경우 반환 1

서비스가 중지되면 0을 반환합니다.

위의 출력은 정확합니다.

근데 제가execute my .sh file잘못된 출력을 제공합니다.

서비스가 실행 중인 경우 반환(mariadb가 실행되지 않음!!!)

서비스가 stop return인 경우(mariadb는 실행되지 않습니다!!!)

(서브셸을 작성하기 위한 것으로, 여기서 원하는 것은 아닐지도 모릅니다.할 수 있다

if [ $(ps -ef | grep -v grep | grep "$service" | wc -l) -gt 0 ]; then

근데 이게 더 쉬울 것 같아요pgrep프로세스를 찾기 위해 직접 파이프라인을 구축하는 대신 말이죠.시험:

#!/bin/bash
service=mariadb

if pgrep -f "$service"
then
    printf '%s is running!!!' "$service"
else
    printf '%s is not running!!!' "$service"
fi

pgrep를 사용하여 종료합니다.0종료 상태일 때, 무언가를 발견했을 때, 또는 성공입니다.1일치하는 프로세스를 찾을 수 없는 경우.

또, 나는 로 바꿨다.printf대신echo이 예에서는 문제가 되지 않습니다만,echo 대부분의 경우 선호되는 방법이 아닙니다.

괄호 안의 시도에서, 당신은 다음을 사용하려고 합니다.>비교 대상이 됩니다만, 실제로는 리다이렉션 연산자로서 셸에 의해서 소비됩니다(이 파일에는0지금 그 디렉토리로 이동합니다).산수를 하려면 더블 패런이 필요해요.((...))또는 위에서처럼 대괄호를 사용하여 테스트할 수도 있습니다.단일 괄호는 포함된 명령을 하위 쉘에서 실행하는 것을 의미합니다.

언급URL : https://stackoverflow.com/questions/38813506/bash-script-not-giving-the-mariadb-service-status-correctly

반응형

'programing' 카테고리의 다른 글

대용량 파일을 한 줄씩 읽는 방법  (0) 2022.09.08
phpmyadmin 오류 해결 방법  (0) 2022.09.08
어레이를 청크로 분할하다  (0) 2022.09.06
Python non local 문  (0) 2022.09.06
GSON과의 JSON 해석 중 Enum 사용  (0) 2022.09.06