このスクリプトがあります。このスクリプトを使用して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サービスで再起動します。
シバンの前に「\」があるのはなぜですか?コメントのように見えないようにするために必要な場合は、不要です。 シバンは、コメントはまったく評価されないコードの一部であるという意味でコメントではないため、エスケープする必要がないため、Bashのように特別に扱われます。
—
アレクセイマグラ14
また、
—
アレクセイマグラ14
[ ... ]
またはtest <TEST>
Bashでの使用は避けてください。これらは非推奨の構文です。[[ ... ]]
代わりに使用してください。のみ使用[ ... ]
および/またはtest <TEST>
とき[[ ... ]]
でない利用できます。
これは、使用可能ないくつかのスクリプトを使用して試した最初のシェルスクリプトで、変更しただけです。構文についてあまり知りません。問題はまだありますmysqlはすべてのCRONジョブ実行で再起動します@AlexejMagura
—
Straw Hat
このようなことを試してください:
—
アレクセイマグラ14
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ステートメントに渡され、それがゼロでないかどうかを確認しますそして、それがゼロでない場合、then
ブロックを実行します。
mysqlはプロセスpidをpidファイルに書き込みませんか?もしそうなら、mysqlステータスをチェックする別の方法としてそれを使用することができます
—
フリント14