CentOS Stream基本コマンド一覧|目的別管理・運用ガイド

CentOS

CentOS Streamでサーバー管理をしていて、「あのコマンドなんだっけ?」と迷ったことはありませんか?

従来のCentOSから移行した方も、新たにLinuxサーバー管理を始める方も、日常的に使うコマンドをすぐに調べられるリファレンスがあると便利ですよね。

この記事では、CentOS Streamでよく使われる基本コマンドを目的別に整理し、実際の運用で役立つ情報とともに解説します。

スポンサーリンク

CentOS Streamとは?

従来のCentOSからの変化

CentOS Streamの位置づけ

  • Red Hat Enterprise Linux(RHEL)の上流版
  • 従来のCentOSよりもやや新しい技術を採用
  • ローリングリリース形式で継続的にアップデート

管理者が知っておくべき変更点

  • パッケージマネージャーが yum から dnf に移行(互換性は保持)
  • systemdによるサービス管理が標準
  • firewallによるファイアウォール管理

なぜコマンドを覚える必要があるの?

効率的な管理

  • GUI環境がない場合でも確実に操作可能
  • リモート接続時の基本操作
  • 自動化スクリプトの基礎知識

トラブル対応

  • システム障害時の緊急対応
  • ログ確認や状態診断
  • 問題の切り分けと解決

パッケージ管理(dnf / yum)

dnfとyumの関係

現在の状況 CentOS 8以降、yumコマンドはdnfへのシンボリックリンクになっています。

つまり、yumと入力しても実際にはdnfが実行されます。

なぜdnfに移行?

  • より高速な依存性解決
  • 改善されたメモリ管理
  • ロールバック機能などの高度な機能
  • より正確なエラーメッセージ

基本的なパッケージ操作

パッケージのインストール

# 基本形
sudo dnf install パッケージ名

# 複数パッケージを同時インストール
sudo dnf install vim wget curl

# 特定バージョンを指定
sudo dnf install httpd-2.4.53

# ローカルRPMファイルのインストール
sudo dnf install ./package.rpm

パッケージの削除

# 基本的な削除
sudo dnf remove パッケージ名

# 依存関係も含めて削除
sudo dnf autoremove パッケージ名

# 孤立したパッケージの自動削除
sudo dnf autoremove

パッケージの更新

# 全パッケージを最新に更新
sudo dnf update

# 特定パッケージのみ更新
sudo dnf update パッケージ名

# セキュリティアップデートのみ
sudo dnf upgrade --security

# アップデート可能なパッケージの確認
dnf check-update

パッケージ情報の確認

パッケージ検索

# パッケージ名で検索
dnf search キーワード

# インストール済みパッケージの確認
dnf list installed

# 利用可能なパッケージの確認
dnf list available

# パッケージの詳細情報
dnf info パッケージ名

依存関係の確認

# パッケージの依存関係を表示
dnf deplist パッケージ名

# どのパッケージが特定ファイルを提供するか
dnf provides /usr/bin/htop

# パッケージに含まれるファイル一覧
rpm -ql パッケージ名

リポジトリ管理

リポジトリの確認と操作

# 有効なリポジトリ一覧
dnf repolist

# すべてのリポジトリ(無効も含む)
dnf repolist all

# リポジトリの有効化
sudo dnf config-manager --enable リポジトリ名

# リポジトリの無効化
sudo dnf config-manager --disable リポジトリ名

EPELリポジトリの追加

# EPEL(Extra Packages for Enterprise Linux)の追加
sudo dnf install epel-release

# EPELからのパッケージインストール例
sudo dnf install htop

サービス管理(systemctl / systemd)

systemdの基本概念

systemdとは CentOS Streamでサービスやシステムプロセスを管理するためのinitシステムです。従来のSysV initに代わって標準となっています。

サービス(ユニット)の種類

  • .service: 一般的なデーモンサービス
  • .socket: ネットワークソケット
  • .timer: スケジュール実行
  • .mount: ファイルシステムマウント

基本的なサービス操作

サービスの起動・停止

# サービスの起動
sudo systemctl start サービス名

# サービスの停止
sudo systemctl stop サービス名

# サービスの再起動
sudo systemctl restart サービス名

# 設定ファイル再読み込み(再起動なし)
sudo systemctl reload サービス名

# 再読み込み可能なら再読み込み、そうでなければ再起動
sudo systemctl reload-or-restart サービス名

自動起動の設定

# 起動時の自動起動を有効化
sudo systemctl enable サービス名

# 自動起動を無効化
sudo systemctl disable サービス名

# 自動起動設定の確認
systemctl is-enabled サービス名

# 起動と同時に自動起動設定
sudo systemctl enable --now サービス名

サービス状態の確認

基本的な状態確認

# サービスの状態確認
systemctl status サービス名

# 簡潔な状態確認
systemctl is-active サービス名

# 失敗したサービスの確認
systemctl --failed

# すべてのサービス状態一覧
systemctl list-units --type=service

詳細なログ確認

# サービスのログ確認(journalctl)
sudo journalctl -u サービス名

# リアルタイムでログを監視
sudo journalctl -u サービス名 -f

# 最新100行のログ
sudo journalctl -u サービス名 -n 100

# 特定期間のログ
sudo journalctl -u サービス名 --since "2024-01-01" --until "2024-01-02"

実用的なサービス管理例

Webサーバー(Apache)の管理

# Apacheのインストールと起動
sudo dnf install httpd
sudo systemctl start httpd
sudo systemctl enable httpd

# 設定変更後の再読み込み
sudo systemctl reload httpd

# 状態確認
systemctl status httpd

データベース(MariaDB)の管理

# MariaDBのインストールと設定
sudo dnf install mariadb-server
sudo systemctl start mariadb
sudo systemctl enable mariadb

# 初期設定
sudo mysql_secure_installation

ファイアウォール管理(firewalld)

firewalldの基本概念

ゾーンベースの管理 firewalldは「ゾーン」という概念でネットワーク接続を管理します。

主要なゾーン

  • public: 公開ネットワーク(デフォルト)
  • internal: 内部ネットワーク
  • dmz: 非武装地帯
  • trusted: 完全に信頼できるネットワーク

基本的なファイアウォール操作

状態確認と基本操作

# firewalldの状態確認
sudo firewall-cmd --state

# 現在の設定確認
sudo firewall-cmd --list-all

# デフォルトゾーンの確認
sudo firewall-cmd --get-default-zone

# アクティブなゾーン一覧
sudo firewall-cmd --get-active-zones

ポートの開放・閉鎖

# ポートを一時的に開放
sudo firewall-cmd --add-port=80/tcp

# ポートを永続的に開放
sudo firewall-cmd --permanent --add-port=80/tcp

# 複数ポートの開放
sudo firewall-cmd --permanent --add-port=80/tcp --add-port=443/tcp

# ポートの閉鎖
sudo firewall-cmd --permanent --remove-port=80/tcp

# 設定の反映
sudo firewall-cmd --reload

サービスでの管理

# 利用可能なサービス一覧
sudo firewall-cmd --get-services

# サービスの許可
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https

# サービスの削除
sudo firewall-cmd --permanent --remove-service=http

# 現在許可されているサービス確認
sudo firewall-cmd --list-services

高度なファイアウォール設定

特定IPアドレスの制御

# 特定IPからのアクセスを許可
sudo firewall-cmd --permanent --add-source=192.168.1.100

# IPレンジでの許可
sudo firewall-cmd --permanent --add-source=192.168.1.0/24

# 特定IPのブロック
sudo firewall-cmd --permanent --add-rich-rule='rule source address="192.168.1.100" drop'

ポートフォワーディング

# ポートフォワーディング設定
sudo firewall-cmd --permanent --add-forward-port=port=8080:proto=tcp:toport=80

# 別ホストへのフォワーディング
sudo firewall-cmd --permanent --add-forward-port=port=8080:proto=tcp:toaddr=192.168.1.100:toport=80

システム監視・プロセス管理

プロセス監視の基本

リアルタイム監視

# 基本的なプロセス監視
top

# より高機能な監視(htopが必要)
htop

# CPUやメモリ使用率の詳細表示
sudo dnf install htop
htop

プロセス一覧の確認

# 全プロセス表示
ps aux

# 特定ユーザーのプロセス
ps -u ユーザー名

# プロセスツリー表示
ps auxf

# プロセス名で検索
ps aux | grep プロセス名

# メモリ使用量でソート
ps aux --sort=-%mem

# CPU使用量でソート
ps aux --sort=-%cpu

プロセス制御

プロセスの終了

# 通常の終了シグナル
kill PID

# 強制終了
kill -9 PID

# プロセス名で終了
killall プロセス名

# より柔軟なプロセス検索・終了
pkill -f "検索パターン"

プロセスの優先度制御

# プロセスの優先度を変更
renice -n 10 -p PID

# 新しいプロセスを特定の優先度で起動
nice -n 10 コマンド

システムリソース監視

メモリ使用量

# メモリ使用状況の確認
free -h

# より詳細なメモリ情報
cat /proc/meminfo

# メモリ使用量をリアルタイム監視
watch -n 1 free -h

ディスク使用量

# ディスク使用量の確認
df -h

# ディレクトリ別使用量
du -sh /*

# 特定ディレクトリの詳細
du -ah /var/log | sort -rh | head -20

# inode使用量の確認
df -i

ネットワーク状況

# ネットワーク接続状況
ss -tulpn

# 古い形式(netstat)
netstat -tulpn

# アクティブな接続のみ
ss -tu

# 特定ポートの確認
ss -tulpn | grep :80

ファイル・ディレクトリ操作

基本的なファイル操作

ナビゲーション

# 現在のディレクトリ確認
pwd

# ディレクトリの移動
cd /path/to/directory
cd ~        # ホームディレクトリ
cd -        # 前のディレクトリ
cd ..       # 親ディレクトリ

# ディレクトリ内容の確認
ls          # 基本表示
ls -la      # 詳細表示(隠しファイル含む)
ls -lh      # ファイルサイズを人間が読みやすく
ls -lt      # 更新日時でソート

ファイル・ディレクトリの作成・削除

# ディレクトリ作成
mkdir ディレクトリ名
mkdir -p path/to/deep/directory  # 親ディレクトリも同時作成

# ファイル作成
touch ファイル名

# ファイルコピー
cp ソース 宛先
cp -r ディレクトリ 宛先  # ディレクトリのコピー
cp -p ファイル 宛先      # タイムスタンプを保持

# ファイル移動・リネーム
mv ソース 宛先

# ファイル削除
rm ファイル名
rm -f ファイル名         # 強制削除
rm -r ディレクトリ名      # ディレクトリごと削除
rm -rf ディレクトリ名     # 強制的にディレクトリごと削除

ファイル内容の確認・編集

ファイル内容の表示

# ファイル全体を表示
cat ファイル名

# ページ単位で表示
less ファイル名
more ファイル名

# ファイルの先頭を表示
head ファイル名
head -n 20 ファイル名    # 先頭20行

# ファイルの末尾を表示
tail ファイル名
tail -n 20 ファイル名    # 末尾20行
tail -f ファイル名       # リアルタイム監視

ファイル検索

# ファイル名で検索
find /path -name "ファイル名"
find . -name "*.log"

# 内容で検索
grep "検索文字列" ファイル名
grep -r "検索文字列" ディレクトリ
grep -i "検索文字列" ファイル名  # 大文字小文字無視

# ファイルタイプで検索
find /path -type f -name "*.conf"  # ファイルのみ
find /path -type d -name "log*"    # ディレクトリのみ

権限・所有者管理

権限の確認・変更

# 権限の確認
ls -l ファイル名

# 権限の変更
chmod 644 ファイル名      # rw-r--r--
chmod 755 ファイル名      # rwxr-xr-x
chmod +x ファイル名       # 実行権限を付与
chmod -w ファイル名       # 書き込み権限を削除

# 再帰的な権限変更
chmod -R 755 ディレクトリ名

所有者・グループの変更

# 所有者の変更
sudo chown ユーザー名 ファイル名
sudo chown ユーザー名:グループ名 ファイル名

# 再帰的な所有者変更
sudo chown -R ユーザー名:グループ名 ディレクトリ名

# グループのみ変更
sudo chgrp グループ名 ファイル名

ネットワーク関連コマンド

ネットワーク状態の確認

基本的なネットワーク情報

# IPアドレスの確認
ip addr show
ip a                    # 短縮形

# ルーティングテーブル
ip route show
route -n                # 古い形式

# ネットワークインターフェース状態
ip link show

# DNS設定の確認
cat /etc/resolv.conf

接続テスト

# ping テスト
ping google.com
ping -c 4 8.8.8.8      # 4回だけ実行

# ポート接続テスト
telnet ホスト名 ポート番号
nc -zv ホスト名 ポート番号  # netcat使用

# traceroute
traceroute google.com
mtr google.com          # 継続的なtraceroute

ネットワーク監視・解析

ポートスキャン

# nmapのインストール
sudo dnf install nmap

# 基本的なポートスキャン
nmap localhost
nmap 192.168.1.1

# サービス検出
nmap -sV ホスト名

# OS検出
sudo nmap -O ホスト名

パケットキャプチャ

# tcpdumpのインストール
sudo dnf install tcpdump

# 基本的なキャプチャ
sudo tcpdump -i eth0

# 特定ポートのキャプチャ
sudo tcpdump -i eth0 port 80

# ファイルに保存
sudo tcpdump -i eth0 -w capture.pcap

# HTTP通信の詳細表示
sudo tcpdump -i eth0 -A port 80

ネットワーク統計

# インターフェース統計
cat /proc/net/dev

# ネットワーク統計の監視
sar -n DEV 1 10         # sar コマンド(sysstat パッケージ)

# リアルタイム帯域監視
sudo dnf install iftop
sudo iftop -i eth0

その他の便利なコマンド

システム情報の確認

基本的なシステム情報

# OS情報
cat /etc/os-release
hostnamectl

# カーネル情報
uname -a

# CPU情報
cat /proc/cpuinfo
lscpu

# メモリ情報
cat /proc/meminfo
free -h

# ディスク情報
lsblk
fdisk -l

ハードウェア情報

# PCIデバイス情報
lspci

# USBデバイス情報
lsusb

# 詳細なハードウェア情報
sudo dnf install dmidecode
sudo dmidecode

ログ管理・診断

ログの確認

# システムログ(journald)
sudo journalctl

# 最新のログ
sudo journalctl -n 50

# 特定サービスのログ
sudo journalctl -u httpd

# ログのリアルタイム監視
sudo journalctl -f

# 特定期間のログ
sudo journalctl --since "2024-01-01 00:00:00"

システム診断

# sosreportのインストールと実行
sudo dnf install sos
sudo sosreport

# システム負荷の確認
uptime
w

# I/O統計
iostat 1 10             # sysstat パッケージ

# システム全体の統計
sar -u 1 10             # CPU使用率
sar -r 1 10             # メモリ使用率

コマンドヘルプとマニュアル

コマンドの調べ方

# マニュアルページ
man コマンド名

# コマンドの場所
which コマンド名
whereis コマンド名

# コマンドの簡単な説明
whatis コマンド名

# 関連コマンド検索
apropos キーワード

# コマンドのヘルプ
コマンド名 --help

実用的な運用スクリプト例

システム状態確認スクリプト

#!/bin/bash
# system_check.sh - システム状態の確認

echo "=== システム情報 ==="
hostnamectl | grep "Operating System"
uptime

echo -e "\n=== ディスク使用量 ==="
df -h

echo -e "\n=== メモリ使用量 ==="
free -h

echo -e "\n=== 負荷の高いプロセス ==="
ps aux --sort=-%cpu | head -n 6

echo -e "\n=== ネットワーク接続 ==="
ss -tulpn | grep LISTEN | head -n 10

echo -e "\n=== 失敗したサービス ==="
systemctl --failed

ログ監視スクリプト

#!/bin/bash
# log_monitor.sh - 重要ログの監視

echo "=== エラーログチェック ==="
echo "直近のシステムエラー:"
sudo journalctl -p err --since "1 hour ago" --no-pager

echo -e "\n認証失敗ログ:"
sudo journalctl _SYSTEMD_UNIT=sshd.service --since "1 hour ago" --no-pager | grep -i "failed\|invalid"

echo -e "\nApacheエラーログ:"
sudo tail -n 20 /var/log/httpd/error_log 2>/dev/null || echo "Apache未起動または設定なし"

まとめ

CentOS Streamでの基本的なシステム管理コマンドを目的別に整理しました。

重要なポイント

パッケージ管理の変化

  • dnfが標準(yumは互換のため残存)
  • より高速で安全な依存性解決
  • ロールバック機能などの新機能

サービス管理の標準化

  • systemctlによるサービス制御
  • journalctlによる統合ログ管理
  • より詳細な状態監視

セキュリティの重視

  • firewalldによるゾーンベース管理
  • より細かな制御が可能
  • 動的な設定変更

効果的な学習方法

段階的な習得

  1. 基本操作: ファイル操作、ナビゲーション
  2. パッケージ管理: dnf による軟體管理
  3. サービス管理: systemctl による制御
  4. 監視・診断: ログ確認、状態監視

実践的なアプローチ

  • 実際のサーバーで練習
  • 小さなタスクから始める
  • 定期的な操作の自動化
  • エラー対応の経験蓄積

今日から使える運用のコツ

効率化のためのエイリアス設定

# ~/.bashrcに追加
alias ll='ls -la'
alias df='df -h'
alias free='free -h'
alias ..='cd ..'
alias logs='sudo journalctl -f'

コメント

タイトルとURLをコピーしました