Ai-design-components administering-linux
Manage Linux systems covering systemd services, process management, filesystems, networking, performance tuning, and troubleshooting. Use when deploying applications, optimizing server performance, diagnosing production issues, or managing users and security on Linux servers.
git clone https://github.com/ancoleman/ai-design-components
T=$(mktemp -d) && git clone --depth=1 https://github.com/ancoleman/ai-design-components "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/administering-linux" ~/.claude/skills/ancoleman-ai-design-components-administering-linux && rm -rf "$T"
skills/administering-linux/SKILL.mdLinux Administration
Comprehensive Linux system administration for managing servers, deploying applications, and troubleshooting production issues in modern cloud-native environments.
Purpose
This skill teaches fundamental and intermediate Linux administration for DevOps engineers, SREs, backend developers, and platform engineers. Focus on systemd-based distributions (Ubuntu, RHEL, Debian, Fedora) covering service management, process monitoring, filesystem operations, user administration, performance tuning, log analysis, and network configuration.
Modern infrastructure requires solid Linux fundamentals even with containerization. Container hosts run Linux, Kubernetes nodes need optimization, and troubleshooting production issues requires understanding systemd, processes, and logs.
Not Covered:
- Advanced networking (BGP, OSPF) - see
skillnetwork-architecture - Deep security hardening (compliance, pentesting) - see
skillsecurity-hardening - Configuration management at scale (Ansible, Puppet) - see
skillconfiguration-management - Container orchestration - see
skillkubernetes-operations
When to Use This Skill
Use when deploying custom applications, troubleshooting slow systems, investigating service failures, optimizing workloads, managing users, configuring SSH, monitoring disk space, scheduling tasks, diagnosing network issues, or applying performance tuning.
Quick Start
Essential Commands
Service Management:
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
Process Monitoring:
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)
Disk Usage:
df -h # Filesystem usage du -sh /path/to/dir # Directory size ncdu /path # Interactive disk analyzer
Log Analysis:
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
User Management:
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
Core Concepts
Systemd Architecture
Systemd is the standard init system and service manager. Systemd units define services, timers, targets, and other system resources.
Unit File Locations (priority order):
- Custom units (highest priority)/etc/systemd/system/
- Runtime units (transient)/run/systemd/system/
- System-provided units (don't modify)/lib/systemd/system/
Key Unit Types:
.service (services), .timer (scheduled tasks), .target (unit groups), .socket (socket-activated)
Essential systemctl Commands:
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
For detailed systemd reference, see
references/systemd-guide.md.
Process Management
Processes are running programs with unique PIDs. Understanding process states, signals, and resource usage is essential for troubleshooting.
Process States: R (running), S (sleeping), D (uninterruptible sleep/I/O), Z (zombie), T (stopped)
Common Signals: SIGTERM (15) graceful, SIGKILL (9) force, SIGHUP (1) reload config
Process Priority:
nice -n 10 command # Start with lower priority renice -n 5 -p PID # Change priority of running process
Filesystem Hierarchy
Essential directories:
/ (root), /etc/ (config), /var/ (variable data), /opt/ (optional software), /usr/ (user programs), /home/ (user directories), /tmp/ (temporary), /boot/ (boot loader)
Filesystem Types Quick Reference:
- ext4 - General purpose (default)
- XFS - Large files, databases (RHEL default)
- Btrfs - Snapshots, copy-on-write
- ZFS - Enterprise, data integrity, NAS
For filesystem management details including LVM and RAID, see
references/filesystem-management.md.
Package Management
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
Use native package managers for system services; snap/flatpak for desktop apps and cross-distro compatibility.
Decision Frameworks
Troubleshooting Performance Issues
Investigation Workflow:
-
Identify bottleneck:
top # Quick overview uptime # Load averages -
CPU Issues (usage >80%):
top # Press Shift+P to sort by CPU ps aux --sort=-%cpu | head -
Memory Issues (swap used):
free -h # Memory usage top # Press Shift+M to sort by memory -
Disk I/O Issues (high wa%):
iostat -x 1 # Disk statistics iotop # I/O by process -
Network Issues:
ss -tunap # Active connections iftop # Bandwidth monitor
For comprehensive troubleshooting, see
references/troubleshooting-guide.md.
Filesystem Selection
Quick Decision:
- Default/General → ext4
- Database servers → XFS
- Large file storage → XFS or ZFS
- NAS/File server → ZFS
- Need snapshots → Btrfs or ZFS
Common Workflows
Creating a Systemd Service
Step 1: Create unit file
sudo nano /etc/systemd/system/myapp.service
Step 2: Unit file content
[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
Step 3: Deploy and start
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
For complete examples, see
examples/systemd-units/.
Systemd Timer (Cron Replacement)
Create service and timer units for scheduled tasks. Timer unit specifies
OnCalendar= schedule and Persistent=true for missed jobs. Service unit has Type=oneshot. See examples/systemd-units/backup.timer and backup.service for complete examples.
SSH Hardening
Generate SSH key:
ssh-keygen -t ed25519 -C "admin@example.com" ssh-copy-id admin@server
Harden sshd_config:
sudo nano /etc/ssh/sshd_config
Key settings:
PermitRootLogin no PasswordAuthentication no PubkeyAuthentication yes MaxAuthTries 3 AllowUsers admin deploy X11Forwarding no Port 2222 # Optional
Apply changes:
sudo sshd -t # Test sudo systemctl restart sshd # Apply (keep backup session!)
For complete SSH configuration, see
examples/configs/sshd_config.hardened and references/security-hardening.md.
Performance Tuning
Configure sysctl parameters in
/etc/sysctl.d/99-custom.conf for network tuning (tcp buffers, BBR congestion control), memory management (swappiness, cache pressure), and file descriptors. Set ulimits in /etc/security/limits.conf for nofile and nproc. Configure I/O schedulers and CPU governors. For comprehensive tuning, see references/performance-tuning.md and examples/configs/ for templates.
Log Investigation
Use
systemctl status myapp and journalctl -u myapp to investigate issues. Filter logs by time --since, severity -p err, or search patterns with grep. Correlate with system metrics using top, df -h, free -h. Check for OOM kills with journalctl -k | grep -i oom. For detailed workflows, see references/troubleshooting-guide.md.
Essential Commands
Interface Management:
ip addr show # Show all interfaces ip link set eth0 up # Bring interface up ip addr add 192.168.1.100/24 dev eth0
Routing:
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
Socket Statistics:
ss -tunap # All TCP/UDP connections ss -tlnp # Listening TCP ports ss -ulnp # Listening UDP ports ss -tnp state established # Established connections
Firewall Configuration
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
For complete network configuration including netplan, NetworkManager, and DNS, see
references/network-configuration.md.
Scheduled Tasks
Cron Syntax
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 Timer Calendar Syntax
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
Essential Tools
Process Monitoring
,top
- Real-time process monitorhtop
- Report process statusps
- Find/kill by namepgrep/pkill
Log Analysis
- Query systemd journaljournalctl
- Search text patternsgrep
- Follow log filestail -f
Disk Management
- Disk space usagedf
- Directory space usagedu
- List block deviceslsblk
- Interactive disk analyzerncdu
Network Tools
- Network configurationip
- Socket statisticsss
- Test connectivityping
- DNS queriesdig/nslookup
- Packet capturetcpdump
System Monitoring
- Netdata - Real-time web dashboard
- Prometheus + Grafana - Metrics collection
- ELK Stack - Centralized logging
Integration with Other Skills
Kubernetes Operations
Linux administration is the foundation for Kubernetes node management. Node optimization (sysctl tuning), kubelet as systemd service, container logs via journald, cgroups for resource limits.
Example:
# /etc/sysctl.d/99-kubernetes.conf net.bridge.bridge-nf-call-iptables = 1 net.ipv4.ip_forward = 1
For Kubernetes-specific operations, see
kubernetes-operations skill.
Configuration Management
Linux administration provides knowledge; configuration management automates it. Ansible playbooks automate systemd service creation and system tuning.
For automation at scale, see
configuration-management skill.
Security Hardening
This skill covers SSH and firewall basics. For advanced security (MFA, certificates, CIS benchmarks, compliance), see
security-hardening skill.
CI/CD Pipelines
CI/CD pipelines deploy to Linux servers using these skills. Uses systemctl for deployment and journalctl for monitoring.
For deployment automation, see
building-ci-pipelines skill.
Reference Materials
Detailed Guides
- Comprehensive systemd reference (unit files, dependencies, targets)references/systemd-guide.md
- Complete sysctl, ulimits, cgroups, I/O scheduler guidereferences/performance-tuning.md
- LVM, RAID, filesystem types, permissionsreferences/filesystem-management.md
- ip/ss commands, netplan, NetworkManager, DNS, firewallreferences/network-configuration.md
- SSH hardening, firewall, SELinux/AppArmor basicsreferences/security-hardening.md
- Common issues, diagnostic workflows, solutionsreferences/troubleshooting-guide.md
Examples
- Service, timer, and target unit filesexamples/systemd-units/
- Backup, health check, and maintenance scriptsexamples/scripts/
- sshd_config, sysctl.conf, logrotate examplesexamples/configs/
Distribution-Specific Notes
Ubuntu/Debian
Package Manager:
apt, Network: netplan, Firewall: ufw, Repositories: /etc/apt/sources.list
RHEL/CentOS/Fedora
Package Manager:
dnf, Network: NetworkManager, Firewall: firewalld, Repositories: /etc/yum.repos.d/, SELinux enabled by default
Arch Linux
Package Manager:
pacman, Network: NetworkManager, Rolling release, AUR for community packages
Additional Resources
Official Documentation:
- systemd: https://systemd.io/
- Linux kernel: https://kernel.org/doc/
Related Skills:
- Container orchestration on Linuxkubernetes-operations
- Automate Linux admin at scaleconfiguration-management
- Advanced security and compliancesecurity-hardening
- Deploy via CI/CDbuilding-ci-pipelines
- Deep performance analysisperformance-engineering