Linux

Linuxで何かと環境調査で使うコマンドたち

一般ユーザの一覧

ユーザーID(UID)の範囲で絞り込みます。一般的なLinux(Ubuntu, RHELなど)では、一般ユーザーのUIDは 1000 以上(CentOS 6以前などは 500 以上)に設定されます。最後に column -t をパイプで繋いであげると、自動で幅を計算して完璧な表形式(整列されたカラム)にしてくれます。

awk -F: 'BEGIN {print "USER_NAME\tUID\tHOME_DIR\tSHELL"} $3 >= 1000 && $3 != 65534 {print $1 "\t" $3 "\t" $6 "\t" $7}' /etc/passwd | column -t -s $'\t'
OSのバージョンを調べる
cat /etc/os-release
grep -E '^(PRETTY_NAME|ID_LIKE)=' /etc/os-release
ハードウェアスペックを調べる
echo "--- Hardware Spec ---"
lscpu | grep 'Model name' | sed 's/Model name:\s*//'
lscpu | grep -E '^Core\(s\) per socket:|^Socket\(s\):' | awk -F: '{gsub(/^[ \t]+|[ \t]+$/, "", $2); if($1 ~ /Core\(s\) per socket/) c=$2; if($1 ~ /Socket\(s\)/) s=$2} END {print "Physical Cores: " c*s}'
lscpu | grep '^CPU(s):' | awk '{print "Threads: " $2}'
if command -v nvidia-smi &> /dev/null; then gpu_name=$(nvidia-smi --query-gpu=name --format=csv,noheader); vram_mib=$(nvidia-smi --query-gpu=memory.total --format=csv,noheader,nounits); echo "${gpu_name} ($((vram_mib / 1024)) GB)"; elif command -v rocm-smi &> /dev/null; then gpu_name=$(lscpu | grep 'Model name' | grep -o 'Radeon [A-Z0-9]*'); vram_gb=$(( $(rocm-smi --showmeminfo vram | grep 'VRAM Total' | head -n 1 | awk '{print $NF}') / 1024 / 1024 / 1024 )); echo "${gpu_name} (${vram_gb} GB)"; elif [ -f /proc/fb ]; then cat /proc/fb | awk '{print $2}'; else echo "No GPU detected"; fi
if [ -f /proc/meminfo ]; then echo "RAM: $(( $(grep 'MemTotal' /proc/meminfo | awk '{print $2}') / 1024 / 1024 )) GiB"; else echo "RAM: unknown"; fi
echo "---------------------"
ネットワークを調べる
echo "--- Network Configuration ---"
MAIN_IFACE=$(ip route get 1.1.1.1 2>/dev/null | awk '{print $5}' || ip route show | grep default | awk '{print $5}' | head -n 1)

if [ -n "$MAIN_IFACE" ]; then
    echo "Interface:   $MAIN_IFACE"
    echo "IP Address:  $(ip addr show $MAIN_IFACE | grep 'inet ' | awk '{print $2}' | head -n 1)"
    echo "MAC Address: $(ip link show $MAIN_IFACE | grep 'link/ether' | awk '{print $2}')"
    echo "Gateway:     $(ip route show | grep default | awk '{print $3}' | head -n 1)"
else
    echo "Interface:   Not Found"
fi
ストレージ(Disk)を調べる
echo "--- Disk Space ---"
df -h -t ext4 -t xfs -t btrfs -t vfat -t ntfs 2>/dev/null || df -h | grep -E '^/dev/'
まとめて出力
echo "=== Linux Server Information Report ==="
echo ""
echo "--- OS & Kernel ---"
if [ -f /etc/os-release ]; then
    echo "OS/Distro:   $(grep '^PRETTY_NAME=' /etc/os-release | cut -d= -f2 | tr -d '"')"
else
    echo "OS/Distro:   Unknown"
fi
echo "Kernel:      $(uname -r)"
echo "Arch:        $(uname -m)"
echo "Boot Mode:   $(uname -v | awk '{print $1, $2}')"

echo ""
echo "--- Hardware Spec ---"
lscpu | grep 'Model name' | sed 's/Model name:\s*//' | awk '{print "CPU:         " $0}'
lscpu | grep -E '^Core\(s\) per socket:|^Socket\(s\):' | awk -F: '{gsub(/^[ \t]+|[ \t]+$/, "", $2); if($1 ~ /Core\(s\) per socket/) c=$2; if($1 ~ /Socket\(s\)/) s=$2} END {print "Cores:       " c*s " Cores"}'
lscpu | grep '^CPU(s):' | awk '{print "Threads:     " $2 " Threads"}'

# GPU情報の詳細化(Driver/CUDAバージョンを追加)
if command -v nvidia-smi &> /dev/null; then 
    gpu_name=$(nvidia-smi --query-gpu=name --format=csv,noheader)
    vram_mib=$(nvidia-smi --query-gpu=memory.total --format=csv,noheader,nounits)
    nv_driver=$(nvidia-smi --query-gpu=driver_version --format=csv,noheader)
    cuda_ver=$(nvidia-smi | grep -o 'CUDA Version: [0-9.]*' | awk '{print $3}')
    echo "GPU:         ${gpu_name} ($((vram_mib / 1024)) GB)"
    echo "GPU Driver:  NVIDIA $nv_driver (CUDA $cuda_ver)"
elif command -v rocm-smi &> /dev/null; then 
    gpu_name=$(lscpu | grep 'Model name' | grep -o 'Radeon [A-Z0-9]*')
    vram_gb=$(( $(rocm-smi --showmeminfo vram | grep 'VRAM Total' | head -n 1 | awk '{print $NF}') / 1024 / 1024 / 1024 ))
    echo "GPU:         ${gpu_name} (${vram_gb} GB)"
    if command -v hipconfig &> /dev/null; then
        echo "ROCm/HIP:    $(hipconfig --version)"
    fi
elif [ -f /proc/fb ]; then 
    echo "GPU:         $(cat /proc/fb | awk '{print $2}')"
else 
    echo "GPU:         No GPU detected"
fi

if [ -f /proc/meminfo ]; then 
    echo "System RAM:  $(( $(grep 'MemTotal' /proc/meminfo | awk '{print $2}') / 1024 / 1024 )) GiB"
else 
    echo "System RAM:  Unknown"
fi

echo ""
echo "--- Network Configuration ---"
MAIN_IFACE=$(ip route get 1.1.1.1 2>/dev/null | awk '{print $5}' || ip route show | grep default | awk '{print $5}' | head -n 1)
if [ -n "$MAIN_IFACE" ]; then
    echo "Interface:   $MAIN_IFACE"
    echo "IP Address:  $(ip addr show $MAIN_IFACE | grep 'inet ' | awk '{print $2}' | head -n 1)"
    echo "MAC Address: $(ip link show $MAIN_IFACE | grep 'link/ether' | awk '{print $2}')"
    echo "Gateway:     $(ip route show | grep default | awk '{print $3}' | head -n 1)"
else
    echo "Interface:   Not Found"
fi

echo ""
echo "--- Disk Space ---"
df -h -t ext4 -t xfs -t btrfs -t vfat -t ntfs 2>/dev/null || df -h | grep -E '^/dev/|^Filesystem'
echo "======================================="
スポンサーリンク
タイトルとURLをコピーしました