2026, 새로운 도약을 시작합니다.

쉘 스크립트 고수분을 찾습니다 ㅠㅠ 채택완료

몇일 간격으로 이유를 알수 없이 DB 가 끊기는 현상이 발생합니다.

이유를 알아낼때까지는 DB가 끊겼을때 자동으로 재 시작하는 쉘 스크립트를 만들려고 했습니다.

#!/bin/bash

mysqlCheck=`pgrep mysql | wc -l`

if [[ $mysqlCheck == "0" ]]; then
        echo mysql is string
elif [[ $mysqlCheck -eq 0 ]]; then
        echo mysql is integer
else
        echo othertype
fi

문제는 if 문 걸리는 곳에서 /etc/init.d/mysqld start  만 넣어주면 끝이라 생각했는데,

mysqlCheck 변수를 찍어보면 2 가 나와서 othertype 이 찍힙니다. 

DB가 끊긴 상태라 0 이 나와야 하는데, 무조건 2가 나오네요...

제가 어떤 실수를 한걸까요? 많은 분들의 애정어린 답변 구합니다. ㅠㅠ 살려주세요

답변 3개

채택된 답변
+20 포인트

if [ "$mysqlCheck" -eq "0" ] ; then

    ....

fi

이렇게 한번 해 보세요. 

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

어찌 어찌 해결은 했습니다;;

if [[ $(pgrep mysql | wc -l) = 0 ]];
then
    /etc/init.d/mysqld restart
fi

다만, crontab 에서 스크립트 경로 앞에

/bin/bash 를 넣어야 되더군요.

* * * * * /bin/bash /path/is/script.sh

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

2가 나온다는 것은 데몬이 죽지 않고 살아 있는 것 아닐까요?

디비 연결만 안되는 것이고, mysql 서비스는 떠 있을 것으로 생각됩니다. 

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

콘솔에서 pgrep mysql | wc -l 를 찍어보면 0 이 나옵니다. ;;

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인
🐛 버그신고