이 스크립트가 있는데이 스크립트를 실행하기 위해 CRON 작업을 설정하는 데 사용하고 있으므로 MySQL 서비스가 실행 중인지 확인할 수 있습니다. 그렇지 않으면 MySQL 서비스를 다시 시작합니다.
#!/bin/bash
service mysql status| grep 'mysql start/running' > /dev/null 2>&1
if [ $? != 0 ]
then
sudo service mysql restart
fi
cron 작업을 설정했습니다.
sudo crontab -e
그런 다음 추가했습니다.
*/1 * * * * /home/ubuntu/mysql-check.sh
문제는 모든 cron 작업 실행마다 MySQL을 다시 시작한다는 것입니다. 서버가 실행 중이더라도 MySQL 서비스를 다시 시작하면 스크립트의 수정 내용이 수정됩니다.
왜 셰방 앞에`\`가 있습니까? 주석처럼 보이지 않게하려면 불필요합니다. Shebang 은 주석이 전혀 평가 되지 않은 코드라는 의미에서 주석이 아니기 때문에 탈출 할 필요가 없으므로 Bash와 같이 특별하게 취급 됩니다 .
—
Alexej Magura
또한, 사용하지 않는
—
Alexej Magura
[ ... ]
또는 test <TEST>
배쉬에서. 그들은있는 구문을 사용되지 . [[ ... ]]
대신 사용하십시오 . 만 사용 [ ... ]
및 / 또는 test <TEST>
때 [[ ... ]]
입니다 하지 가능합니다.
이것은 사용 가능한 스크립트를 사용하여 시도한 첫 번째 셸 스크립트입니다. 방금 수정했습니다. 구문에 대해 잘 모릅니다. 문제는 여전히 모든 CRON 작업 실행시 mysql이 다시 시작됩니다 @AlexejMagura
—
Straw Hat
다음과 같이 해보십시오 :
—
Alexej Magura
if ! (service mysql status | grep 'mysql start/running' &>/dev/null); then sudo service mysql restart; fi
서브 쉘을 시작하고, service mysql status | grep 'mysql start/running' &> /dev/null
실행되고, 해당 서브 쉘 의 리턴 (종료) 상태가 if 문으로 전달되어 0이 아닌지 확인합니다. 0 이 아닌 경우 then
블록을 실행합니다 .
mysql은 프로세스 pid를 pid 파일에 쓰지 않습니까? 그렇다면 mysql 상태를 확인하는 다른 방법으로 사용할 수 있습니다
—
Flint