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の表ヘッダーを作成しています。$( ... ):コマンド置換と呼ばれる仕組みです。カッコ内のコマンドを先に実行し、その結果を文字列の中に埋め込みます。
各項目の詳細解説
| 項目 | 実行している処理の内容 |
|---|---|
| OS | lsb_release -d でOSの説明行を取得し、cut -f2 でタブ以降のOS名(Ubuntu…など)だけを抜き出しています。 |
| Memory | free -h でメモリ情報を取得。awk を使って「全容量($2)」と「使用量($3)」を抽出して整形しています。 |
| Web Server | { apache2 -v || nginx -v } で両方を試し、見つかった方の1行目を表示。sed で行頭の余計な空白を消しています。 |
| PHP | php -v の1行目から、cut を使って「PHP 8.x」のような名称とバージョンのみを取得しています。 |
| PHP-FPM | systemctl で起動中のサービス一覧から php*-fpm に一致するものを探し、tr と xargs で横一列に並べています。 |
| DB | まず mysql -V を試し、バージョン番号を正規表現で抽出。それがなければ psql(PostgreSQL)を確認します。 |
| Node / Python | それぞれ -v または -V オプションでバージョンを確認。インストールされていなければ "Not Installed" を返します。 |
| Ruby | ruby -v の結果から、最初の2単語(例:ruby 3.x)だけを抜き出しています。 |
出力イメージ
実行すると、以下のような表がターミナル(またはMarkdown対応のエディタ)に表示されます。
| Item | Version / Status |
|---|---|
| OS | Ubuntu 24.04.4 LTS |
| Memory | 5.8Gi (Used: 3.8Gi) |
| Web Server | Server version: Apache/2.4.58 (Ubuntu) |
| PHP | PHP 8.3.30 |
| PHP-FPM | php8.3-fpm |
| DB | MySQL 8.0.45 |
| Node.js | v20.19.2 |
| Python | Python 3.12.3 |
| Ruby | ruby 3.2.3 |
サーバー構築直後の確認や、GitHubのIssueに環境情報を貼る際にとても重宝するものです。