Linux系统管理Skill administering-linux

Linux系统管理技能专注于管理和维护Linux服务器,涵盖服务管理、进程监控、文件系统操作、网络配置、性能调优和故障排除。适用于DevOps工程师、SREs和平台工程师,在云原生环境中部署应用程序、优化系统性能和诊断生产问题。关键词:Linux管理、系统维护、故障排除、性能调优、DevOps、服务管理、网络配置。

DevOps 0 次安装 2 次浏览 更新于 3/23/2026

名称: linux系统管理 描述: 管理Linux系统,涵盖systemd服务、进程管理、文件系统、网络、性能调优和故障排除。在部署应用程序、优化服务器性能、诊断生产问题或管理Linux服务器上的用户和安全时使用。

Linux 系统管理

全面的Linux系统管理,用于管理服务器、部署应用程序和在现代云原生环境中排除生产问题。

目的

此技能教授DevOps工程师、SREs、后端开发者和平台工程师的基础和中级Linux管理。专注于基于systemd的发行版(Ubuntu、RHEL、Debian、Fedora),涵盖服务管理、进程监控、文件系统操作、用户管理、性能调优、日志分析和网络配置。

现代基础设施即使采用容器化也需要扎实的Linux基础。容器主机运行Linux,Kubernetes节点需要优化,排除生产问题需要理解systemd、进程和日志。

未涵盖内容:

  • 高级网络(BGP、OSPF)- 参见网络架构技能
  • 深度安全加固(合规、渗透测试)- 参见安全加固技能
  • 大规模配置管理(Ansible、Puppet)- 参见配置管理技能
  • 容器编排 - 参见Kubernetes操作技能

何时使用此技能

在部署自定义应用程序、排除缓慢系统、调查服务故障、优化工作负载、管理用户、配置SSH、监控磁盘空间、调度任务、诊断网络问题或应用性能调优时使用。

快速入门

基本命令

服务管理:

systemctl start nginx              # 启动服务
systemctl stop nginx               # 停止服务
systemctl restart nginx            # 重启服务
systemctl status nginx             # 检查状态
systemctl enable nginx             # 启用启动时启动
journalctl -u nginx -f             # 跟随服务日志

进程监控:

top                                # 交互式进程监控器
htop                               # 增强型进程监控器
ps aux | grep process_name         # 查找特定进程
kill -15 PID                       # 优雅关闭 (SIGTERM)
kill -9 PID                        # 强制杀死 (SIGKILL)

磁盘使用:

df -h                              # 文件系统使用情况
du -sh /path/to/dir                # 目录大小
ncdu /path                         # 交互式磁盘分析器

日志分析:

journalctl -f                      # 跟随所有日志
journalctl -u service -f           # 跟随服务日志
journalctl --since "1 hour ago"    # 按时间过滤
journalctl -p err                  # 仅显示错误

用户管理:

useradd -m -s /bin/bash username   # 创建用户并附带主目录
passwd username                    # 设置密码
usermod -aG sudo username          # 添加到sudo组
userdel -r username                # 删除用户和主目录

核心概念

Systemd 架构

Systemd是标准的初始化系统和服务管理器。Systemd单元定义服务、定时器、目标和其他系统资源。

单元文件位置(优先级顺序):

  • /etc/systemd/system/ - 自定义单元(最高优先级)
  • /run/systemd/system/ - 运行时单元(临时)
  • /lib/systemd/system/ - 系统提供的单元(请勿修改)

关键单元类型: .service (服务), .timer (定时任务), .target (单元组), .socket (套接字激活)

基本systemctl命令:

systemctl daemon-reload            # 更改后重新加载单元文件
systemctl list-units --type=service
systemctl list-timers              # 显示所有定时器
systemctl cat nginx.service        # 显示单元文件内容
systemctl edit nginx.service       # 创建覆盖文件

详细systemd参考,请参见references/systemd-guide.md

进程管理

进程是运行的程序,具有唯一的PID。理解进程状态、信号和资源使用对于故障排除至关重要。

进程状态: R (运行中), S (睡眠中), D (不可中断睡眠/I/O), Z (僵尸), T (停止)

常见信号: SIGTERM (15) 优雅关闭, SIGKILL (9) 强制杀死, SIGHUP (1) 重新加载配置

进程优先级:

nice -n 10 command                 # 以较低优先级启动
renice -n 5 -p PID                 # 更改运行中进程的优先级

文件系统层次结构

关键目录:/ (根目录), /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          # 更新系统
apt install package                # 安装包
apt remove package                 # 移除包
apt search keyword                 # 搜索包

RHEL/CentOS/Fedora (dnf):

dnf update                         # 更新所有包
dnf install package                # 安装包
dnf remove package                 # 移除包
dnf search keyword                 # 搜索包

对于系统服务使用原生包管理器;对于桌面应用和跨发行版兼容性使用snap/flatpak。

决策框架

故障排除性能问题

调查工作流:

  1. 识别瓶颈:

    top                             # 快速概览
    uptime                          # 负载平均值
    
  2. CPU问题(使用率>80%):

    top                             # 按Shift+P按CPU排序
    ps aux --sort=-%cpu | head
    
  3. 内存问题(交换空间使用):

    free -h                         # 内存使用情况
    top                             # 按Shift+M按内存排序
    
  4. 磁盘I/O问题(高wa%):

    iostat -x 1                     # 磁盘统计
    iotop                           # 按进程I/O
    
  5. 网络问题:

    ss -tunap                       # 活动连接
    iftop                           # 带宽监控器
    

全面故障排除,请参见references/troubleshooting-guide.md

文件系统选择

快速决策:

  • 默认/通用 → ext4
  • 数据库服务器 → XFS
  • 大文件存储 → XFS或ZFS
  • NAS/文件服务器 → ZFS
  • 需要快照 → Btrfs或ZFS

常见工作流

创建Systemd服务

步骤1:创建单元文件

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

步骤2:单元文件内容

[Unit]
Description=我的Web应用
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

# 安全加固
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.timerbackup.service

SSH加固

生成SSH密钥:

ssh-keygen -t ed25519 -C "admin@example.com"
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                          # 可选

应用更改:

sudo sshd -t                       # 测试
sudo systemctl restart sshd        # 应用(保留备份会话!)

完整SSH配置,请参见examples/configs/sshd_config.hardenedreferences/security-hardening.md

性能调优

/etc/sysctl.d/99-custom.conf中配置sysctl参数以进行网络调优(TCP缓冲区、BBR拥塞控制)、内存管理(交换性、缓存压力)和文件描述符。在/etc/security/limits.conf中设置ulimits以处理nofile和nproc。配置I/O调度器和CPU调控器。全面调优,请参见references/performance-tuning.mdexamples/configs/中的模板。

日志调查

使用systemctl status myappjournalctl -u myapp调查问题。通过时间--since、严重性-p err或使用grep搜索模式过滤日志。使用topdf -hfree -h关联系统指标。使用journalctl -k | grep -i oom检查OOM杀死。详细工作流,请参见references/troubleshooting-guide.md

基本命令

接口管理:

ip addr show                       # 显示所有接口
ip link set eth0 up                # 启动接口
ip addr add 192.168.1.100/24 dev eth0

路由:

ip route show                      # 显示路由表
ip route get 8.8.8.8               # 显示到IP的路由
ip route add 10.0.0.0/24 via 192.168.1.1

套接字统计:

ss -tunap                          # 所有TCP/UDP连接
ss -tlnp                           # 监听TCP端口
ss -ulnp                           # 监听UDP端口
ss -tnp state established          # 已建立连接

防火墙配置

Ubuntu (ufw):

sudo ufw status
sudo ufw enable
sudo ufw allow 22/tcp              # 允许SSH
sudo ufw allow 80/tcp              # 允许HTTP
sudo ufw allow from 192.168.1.0/24 # 允许来自子网
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                         # 编辑用户crontab

# 格式: 分钟 小时 日 月 周 命令
0 2 * * * /usr/local/bin/backup.sh              # 每天凌晨2点
*/5 * * * * /usr/local/bin/check-health.sh      # 每5分钟
0 3 * * 0 /usr/local/bin/weekly-cleanup.sh      # 每周日凌晨3点
@reboot /usr/local/bin/startup-script.sh        # 启动时运行

Systemd定时器日历语法

OnCalendar=daily                   # 每天午夜
OnCalendar=*-*-* 02:00:00          # 每天凌晨2点
OnCalendar=Mon *-*-* 09:00:00      # 每周一上午9点
OnCalendar=*-*-01 00:00:00         # 每月1日
OnBootSec=5min                     # 启动后5分钟

基本工具

进程监控

  • top, htop - 实时进程监控器
  • ps - 报告进程状态
  • pgrep/pkill - 按名称查找/杀死

日志分析

  • journalctl - 查询systemd日志
  • grep - 搜索文本模式
  • tail -f - 跟随日志文件

磁盘管理

  • df - 磁盘空间使用情况
  • du - 目录空间使用情况
  • lsblk - 列出块设备
  • ncdu - 交互式磁盘分析器

网络工具

  • ip - 网络配置
  • ss - 套接字统计
  • ping - 测试连接性
  • dig/nslookup - DNS查询
  • tcpdump - 数据包捕获

系统监控

  • Netdata - 实时Web仪表板
  • Prometheus + Grafana - 指标收集
  • ELK Stack - 集中式日志记录

与其他技能集成

Kubernetes操作

Linux管理是Kubernetes节点管理的基础。节点优化(sysctl调优)、kubelet作为systemd服务、通过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 playbook自动化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 - 深度性能分析