mysqladminコマンドでMySQLデーモンの起動状態を確認

概要

Amazon RDSやGoogle CloudSQLでMySQLインスタンスの起動や停止の検証を行っている際に、
デーモンが稼働状態に遷移したか確認したいときになにかよい方法はないかなーと思っていました。
そこで調べていたところmysqladminコマンドのpingオプションというものがあり、
それを使うことで簡単に確認出来たのでそのメモです。

mysqladmin pingコマンド

MySQLデーモンが起動中の状態の場合
$ mysqladmin ping -h 127.0.0.1
mysqld is alive
$

mysqld is aliveというメッセージが返ってきます。

終了ステータスは0です。

MySQLデーモンが停止中の状態の場合
$ mysqladmin ping -h 127.0.0.1
mysqladmin: connect to server at '127.0.0.1' failed
error: 'Can't connect to MySQL server on '127.0.0.1' (61)'
Check that mysqld is running on 127.0.0.1 and that the port is 3306.
You can check this by doing 'telnet 127.0.0.1 3306'
$

デーモンが起動していない場合上記のようなメッセージになります。

終了ステータスは1です。

MySQLデーモンは起動しているがパスワード認証がかかっている場合
$ mysqladmin ping -h 127.0.0.1; echo $?
mysqladmin: [Warning] Using a password on the command line interface can be insecure.
mysqladmin: connect to server at '127.0.0.1' failed
error: 'Access denied for user 'root'@'172.17.0.1' (using password: YES)'
0
$

上記のように認証エラーになりますがデーモンは起動しているので終了ステータスは成功の0となるので注意が必要です。

lsb_releaseコマンド

概要

lsb_releaseというコマンドでOSのバージョンを確認することが出来ます。
オプションによって出力を限定することが出来、シェルスクリプトの判定等に使うことが出来ます。

使い方

lsb_release -aですべてを表示させることが出来ます。

表示例

$ lsb_release -a
No LSB modules are available.
Distributor ID:    Ubuntu
Description:    Ubuntu 16.04.4 LTS
Release:    16.04
Codename:    xenial
$
ディストリビューション名を表示
$ lsb_release -c
Codename:    xenial
$

-sオプションをつけることで値だけ返るようになります。

OS名を表示
$ lsb_release -is
Ubuntu
$


Descriptionを表示
$ lsb_release -ds
Ubuntu 16.04.4 LTS
$


リリースバージョン番号を表示
$ lsb_release -rs
16.04
$

CentOS7から/var/run以下のpidディレクトリがOS再起動の度に削除される

概要

FreeRadiusサーバーをCentOS7で稼働させていたとき、OS再起動のタイミングでradiusデーモンが起動しないことがありました。

FreeRadiusはpidファイルを/var/run/radiusd/tmpに作成するようになっていたのですが、
CentOS7から/var/run以下ディレクトリは再起動のたびに削除されるので/etc/tempfile.dの設定ファイルで自動作成させる必要がありました。

設定

/etc/tmpfiles.d/radiusd.confに下記設定を書いておくことでディレクトリが作成されるようになります。

D /var/run/radiusd/tmp 0710 radiusd radiusd -


radiusデーモンが起動しなかった際のログ

/var/log/radius/radius.log

Wed Aug  5 16:15:17 2015 : Error: Failed changing permissions on /var/run/radiusd/tmp: No such file or directory
Wed Aug  5 16:15:17 2015 : Error: rlm_eap_tls: Failed initializing SSL context
Wed Aug  5 16:15:17 2015 : Error: rlm_eap (EAP): Failed to initialise rlm_eap_tls
Wed Aug  5 16:15:17 2015 : Error: /etc/raddb/mods-enabled/eap[17]: Instantiation failed for module "eap"