KUSANAGIコマンドの実行結果を確認する

KUSANAGIコマンドの実行結果を確認する

石川英典

プライム・ストラテジーの開発チームがKUSANAGI 9のkusanagiコマンドの使い方について解説。コマンドの実行結果が正常終了したのか、エラー終了したのかは、最後のメッセージとステータスコードから確認でき、これはシェルスクリプトに組み込む際にも役立つ。エラー終了のパターンや、出力内容の色分けについても詳しく説明。理解を深めるためには、公式ドキュメントも参照推奨。

プライム・ストラテジー「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--dbpassprofile がいずれも指定されていないというメッセージが出力されています。

次に上記のオプションを全て指定してみます。

$ 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 は指定できず、 installedphp74php80php81php82 のいずれかを選ぶ必要あるというメッセージが出力されました。

このようにエラーメッセージを見ていくことで、何のオプションが足りないか、あるいは、誤っているかを知ることができます。

オプション以外にエラーがある場合

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コマンドの詳細については ドキュメント を参照してください。

<< kusanagi ssl で簡単に SSL 設定を行うkusanagi nginx で HTTP/3 に対応する >>

関連記事

Webサイト運用の課題解決事例100選 プレゼント

Webサイト運用の課題を弊社プロダクトで解決したお客様にインタビュー取材を行い、100の事例を108ページに及ぶ事例集としてまとめました。

・100事例のWebサイト運用の課題と解決手法、解決後の直接、間接的効果がわかる

・情報通信、 IT、金融、メディア、官公庁、学校などの業種ごとに事例を確認できる

・特集では1社の事例を3ページに渡り背景からシステム構成まで詳解