administering-linux について
systemd ベースのディストリビューションを扱う DevOps、SRE、バックエンド、プラットフォームエンジニア向けの Linux 管理スキルです。サービス管理、監視、ログ、ネットワーク、障害調査を扱います。
主な機能
- 01systemd サービスとタイマーの管理
- 02プロセスとシステムリソースの監視
- 03ディスク使用量の確認とログ分析
- 04ユーザー、SSH、ファイアウォールの設定
- 05ネットワークと性能の問題診断
活用シーン
- 01本番サービスの障害やシステム遅延の調査
- 02カスタムアプリケーションサービスの導入と管理
- 03ディスク容量とサービスログの確認
- 04SSH アクセスと定期タスクの設定
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ ancoleman/ ai-design-components --skill administering-linuxインストール後、Claude Code で/administering-linuxを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
outputs.yamlexamples/configs/sshd_config.hardenedexamples/scripts/backup.shexamples/systemd-units/backup.servicebackup.timerwebapp.servicereferences/filesystem-management.mdnetwork-configuration.mdperformance-tuning.mdsecurity-hardening.mdsystemd-guide.mdtroubleshooting-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 を使用してください。
判断フレームワーク
パフォーマンス問題のトラブルシューティング
調査ワークフロー:
-
ボトルネックを特定する:
top # Quick overview uptime # Load averages -
CPU の問題(使用率 >80%):
top # Press Shift+P to sort by CPU ps aux --sort=-%cpu | head -
メモリの問題(スワップ使用中):
free -h # Memory usage top # Press Shift+M to sort by memory -
ディスク I/O の問題(wa% が高い):
iostat -x 1 # Disk statistics iotop # I/O by process -
ネットワークの問題:
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 を使用
追加リソース
公式ドキュメント:
- systemd:https://systemd.io/
- Linux カーネル:https://kernel.org/doc/
関連スキル:
kubernetes-operations- Linux 上のコンテナオーケストレーションconfiguration-management- Linux の大規模な管理を自動化security-hardening- 高度なセキュリティとコンプライアンスbuilding-ci-pipelines- CI/CD 経由でデプロイperformance-engineering- 詳細なパフォーマンス分析