mcpField
A
administering-linux

administering-linux

github.com/ancolemanクラウド・DevOps525235 回インストール46 週間前に更新
リポジトリ

administering-linux について

systemd ベースのディストリビューションを扱う DevOps、SRE、バックエンド、プラットフォームエンジニア向けの Linux 管理スキルです。サービス管理、監視、ログ、ネットワーク、障害調査を扱います。

主な機能

  1. 01systemd サービスとタイマーの管理
  2. 02プロセスとシステムリソースの監視
  3. 03ディスク使用量の確認とログ分析
  4. 04ユーザー、SSH、ファイアウォールの設定
  5. 05ネットワークと性能の問題診断

活用シーン

  1. 01本番サービスの障害やシステム遅延の調査
  2. 02カスタムアプリケーションサービスの導入と管理
  3. 03ディスク容量とサービスログの確認
  4. 04SSH アクセスと定期タスクの設定

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/ancoleman/ai-design-components --skill administering-linux

インストール後、Claude Code で/administering-linuxを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

outputs.yaml
examples/configs/
sshd_config.hardened
examples/scripts/
backup.sh
examples/systemd-units/
backup.service
backup.timer
webapp.service
references/
filesystem-management.md
network-configuration.md
performance-tuning.md
security-hardening.md
systemd-guide.md
troubleshooting-guide.md

詳細

Linux のシステム管理

最新のクラウドネイティブ環境で、サーバーの管理、アプリケーションのデプロイ、本番環境の問題のトラブルシューティングを行うための、包括的な Linux システム管理です。

目的

このスキルでは、DevOps エンジニア、SRE、バックエンド開発者、プラットフォームエンジニアを対象に、Linux の基礎および中級レベルのシステム管理を解説します。systemd ベースのディストリビューション(Ubuntu、RHEL、Debian、Fedora)を対象に、サービス管理、プロセス監視、ファイルシステム操作、ユーザー管理、パフォーマンスチューニング、ログ分析、ネットワーク設定を扱います。

コンテナ化が進んだ現在でも、堅実な Linux の基礎知識はインフラストラクチャに欠かせません。コンテナホストは Linux 上で動作し、Kubernetes ノードには最適化が必要です。また、本番環境の問題をトラブルシューティングするには、systemd、プロセス、ログを理解する必要があります。

対象外:

  • 高度なネットワーク(BGP、OSPF)については、network-architecture スキルを参照してください
  • 詳細なセキュリティ強化(コンプライアンス、ペネトレーションテスト)については、security-hardening スキルを参照してください
  • 大規模な構成管理(Ansible、Puppet)については、configuration-management スキルを参照してください
  • コンテナオーケストレーションについては、kubernetes-operations スキルを参照してください

このスキルを使う場面

カスタムアプリケーションのデプロイ、遅いシステムのトラブルシューティング、サービス障害の調査、ワークロードの最適化、ユーザー管理、SSH の設定、ディスク容量の監視、タスクのスケジュール設定、ネットワーク問題の診断、パフォーマンスチューニングを行う際に使用します。

クイックスタート

必須コマンド

サービス管理:

systemctl start nginx              # Start service
systemctl stop nginx               # Stop service
systemctl restart nginx            # Restart service
systemctl status nginx             # Check status
systemctl enable nginx             # Enable at boot
journalctl -u nginx -f             # Follow service logs

プロセス監視:

top                                # Interactive process monitor
htop                               # Enhanced process monitor
ps aux | grep process_name         # Find specific process
kill -15 PID                       # Graceful shutdown (SIGTERM)
kill -9 PID                        # Force kill (SIGKILL)

ディスク使用量:

df -h                              # Filesystem usage
du -sh /path/to/dir                # Directory size
ncdu /path                         # Interactive disk analyzer

ログ分析:

journalctl -f                      # Follow all logs
journalctl -u service -f           # Follow service logs
journalctl --since "1 hour ago"    # Filter by time
journalctl -p err                  # Show errors only

ユーザー管理:

useradd -m -s /bin/bash username   # Create user with home dir
passwd username                    # Set password
usermod -aG sudo username          # Add to sudo group
userdel -r username                # Delete user and home dir

基本概念

Systemd アーキテクチャ

Systemd は標準の init システムおよびサービスマネージャーです。Systemd ユニットでは、サービス、タイマー、ターゲット、その他のシステムリソースを定義します。

ユニットファイルの配置場所(優先順位順):

  • /etc/systemd/system/ - カスタムユニット(最優先)
  • /run/systemd/system/ - 実行時ユニット(一時的)
  • /lib/systemd/system/ - システム提供のユニット(変更しないでください)

主なユニットの種類: .service(サービス)、.timer(スケジュールされたタスク)、.target(ユニットのグループ)、.socket(ソケットで起動されるユニット)

必須の systemctl コマンド:

systemctl daemon-reload            # Reload unit files after changes
systemctl list-units --type=service
systemctl list-timers              # Show all timers
systemctl cat nginx.service        # Show unit file content
systemctl edit nginx.service       # Create override file

systemd の詳細については、references/systemd-guide.md を参照してください。

プロセス管理

プロセスとは、固有の PID を持つ実行中のプログラムです。トラブルシューティングには、プロセスの状態、シグナル、リソース使用量を理解することが欠かせません。

プロセスの状態: R(実行中)、S(スリープ中)、D(割り込み不可のスリープ/I/O)、Z(ゾンビ)、T(停止中)

一般的なシグナル: SIGTERM(15)正常終了、SIGKILL(9)強制終了、SIGHUP(1)設定の再読み込み

プロセスの優先度:

nice -n 10 command                 # Start with lower priority
renice -n 5 -p PID                 # Change priority of running process
ファイルシステム階層

主なディレクトリ:/(ルート)、/etc/(設定)、/var/(可変データ)、/opt/(オプションのソフトウェア)、/usr/(ユーザープログラム)、/home/(ユーザーディレクトリ)、/tmp/(一時ファイル)、/boot/(ブートローダー)

ファイルシステムの種類:クイックリファレンス

  • ext4 - 汎用(デフォルト)
  • XFS - 大容量ファイル、データベース(RHEL のデフォルト)
  • Btrfs - スナップショット、コピーオンライト
  • ZFS - エンタープライズ、データ整合性、NAS

LVM や RAID を含むファイルシステム管理の詳細については、references/filesystem-management.md を参照してください。

パッケージ管理

Ubuntu/Debian(apt):

apt update && apt upgrade          # Update system
apt install package                # Install package
apt remove package                 # Remove package
apt search keyword                 # Search packages

RHEL/CentOS/Fedora(dnf):

dnf update                         # Update all packages
dnf install package                # Install package
dnf remove package                 # Remove package
dnf search keyword                 # Search packages

システムサービスには標準のパッケージマネージャーを使用し、デスクトップアプリやディストリビューション間の互換性には snap/flatpak を使用してください。

判断フレームワーク

パフォーマンス問題のトラブルシューティング

調査ワークフロー:

  1. ボトルネックを特定する:

    top                             # Quick overview
    uptime                          # Load averages
    
  2. CPU の問題(使用率 >80%):

    top                             # Press Shift+P to sort by CPU
    ps aux --sort=-%cpu | head
    
  3. メモリの問題(スワップ使用中):

    free -h                         # Memory usage
    top                             # Press Shift+M to sort by memory
    
  4. ディスク I/O の問題(wa% が高い):

    iostat -x 1                     # Disk statistics
    iotop                           # I/O by process
    
  5. ネットワークの問題:

    ss -tunap                       # Active connections
    iftop                           # Bandwidth monitor
    

包括的なトラブルシューティングについては、references/troubleshooting-guide.md を参照してください。

ファイルシステムの選択

簡易判断ガイド:

  • デフォルト/汎用 → ext4
  • データベースサーバー → XFS
  • 大容量ファイルのストレージ → XFS または ZFS
  • NAS/ファイルサーバー → ZFS
  • スナップショットが必要 → Btrfs または ZFS

一般的なワークフロー

Systemd サービスの作成

ステップ 1:ユニットファイルを作成

sudo nano /etc/systemd/system/myapp.service

ステップ 2:ユニットファイルの内容

[Unit]
Description=My Web Application
After=network.target postgresql.service
Requires=postgresql.service

[Service]
Type=simple
User=myapp
Group=myapp
WorkingDirectory=/opt/myapp
Environment="PORT=8080"
ExecStart=/opt/myapp/bin/server
ExecReload=/bin/kill -HUP $MAINPID
Restart=on-failure
RestartSec=5s
StandardOutput=journal

# Security hardening
PrivateTmp=true
NoNewPrivileges=true
ProtectSystem=strict
ReadWritePaths=/var/lib/myapp

[Install]
WantedBy=multi-user.target

ステップ 3:デプロイして起動

sudo useradd -r -s /bin/false myapp
sudo mkdir -p /var/lib/myapp
sudo chown myapp:myapp /var/lib/myapp
sudo systemctl daemon-reload
sudo systemctl enable myapp.service
sudo systemctl start myapp.service
sudo systemctl status myapp.service

完全な例については、examples/systemd-units/を参照してください。

Systemd タイマー(Cron の代替)

スケジュールされたタスク用にサービスユニットとタイマーユニットを作成します。タイマーユニットでは、OnCalendar=でスケジュールを指定し、実行されなかったジョブを実行するためにPersistent=trueを設定します。サービスユニットにはType=oneshotを指定します。完全な例については、examples/systemd-units/backup.timerとbackup.serviceを参照してください。

SSH の強化

SSH キーを生成:

ssh-keygen -t ed25519 -C "[email protected]"
ssh-copy-id admin@server

sshd_config を強化:

sudo nano /etc/ssh/sshd_config

主な設定:

PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
MaxAuthTries 3
AllowUsers admin deploy
X11Forwarding no
Port 2222                          # Optional

変更を適用:

sudo sshd -t                       # Test
sudo systemctl restart sshd        # Apply (keep backup session!)

SSH の完全な設定については、examples/configs/sshd_config.hardenedとreferences/security-hardening.mdを参照してください。

パフォーマンスのチューニング

ネットワークのチューニング(TCP バッファー、BBR 輻輳制御)、メモリー管理(スワップネス、キャッシュ圧力)、ファイルディスクリプターのために、/etc/sysctl.d/99-custom.confでsysctlパラメーターを設定します。/etc/security/limits.confでnofileとnprocのulimitを設定します。I/OスケジューラーとCPUガバナーを設定します。包括的なチューニングについては、references/performance-tuning.mdおよびテンプレートがあるexamples/configs/を参照してください。

ログの調査

systemctl status myappとjournalctl -u myappを使用して問題を調査します。--sinceで時刻を指定し、-p errで重大度を絞り込み、grepでパターンを検索してログをフィルタリングします。top、df -h、free -hを使ってシステムメトリクスと照合します。journalctl -k | grep -i oomでOOM キルを確認します。詳細なワークフローについては、references/troubleshooting-guide.mdを参照してください。

基本的なコマンド

インターフェース管理:

ip addr show                       # Show all interfaces
ip link set eth0 up                # Bring interface up
ip addr add 192.168.1.100/24 dev eth0

ルーティング:

ip route show                      # Show routing table
ip route get 8.8.8.8               # Show route to IP
ip route add 10.0.0.0/24 via 192.168.1.1

ソケット統計:

ss -tunap                          # All TCP/UDP connections
ss -tlnp                           # Listening TCP ports
ss -ulnp                           # Listening UDP ports
ss -tnp state established          # Established connections
ファイアウォールの設定

Ubuntu(ufw):

sudo ufw status
sudo ufw enable
sudo ufw allow 22/tcp              # Allow SSH
sudo ufw allow 80/tcp              # Allow HTTP
sudo ufw allow from 192.168.1.0/24 # Allow from subnet
sudo ufw default deny incoming

RHEL/CentOS(firewalld):

firewall-cmd --state
firewall-cmd --list-all
firewall-cmd --add-service=http --permanent
firewall-cmd --add-port=8080/tcp --permanent
firewall-cmd --reload

netplan、NetworkManager、DNSを含むネットワーク設定の完全な内容については、references/network-configuration.mdを参照してください。

スケジュールされたタスク

Cron の構文
crontab -e                         # Edit user crontab

# Format: minute hour day month weekday command
0 2 * * * /usr/local/bin/backup.sh              # Daily at 2:00 AM
*/5 * * * * /usr/local/bin/check-health.sh      # Every 5 minutes
0 3 * * 0 /usr/local/bin/weekly-cleanup.sh      # Weekly Sunday 3 AM
@reboot /usr/local/bin/startup-script.sh        # Run at boot
Systemd タイマーのカレンダー構文
OnCalendar=daily                   # Every day at midnight
OnCalendar=*-*-* 02:00:00          # Daily at 2:00 AM
OnCalendar=Mon *-*-* 09:00:00      # Every Monday at 9 AM
OnCalendar=*-*-01 00:00:00         # 1st of every month
OnBootSec=5min                     # 5 minutes after boot

基本的なツール

プロセスの監視
  • top、htop - プロセスをリアルタイムで監視
  • ps - プロセスの状態を表示
  • pgrep/pkill - 名前で検索/終了
ログ分析
  • journalctl - systemd ジャーナルを照会
  • grep - テキストパターンを検索
  • tail -f - ログファイルを追跡
ディスク管理
  • df - ディスク使用量
  • du - ディレクトリの使用量
  • lsblk - ブロックデバイスを一覧表示
  • ncdu - 対話型のディスク分析ツール
ネットワークツール
  • ip - ネットワーク設定
  • ss - ソケット統計
  • ping - 接続をテスト
  • dig/nslookup - DNS クエリ
  • tcpdump - パケットキャプチャ
システム監視
  • Netdata - リアルタイムのウェブダッシュボード
  • Prometheus + Grafana - メトリクスの収集
  • ELK Stack - ログの一元管理

他のスキルとの連携

Kubernetes の運用

Linux 管理は、Kubernetes ノード管理の基盤です。ノードの最適化(sysctl のチューニング)、systemd サービスとしてのkubelet、journald を介したコンテナログ、リソース制限のためのcgroupsを扱います。

例:

# /etc/sysctl.d/99-kubernetes.conf
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1

Kubernetes 固有の運用については、kubernetes-operationsスキルを参照してください。

構成管理

Linux 管理では知識を提供し、構成管理ではそれを自動化します。Ansible プレイブックを使って、systemd サービスの作成とシステムのチューニングを自動化できます。

大規模な自動化については、configuration-managementスキルを参照してください。

セキュリティ強化

このスキルでは、SSH とファイアウォールの基本を扱います。高度なセキュリティ(MFA、証明書、CIS ベンチマーク、コンプライアンス)については、security-hardeningスキルを参照してください。

CI/CD パイプライン

CI/CD パイプラインでは、これらのスキルを使ってLinux サーバーにデプロイします。デプロイにはsystemctlを、監視にはjournalctlを使用します。

デプロイの自動化については、building-ci-pipelinesスキルを参照してください。

参考資料

詳細ガイド
  • references/systemd-guide.md - systemd の包括的なリファレンス(ユニットファイル、依存関係、ターゲット)
  • references/performance-tuning.md - sysctl、ulimits、cgroups、I/O スケジューラーの完全ガイド
  • references/filesystem-management.md - LVM、RAID、ファイルシステムの種類、権限
  • references/network-configuration.md - ip/ss コマンド、netplan、NetworkManager、DNS、ファイアウォール
  • references/security-hardening.md - SSH の強化、ファイアウォール、SELinux/AppArmor の基本
  • references/troubleshooting-guide.md - よくある問題、診断ワークフロー、解決策
例
  • examples/systemd-units/ - サービス、タイマー、ターゲットのユニットファイル
  • examples/scripts/ - バックアップ、ヘルスチェック、メンテナンスのスクリプト
  • examples/configs/ - sshd_config、sysctl.conf、logrotate の例

ディストリビューション固有の注意点

Ubuntu/Debian

パッケージマネージャー:apt、ネットワーク:netplan、ファイアウォール:ufw、リポジトリ:/etc/apt/sources.list

RHEL/CentOS/Fedora

パッケージマネージャー:dnf、ネットワーク:NetworkManager、ファイアウォール:firewalld、リポジトリ:/etc/yum.repos.d/、SELinux はデフォルトで有効です

Arch Linux

パッケージマネージャー:pacman、ネットワーク:NetworkManager、ローリングリリース、コミュニティパッケージには AUR を使用

追加リソース

公式ドキュメント:

関連スキル:

  • kubernetes-operations - Linux 上のコンテナオーケストレーション
  • configuration-management - Linux の大規模な管理を自動化
  • security-hardening - 高度なセキュリティとコンプライアンス
  • building-ci-pipelines - CI/CD 経由でデプロイ
  • performance-engineering - 詳細なパフォーマンス分析

コメント