CLIでマシン情報を取得する方法

![ダウンロード.jpg](https://qiita-image-store.s3.amazonaws.com/0/258841/e2e90a96-477f-b7f4-9add-cb8286594fff.jpeg)

CLIのみの環境でスペックを調べる方法です。
中古PCを買ったときや仕事で新しいマシンが来たときとかとりあえず打ってみるコマンドたち。
HWシリアル番号、BIOSのバージョン情報、搭載されているメモリモジュールのメモリサイズなど
見るだけで楽しい情報を取得していきます。
特に役立つ情報があるわけではないのでお暇な方どうぞ。

## 基本

``` bash
# カーネルバージョン
$ uname -r
# -m	CPUのタイプを表示する
# -n	PCのホスト名を表示する
# -r	カーネルのバージョンを表示する
# -s	OS名を表示する
# -v	OSのリリース日を表示する
# -a	すべての情報を表示する

# ディストリビューション
# Redhat/CentOS
$ cat /etc/redhat-release
$ cat /etc/issue
# Fedora Core
$ cat /etc/fedora-release
# Debian
$ cat /etc/debian_version
$ cat /etc/issue
# Turbolinux
$ cat /etc/turbolinux-release
# SuSE Linux
$ cat /etc/SuSE-release
# Mandriva Linux
$ cat /etc/mandriva-release
# Vine Linux
$ cat /etc/vine-release

# 自身のマシン名
$ hostname
# -d    DNSドメインの名前を表示
# -f    FQDN（Fully Qualified Domain Name）を表示

# BIOS確認
$ sudo dmidecode

# マザーボード
$ sudo dmidecode -t baseboard

# カーネルの出力したメッセージ確認
$ dmesg -l alert
# -x    表示レベル（level）と表示対象（facility）を表示
# -L    色付きで表示
```

## CPU

``` bash
# CPU情報
$ cat /proc/cpuinfo
$ lscpu

# プロセス毎のCPU使用率などをリアルタイムで(sarでも見たり)
$ top
# -d    更新の間隔を指定
# -n    表示回数を指定

# システムの負荷平均、稼働時間も見れる
$ w
$ uptime
# -s  起動した日時が表示される
# -p  表示フォーマットを変更する(個人的に好き)
```

## メモリ

``` bash
# メモリ情報
$ cat /proc/meminfo

# メモリの空き情報
$ free
# -b     バイト単位で表示
# -k     KB単位で表示
# -m     MB単位で表示
# -g     GB単位で表示
# --tera TB単位で表示

# 仮想メモリやディスクI/Oの統計情報
$ vmstat -s
```

vmstatコマンドはオプションが多数あります。下記をご参照ください
https://tech.nikkeibp.co.jp/it/article/COLUMN/20060228/230989/

## ディスク

``` bash
# 全ディスクの使用量と空き容量
$ df -hT

# 特定ディレクトリ配下の使用量
$ du -skh  | sort -nr

# ブロックデバイスのパーティション情報を表示
$ parted -l

# 接続されているHDDやUSBドライブを調べる
$ lsblk

# パーティションの情報確認
$ sudo fdisk -l /dev/sda

# 物理的な情報を詳しく(あまり使わない)
$ sudo hdparm -i /dev/sda

# マウントしてないデバイスの容量
$ sudo smartctl -a /dev/sda | grep “User Capacity”
```

## ネットワーク

``` bash
# ネットワークのデバイス情報
$ ip a sh dev ens27f0

# LISTENしているポート一覧
$ sudo ss -antul
```

## ビデオカード

``` bash
$ lspci | grep VGA
```

ここからは若干それますがよく使うコマンド

## カーネルパラメータ

カーネルパラメータは以下2つで設定を行う

①/etc/sysctl.conf
②/proc配下

①はシステム起動時に反映されるため、恒久的に適用したい場合にはこちらへ記載する
②は再起動すると設定が元に戻る。一時的に設定を弄りたい時用。

sysctlコマンドは、サーバー稼働中にカーネルパラメータを設定・変更するコマンド
```sysctl [オプション]```
のような書式で実行します。色々と資料を見ましたがusageが一番見やすかった。。。

``` bash
$ sysctl

Usage:
 sysctl [options] [variable[=value] ...]

Options:
  -a, --all            display all variables
  -A                   alias of -a
  -X                   alias of -a
      --deprecated     include deprecated parameters to listing
  -b, --binary         print value without new line
  -e, --ignore         ignore unknown variables errors
  -N, --names          print variable names without values
  -n, --values         print only values of a variables
  -p, --load[=<file>]  read values from file
  -f                   alias of -p
      --system         read values from all system directories
  -r, --pattern <expression>
                       select setting that match expression
  -q, --quiet          do not echo variable set
  -w, --write          enable writing a value to variable
  -o                   does nothing
  -x                   does nothing
  -d                   alias of -h

 -h, --help     display this help and exit
 -V, --version  output version information and exit

For more details see sysctl(8).
```

## システムモニタリング sarコマンド

sarとは、sysstatパッケージに含まれている、システムの統計情報を取得するコマンド

|オプション|確認項目|
----------|--------
|-u|CPU
|-u -P ALL|CPUを各コアごとに
|-q|ロードアベレージ
|-r|メモリ
|-W|スワップ
|-n DEV|ネットワーク
|-b|ディスクIO

簡単な使い方は下記

``` bash
# 日時を指定してメモリ状況を見る
$ sar -r -f /var/log/sa/sa02 -s 12:00:00 -e 13:00:00
# kbmemfree	メモリ空き容量(kb)
# kbmemused	メモリ使用量(kb)
# %memused	メモリ使用率
# kbswpfree	スワップ空き容量(kb)
# kbswpused	スワップ使用量(kb)
# %swpused	スワップ使用率

# ディスクI/O確認
$ sar -b -s 21:00:00
# tps	秒間I/Oリクエスト 数の合計
# rtps	秒間読み込みIOリクエスト数の合計
# wtps	秒間書き込みIOリクエスト数の合計
# bread/s	秒間読み込み（ブロック単位）IOリクエストのデータ量の合計
# bwrtn/s	秒間書き込み（ブロック単位）IOリクエストのデータ量の合計

# CPU使用率
$ sar -u -s 21:00:00
# %user	アプリケーション（ユーザプロセス）が使用している状態
# %system	カーネル（OSなど）が使用している状態
# %iowait	ディスクI/O待ち状態
# %idle	CPUが何の処理もしない待機状態（I/O待ちの時間は除く）
```

## その他

AWSインスタンスのスペック比較記事が面白かったのでご紹介

現行世代全18種類EC2インスタンスのHW情報をコマンドで比較してみた
https://dev.classmethod.jp/cloud/aws/ec2-instance-detail/

## 参考

Linuxでコマンドラインからマシンスペックを確認する方法
https://qiita.com/DaisukeMiyamoto/items/98ef077ddf44b5727c29

sar(sysstat)によるボトルネック特定
https://qiita.com/kidach1/items/07637a5baa0da7d52e6a