UbuntuのLAMPサーバの環境確認に使える一式のワンライナーの紹介です。

 echo -e "| Item | Version / Status |\n|:---|:---|\n| **OS** | $(lsb_release -d | cut -f2) |\n| **Memory** | $(free -h | awk '/^Mem:/ {print $2" (Used: "$3")"}') |\n| **Web Server** | $({ apache2 -v 2>/dev/null || nginx -v 2>&1; } | head -n 1 | sed 's/^[ \t]*//') |\n| **PHP** | $(php -v 2>/dev/null | head -n 1 | cut -d' ' -f1,2 || echo "Not Installed") |\n| **PHP-FPM** | $(systemctl list-units --type=service | grep -o 'php[0-9.]*-fpm' | tr '\n' ' ' | xargs || echo "Not Running") |\n| **DB** | $(mysql -V 2>/dev/null | grep -oE '[0-9]+\.[0-9]+\.[0-9]+' | head -n1 | sed 's/^/MySQL /' || psql --version 2>/dev/null || echo "Not Installed") |\n| **Node.js** | $(node -v 2>/dev/null || echo "Not Installed") |\n| **Python** | $(python3 -V 2>/dev/null || echo "Not Installed") |\n| **Ruby** | $(ruby -v 2>/dev/null | cut -d' ' -f1,2 || echo "Not Installed") |"

全体の構造

このコマンドは echo -e を使用して、1つの大きな文字列を出力しています。

  • | Item | ... |:Markdownの表ヘッダーを作成しています。
  • $( ... )コマンド置換と呼ばれる仕組みです。カッコ内のコマンドを先に実行し、その結果を文字列の中に埋め込みます。

各項目の詳細解説

項目実行している処理の内容
OSlsb_release -d でOSの説明行を取得し、cut -f2 でタブ以降のOS名(Ubuntu…など)だけを抜き出しています。
Memoryfree -h でメモリ情報を取得。awk を使って「全容量($2)」と「使用量($3)」を抽出して整形しています。
Web Server{ apache2 -v || nginx -v } で両方を試し、見つかった方の1行目を表示。sed で行頭の余計な空白を消しています。
PHPphp -v の1行目から、cut を使って「PHP 8.x」のような名称とバージョンのみを取得しています。
PHP-FPMsystemctl で起動中のサービス一覧から php*-fpm に一致するものを探し、trxargs で横一列に並べています。
DBまず mysql -V を試し、バージョン番号を正規表現で抽出。それがなければ psql(PostgreSQL)を確認します。
Node / Pythonそれぞれ -v または -V オプションでバージョンを確認。インストールされていなければ "Not Installed" を返します。
Rubyruby -v の結果から、最初の2単語(例:ruby 3.x)だけを抜き出しています。

出力イメージ

実行すると、以下のような表がターミナル(またはMarkdown対応のエディタ)に表示されます。

ItemVersion / Status
OSUbuntu 24.04.4 LTS
Memory5.8Gi (Used: 3.8Gi)
Web ServerServer version: Apache/2.4.58 (Ubuntu)
PHPPHP 8.3.30
PHP-FPMphp8.3-fpm
DBMySQL 8.0.45
Node.jsv20.19.2
PythonPython 3.12.3
Rubyruby 3.2.3

サーバー構築直後の確認や、GitHubのIssueに環境情報を貼る際にとても重宝するものです。