プライム・ストラテジー「KUSANAGI」開発チームの石川です。
KUSANAGI 9のkusanagiコマンドには様々な機能がありますが、実行した結果、正しく動作したのか、それともエラーになったのかを確認する方法を解説します。
kusanagiコマンドの実行が正常に終了したか、あるいは、エラーで終了したかどうかは、最後のメッセージとステータスコードから確認することができます。ステータスコードによる確認はkusanagiコマンドをシェルスクリプトに組み込む際に役立ちます。
正常終了の場合
kusanagiコマンドを実行して正常に終了した場合は、末尾に コマンド名 completed.
と緑文字で表示されます。また、ステータスコード 0 が返ります。
以下はkusanagi statusを実行した例です。
$ kusanagi status
(略)
status completed.
$ echo $?
0
末尾に status completed.
と表示され、正常に終了したのが分かります。
エラー終了の場合
オプションにエラーがある場合
kusanagiコマンドのオプションの指定に誤りがある場合は、kusanagiコマンドの使い方 (usage) と共に、コマンドで指定するオプションの一覧と、末尾に kusanagi コマンド名: error: オプション指定で問題があったもの
を黒文字(ダークモードでは白文字)で表示します。また、ステータスコード 2 が返ります。
以下はkusanagi provisionをオプション指定なしで実行した例です。
$ kusanagi provision
usage: kusanagi provision [-h] [--wp] [--wplang {en_US,ja}]
[--wpversion WPVERSION] [--drupal]
[--drupalversion DRUPALVERSION] [--lamp] [--fcgi]
[--mt] [--package PACKAGE] --fqdn FQDN
(--email EMAIL | --noemail) --dbname DBNAME --dbuser
DBUSER --dbpass DBPASS [--with-www]
profile
kusanagi provision: error: the following arguments are required: --fqdn, --dbname, --dbuser, --dbpass, profile
$ echo $?
2
kusanagi provisionの必須オプションである --fqdn
、 --dbname
、 --dbuser
、 --dbpass
、 profile
がいずれも指定されていないというメッセージが出力されています。
次に上記のオプションを全て指定してみます。
$ kusanagi provision --fqdn example.com --dbname example --dbuser example --dbpass examplepass example
usage: kusanagi provision [-h] [--wp] [--wplang {en_US,ja}]
[--wpversion WPVERSION] [--drupal]
[--drupalversion DRUPALVERSION] [--lamp] [--fcgi]
[--mt] [--package PACKAGE] --fqdn FQDN
(--email EMAIL | --noemail) --dbname DBNAME --dbuser
DBUSER --dbpass DBPASS [--with-www]
profile
kusanagi provision: error: one of the arguments --wp/--WordPress --drupal/--Drupal --lamp/--LAMP --fcgi/--FCGI --mt/--MT/--MovableType is required
$ echo $?
2
プロビジョンするCMSを指定するオプションの指定がないというメッセージが出力されました。
また、以下はkusanagi phpに存在しないPHPのバージョンを指定して実行した例です。
$ kusanagi php --use php99
usage: kusanagi php [-h] [--use {installed,php74,php80,php81,php82}]
kusanagi php: error: argument --use: invalid choice: 'php99' (choose from 'installed', 'php74', 'php80', 'php81', 'php82')
$ echo $?
2
kusanagi phpに php99
は指定できず、 installed
、 php74
、 php80
、 php81
、 php82
のいずれかを選ぶ必要あるというメッセージが出力されました。
このようにエラーメッセージを見ていくことで、何のオプションが足りないか、あるいは、誤っているかを知ることができます。
オプション以外にエラーがある場合
kusanagiコマンドのオプション以外に原因があってエラーとなった場合には、末尾に kusanagi コマンド名: error: コマンド名 failed
と黄文字で表示されます。その際にエラーの原因や内容がその前に赤文字で表示されます。また、ステータスコード 1 が返ります。
以下はkusanagi bcacheをWordPress以外のプロファイルに対して実行した例です。(※:kusanagi bcacheはWordPressのプロファイルのみで使用できるコマンドです)
$ kusanagi bcache status mt9
bcache is only supported for WordPress.
kusanagi bcache: error: command returned 1
kusanagi bcache: error: bcache failed
$ echo $?
1
bcacheはWordPressのみサポートしているという内容のエラーメッセージが出力されました。
また、以下はnginxの設定ファイルに誤りがある状態でkusanagi nginxを実行した例です。
$ kusanagi nginx
nginx: [emerg] unknown directive "alisten" in /etc/opt/kusanagi/nginx/conf.d/kusanagi9.conf:7
nginx: configuration file /etc/opt/kusanagi/nginx/nginx.conf test failed
nginx -t failed, change or restart to NGINX aborted.
kusanagi nginx: error: command returned 1
kusanagi nginx: error: nginx failed
$ echo $?
1
nginxの設定ファイルである /etc/opt/kusanagi/nginx/conf.d/kusanagi9.conf
に誤りがあるという、nginxのエラーメッセージが出力され、結果としてkusanagi nginxがエラー終了したのが分かります。
実行内容の出力
kusanagiコマンドが出力する内容は大きく2つに分けることができます。また、その内容によって色分けをしています。
- kusanagiコマンドそのものに関する出力:主にオプションのエラーなどコマンドのシンタックスに関連するもので、黒文字(ダークモードでは白文字)で出力されます。この出力がある場合は、基本的にオプションの誤りであることが多いです。
- kusanagiコマンドの実行内容に関する出力:正常な内容は緑文字、警告は黄文字、エラー(標準エラー出力を含む)は赤文字で出力されます。黄文字や赤文字が出力された場合は、注意して内容を見ましょう。
なお、kusanagiコマンドでは標準エラー出力も赤文字で出力されるため、赤文字があったからといって全てがエラー終了とは限りません。しかし、利用者に対して注意を促す内容であることは間違いないので、赤文字が出力された場合には、今一度内容をよく読んでみることをお勧めします。
kusanagiコマンドの詳細については ドキュメント を参照してください。