ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

Linux命令行入门:从基础到进阶的实用指南

Linux命令行入门:从基础到进阶的实用指南

1. Linux命令基础认知与学习路径

作为一名从Windows转向Linux的老用户,我清楚地记得第一次面对黑底白字的终端窗口时的手足无措。与图形界面操作完全不同,Linux命令行的操作方式需要全新的思维方式。但掌握后你会发现,命令行才是Linux系统的灵魂所在,它能让你以最高效的方式控制系统。

Linux命令本质上是在Shell环境下运行的可执行程序,它们通常存放在/bin、/sbin、/usr/bin等目录中。每个命令都遵循"命令 [选项] [参数]"的基本结构,例如ls -l /home这个简单命令中,ls是命令本身,-l是选项(也叫标志或开关),/home则是参数。

对于初学者,我建议按照以下路径逐步掌握Linux命令:

  1. 文件系统操作:cd、ls、pwd、mkdir、touch等
  2. 文件内容查看与编辑:cat、more、less、vim、nano
  3. 文件操作:cp、mv、rm、find、grep
  4. 权限管理:chmod、chown、sudo
  5. 系统信息:top、ps、free、df、uname
  6. 网络相关:ping、ifconfig、netstat、ssh
  7. 软件管理:apt、yum、dpkg、rpm
  8. 进程管理:kill、jobs、bg、fg

提示:不要试图一次性记住所有命令的每个选项,这是不现实的。我建议先掌握每个命令最常用的2-3个选项,随着使用频率增加自然就会记住更多。

2. 文件与目录操作命令详解

2.1 基础导航与查看

pwd(Print Working Directory)可能是你最先需要掌握的命令,它能告诉你当前所在的目录位置。我刚学习时经常在目录结构中迷失,这个简单的命令帮我解决了大问题。

ls命令是使用频率最高的命令之一,它的几个常用选项值得牢记:

  • -l:以长格式显示,包含权限、所有者、大小等信息
  • -a:显示所有文件,包括隐藏文件(以点开头的文件)
  • -h:以人类可读的格式显示文件大小(如KB、MB)
  • -t:按修改时间排序
  • -r:反向排序

组合使用效果更佳,例如ls -lath会按修改时间倒序列出所有文件(包括隐藏文件),并以易读的格式显示大小。

2.2 文件操作核心命令

cp(copy)和mv(move)命令的结构相似:

cp [选项] 源文件 目标文件 mv [选项] 源文件 目标文件

但它们的-i(interactive)选项特别有用,能在覆盖文件前提示确认,避免误操作。我强烈建议新手在.bashrc中为这些命令设置别名:

alias cp='cp -i' alias mv='mv -i' alias rm='rm -i'

rm命令的-r(recursive)和-f(force)选项要格外小心,rm -rf /这样的命令可能造成灾难性后果。有一次我在半睡半醒的状态下差点执行了这个命令,幸好当时没有root权限。

2.3 查找与定位命令

find命令功能强大但语法复杂,我常用的几种形式:

find /path -name "*.txt" # 按名称查找 find . -type f -size +1M # 查找大于1MB的文件 find /var/log -mtime -7 # 查找7天内修改过的文件

grep是文本搜索的利器,我几乎每天都会用到:

grep "error" /var/log/syslog # 在文件中搜索error grep -r "function" /project # 递归搜索目录 grep -i "warning" file.log # 忽略大小写 ps aux | grep nginx # 结合管道使用

3. 系统管理与监控命令

3.1 进程管理

top命令是实时监控系统状态的瑞士军刀。运行后,几个有用的快捷键:

  • M:按内存使用排序
  • P:按CPU使用排序
  • 1:显示所有CPU核心的详情
  • q:退出

对于更简洁的进程查看,ps命令更合适:

ps aux | less # 查看所有运行中的进程 ps -ef | grep nginx # 查找特定进程

当需要结束进程时,先用kill -l查看所有信号类型。最常用的是:

kill -9 PID # 强制终止进程(SIGKILL) kill -15 PID # 优雅终止进程(SIGTERM)

3.2 硬件与资源监控

df -h能快速查看磁盘空间使用情况,而du -sh *可以查看当前目录下各文件/目录的大小。我曾经用这个命令发现了一个日志文件占用了50GB空间。

free -h显示内存使用情况,-h选项同样使其以易读格式显示。uptime命令则能快速了解系统运行时间和负载情况。

3.3 网络相关命令

ifconfig(或现代系统中的ip addr)查看网络接口信息。netstat虽然逐渐被ss取代,但仍然有用:

netstat -tulnp # 查看监听中的端口及对应程序 ss -tulnp # 更现代的替代方案

ping和traceroute(或tracepath)是网络诊断的基础工具。curl和wget则用于网络数据传输,我常用:

curl -I example.com # 仅获取HTTP头信息 wget --mirror --convert-links https://example.com # 镜像网站

4. 实用命令组合与技巧

4.1 管道与重定向

Linux最强大的特性之一是将多个命令通过管道(|)连接。例如:

cat access.log | grep "404" | awk '{print $7}' | sort | uniq -c | sort -nr

这个组合能统计日志中404错误的URL及其出现次数,按频率排序。

重定向也很实用:

command > file # 输出重定向到文件(覆盖) command >> file # 追加到文件 command 2> error.log # 重定向错误输出 command &> all.log # 重定向所有输出

4.2 后台作业与终端复用

长时间运行的任务可以放到后台:

long-running-command & # 直接在后台运行 # 或者 long-running-command Ctrl+Z # 暂停 bg # 放到后台继续 jobs # 查看后台作业 fg %1 # 调回前台

对于更复杂的场景,tmux或screen这类终端复用器是更好的选择。它们允许你在断开SSH连接后仍保持会话。

4.3 实用小技巧

  • !!:重复上一条命令
  • !$:上一条命令的最后一个参数
  • Ctrl+R:反向搜索命令历史
  • command | tee file:同时输出到屏幕和文件
  • watch -n 1 command:每1秒执行一次命令并显示结果

5. 软件包管理命令对比

不同的Linux发行版使用不同的包管理系统,掌握它们对系统管理至关重要。

5.1 Debian/Ubuntu系列(APT)

sudo apt update # 更新软件包列表 sudo apt upgrade # 升级所有已安装软件包 sudo apt install package # 安装软件包 sudo apt remove package # 移除软件包(保留配置) sudo apt purge package # 完全移除软件包 sudo apt search keyword # 搜索软件包 apt-cache show package # 显示软件包信息

5.2 RHEL/CentOS系列(YUM/DNF)

sudo yum check-update # 检查更新 sudo yum update # 更新所有软件包 sudo yum install package # 安装 sudo yum remove package # 移除 yum search keyword # 搜索 yum info package # 显示信息

5.3 通用包管理命令

dpkg和rpm是底层的包管理工具:

dpkg -i package.deb # 安装.deb包 dpkg -l | grep nginx # 列出已安装的包 rpm -ivh package.rpm # 安装.rpm包 rpm -qa | grep mysql # 查询已安装的包

6. 文本处理三剑客:grep、awk、sed

6.1 grep进阶用法

除了基础搜索,grep还有许多强大功能:

grep -v "pattern" file # 反向匹配,显示不包含模式的行 grep -A 3 -B 2 "error" log # 显示匹配行及前后几行 grep -E "pattern1|pattern2" file # 扩展正则,匹配多个模式 grep --color=auto "keyword" file # 高亮显示匹配

6.2 awk数据处理

awk特别适合处理结构化文本,如日志文件:

awk '{print $1}' access.log # 打印每行第一个字段 awk -F: '{print $1,$6}' /etc/passwd # 指定冒号为分隔符 awk '$3 > 100 {print $0}' data.txt # 条件过滤 awk '{sum+=$1} END {print sum}' numbers.txt # 求和计算

6.3 sed流编辑器

sed适合批量文本替换和编辑:

sed 's/old/new/g' file # 全局替换 sed -i.bak 's/foo/bar/' file # 直接修改文件(保留备份) sed '/pattern/d' file # 删除匹配行 sed -n '10,20p' file # 打印10到20行

7. 权限与用户管理

7.1 文件权限

Linux文件权限由三组rwx(读、写、执行)组成,分别对应所有者、所属组和其他用户。chmod命令修改权限:

chmod u+x script.sh # 给所有者添加执行权限 chmod go-rw file.txt # 移除组和其他用户的读写权限 chmod 755 script.sh # 数字表示法:rwxr-xr-x

数字表示法中,r=4,w=2,x=1,所以7=rwx,5=r-x等。

7.2 用户与组管理

sudo useradd -m username # 创建用户并创建家目录 sudo passwd username # 设置密码 sudo usermod -aG groupname username # 将用户添加到附加组 sudo userdel -r username # 删除用户及家目录 groups username # 查看用户所属组

/etc/passwd存储用户信息,/etc/group存储组信息,/etc/shadow存储加密密码。

7.3 sudo配置

visudo命令安全地编辑/etc/sudoers文件。典型配置示例:

username ALL=(ALL:ALL) ALL # 授予所有权限 %admin ALL=(ALL) ALL # 组权限 webuser ALL=(root) /usr/bin/systemctl restart nginx # 特定命令权限

8. 实用脚本编写基础

8.1 脚本基础结构

一个标准的bash脚本开头:

#!/bin/bash # 注释:这是一个示例脚本 set -euo pipefail # 安全设置:出错退出,未设变量报错,管道错误检测

set命令的几个有用选项:

  • -e:命令失败时立即退出
  • -u:遇到未定义变量时报错
  • -o pipefail:管道中任一命令失败则整个管道失败

8.2 变量与参数

name="value" # 变量赋值 echo "$name" # 变量引用 echo "参数个数: $#" echo "第一个参数: $1" echo "所有参数: $@"

8.3 条件与循环

if [ -f "$file" ]; then echo "文件存在" elif [ -d "$dir" ]; then echo "目录存在" else echo "都不存在" fi for i in {1..5}; do echo "迭代 $i" done while read line; do echo "处理: $line" done < input.txt

8.4 函数定义

function log { local timestamp=$(date '+%Y-%m-%d %H:%M:%S') echo "[$timestamp] $1" } log "这是一个日志消息"

9. 系统服务管理

9.1 systemd基础

现代Linux发行版大多使用systemd管理系统服务:

sudo systemctl start nginx # 启动服务 sudo systemctl stop nginx # 停止 sudo systemctl restart nginx # 重启 sudo systemctl reload nginx # 重载配置 sudo systemctl enable nginx # 设置开机启动 sudo systemctl status nginx # 查看状态 journalctl -u nginx -f # 查看日志(实时)

9.2 服务故障排查

当服务启动失败时,按顺序检查:

  1. systemctl status service- 查看服务状态和最后几条日志
  2. journalctl -u service -xe- 查看完整日志
  3. 手动运行服务二进制文件,看是否有输出错误
  4. 检查配置文件语法(如nginx -t测试nginx配置)
  5. 检查端口冲突(ss -tulnp | grep :80)

10. 安全相关命令

10.1 SSH安全连接

ssh user@host -p port # 指定端口连接 ssh -i ~/.ssh/id_rsa user@host # 使用密钥认证 scp -P port file user@host:path # 安全复制 rsync -avz -e "ssh -p port" src/ user@host:dest/ # 高效同步

10.2 防火墙管理

ufw(Uncomplicated Firewall)简化了iptables配置:

sudo ufw allow 22/tcp # 允许SSH sudo ufw allow from 192.168.1.100 # 允许特定IP sudo ufw enable # 启用防火墙 sudo ufw status numbered # 查看规则(带编号) sudo ufw delete 2 # 删除第二条规则

对于更复杂的配置,直接使用iptables或nftables。

10.3 安全扫描与审计

sudo chkrootkit # 检查rootkit sudo rkhunter --checkall # 更全面的安全检查 sudo lynis audit system # 系统安全审计 sudo apt install fail2ban # 安装防暴力破解工具

11. 性能分析与优化

11.1 系统性能监控

top和htop提供了实时监控,但对于性能分析,这些命令更有用:

vmstat 1 # 系统整体状态(每秒刷新) iostat -xz 1 # 磁盘I/O统计 mpstat -P ALL 1 # CPU使用详情 sar -n DEV 1 # 网络流量统计 dstat -cdngy # 综合资源监控

11.2 进程级分析

strace -p PID # 跟踪系统调用 ltrace -p PID # 跟踪库调用 perf top # 性能计数器分析 pidstat 1 # 进程资源使用统计

11.3 内存分析

free -h # 内存总量和使用情况 vmstat -s # 详细内存统计 pmap -x PID # 进程内存映射详情 valgrind --tool=memcheck ./program # 检测内存泄漏

12. 容器与虚拟化相关命令

12.1 Docker基础命令

docker ps -a # 列出所有容器 docker images # 列出镜像 docker pull nginx # 拉取镜像 docker run -d -p 80:80 nginx # 运行容器 docker exec -it container bash # 进入容器 docker logs -f container # 查看日志 docker system prune # 清理无用资源

12.2 LXC/LXD容器

lxc list # 列出容器 lxc launch ubuntu:20.04 mycontainer # 创建容器 lxc exec mycontainer -- bash # 执行命令 lxc stop mycontainer # 停止容器 lxc delete mycontainer # 删除容器

12.3 虚拟机管理

virsh list --all # 列出虚拟机 virsh start vmname # 启动VM virsh shutdown vmname # 关闭VM virsh console vmname # 连接控制台 virt-manager # 图形化管理工具

13. 开发相关命令

13.1 版本控制(Git)

git init # 初始化仓库 git clone url # 克隆远程仓库 git status # 查看状态 git add file # 添加文件到暂存区 git commit -m "message" # 提交更改 git push origin main # 推送到远程 git pull # 拉取更新 git log --oneline --graph # 查看简洁历史

13.2 编译与构建

gcc -o program source.c # 编译C程序 make # 执行Makefile cmake .. # 生成构建文件 ./configure # 配置源代码

13.3 调试工具

gdb ./program # GNU调试器 valgrind ./program # 内存调试 strace ./program # 系统调用跟踪 ltrace ./program # 库调用跟踪

14. 终端定制与效率提升

14.1 Shell配置

.bashrc或.zshrc中的实用配置:

# 命令别名 alias ll='ls -alF' alias grep='grep --color=auto' alias ..='cd ..' # 历史命令优化 HISTSIZE=10000 HISTFILESIZE=20000 HISTCONTROL=ignoreboth shopt -s histappend # 提示符定制 PS1='\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '

14.2 终端复用器

tmux基本用法:

tmux new -s session_name # 新建会话 Ctrl+b d # 分离会话 tmux attach -t session_name # 重新连接 tmux ls # 列出会话 Ctrl+b % # 垂直分割窗格 Ctrl+b " # 水平分割窗格

14.3 其他效率工具

# 文件模糊查找 find . -type f | fzf # 历史命令搜索 Ctrl+r # 快速目录跳转 apt install autojump j project # 快速跳转到经常访问的project目录

15. 日志管理与分析

15.1 系统日志查看

journalctl -xe # 查看系统日志(最近错误) journalctl -u nginx --since "1 hour ago" # 服务特定日志 tail -f /var/log/syslog # 实时查看日志 grep -i error /var/log/syslog | less # 过滤错误

15.2 日志轮转配置

/etc/logrotate.conf和/etc/logrotate.d/中的配置控制日志轮转。示例配置:

/var/log/nginx/*.log { daily missingok rotate 14 compress delaycompress notifempty create 0640 www-data adm sharedscripts postrotate /usr/bin/systemctl reload nginx > /dev/null endscript }

15.3 高级日志分析

# 统计HTTP状态码 awk '{print $9}' access.log | sort | uniq -c | sort -nr # 找出访问量最大的IP awk '{print $1}' access.log | sort | uniq -c | sort -nr | head -20 # 使用goaccess进行可视化分析 goaccess access.log -o report.html --log-format=COMBINED

16. 备份与恢复

16.1 文件级备份

# 使用tar创建压缩备份 tar -czvf backup-$(date +%F).tar.gz /path/to/backup # 使用rsync增量备份 rsync -avz --delete /source/ user@host:/backup/ # 使用dd创建磁盘映像 dd if=/dev/sda of=/backup/sda.img bs=4M status=progress

16.2 系统级备份

# 使用timeshift进行系统快照 sudo timeshift --create --comments "Before major update" # 使用clonezilla进行完整系统克隆 # 需要从Live USB启动

16.3 数据库备份

MySQL备份:

mysqldump -u root -p --all-databases > full-backup.sql

PostgreSQL备份:

pg_dumpall -U postgres > full-backup.sql

17. 硬件信息与诊断

17.1 硬件信息查询

lscpu # CPU信息 lsblk # 块设备列表 lspci -nnk # PCI设备详情 lsusb # USB设备 dmidecode # 全面硬件信息 hdparm -i /dev/sda # 磁盘信息 smartctl -a /dev/sda # SMART磁盘健康状态

17.2 硬件测试

# CPU压力测试 stress --cpu 4 --timeout 60s # 内存测试 memtester 1G 1 # 磁盘性能测试 hdparm -Tt /dev/sda dd if=/dev/zero of=testfile bs=1G count=1 oflag=direct

18. 网络高级配置

18.1 网络调试

# 查看路由表 ip route route -n # 追踪网络路径 mtr example.com # 网络抓包 tcpdump -i eth0 -w capture.pcap tcpdump -i eth0 port 80 -A # 更友好的抓包分析 sudo apt install wireshark-tshark tshark -i eth0 -f "port 80" -Y "http.request"

18.2 网络配置

# 临时设置IP sudo ip addr add 192.168.1.100/24 dev eth0 # 永久配置(以Ubuntu为例) # 编辑/etc/netplan/01-netcfg.yaml network: version: 2 ethernets: eth0: addresses: [192.168.1.100/24] gateway4: 192.168.1.1 nameservers: addresses: [8.8.8.8, 8.8.4.4]

19. 环境变量与Shell配置

19.1 环境变量管理

echo $PATH # 查看PATH变量 export VAR=value # 设置环境变量 unset VAR # 取消设置 env # 显示所有环境变量 # 永久设置(对当前用户) echo 'export VAR=value' >> ~/.bashrc source ~/.bashrc

19.2 Shell启动文件

了解加载顺序很重要:

  1. /etc/profile- 系统全局配置
  2. ~/.bash_profile- 用户特定配置(如果存在)
  3. ~/.bashrc- 每次启动新shell时加载
  4. ~/.bash_logout- 退出shell时执行

19.3 环境定制技巧

# 设置命令提示符显示Git分支 parse_git_branch() { git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/ (\1)/' } export PS1="\u@\h \[\033[32m\]\w\[\033[33m\]\$(parse_git_branch)\[\033[00m\] $ " # 设置命令别名 alias update='sudo apt update && sudo apt upgrade -y' alias ports='netstat -tulnp'

20. 终端下的生产力工具

20.1 文本处理

# 使用column格式化输出 df -h | column -t # 使用cut提取特定列 cut -d: -f1,6 /etc/passwd # 使用paste合并文件 paste file1 file2 # 使用sort和uniq处理数据 sort file | uniq -c | sort -nr

20.2 文件比较

diff file1 file2 # 比较文件差异 vimdiff file1 file2 # 可视化比较 comm -12 file1 file2 # 找出共同行 md5sum file # 计算校验和

20.3 其他实用工具

# 监视文件变化 watch -n 1 'ls -l' # 计算执行时间 time command # 创建临时文件 mktemp # 转换文本编码 iconv -f UTF-8 -t ASCII//TRANSLIT file.txt > newfile.txt

21. 远程管理技巧

21.1 SSH高级用法

# 端口转发 ssh -L 8080:localhost:80 user@host # 本地端口转发 ssh -R 8080:localhost:80 user@host # 远程端口转发 # 跳板机连接 ssh -J user1@jump_host user2@target_host # 保持连接活跃 echo "ServerAliveInterval 60" >> ~/.ssh/config # 简化连接配置 # ~/.ssh/config示例 Host myserver HostName server.example.com User myuser Port 2222 IdentityFile ~/.ssh/id_rsa

21.2 批量操作

# 使用pssh并行执行 pssh -h hosts.txt -l user -A -i "uptime" # 使用ansible自动化 ansible all -m ping ansible webservers -m apt -a "name=nginx state=present"

22. 系统启动与运行级别

22.1 启动过程管理

# 查看启动时间 systemd-analyze systemd-analyze blame # 修复启动问题 journalctl -b # 本次启动日志 journalctl -b -1 # 上次启动日志 # 进入救援模式 # 在GRUB菜单选择"Advanced options" -> "Recovery mode"

22.2 运行级别

虽然systemd引入了target概念,但传统运行级别仍有对应关系:

  • 0:关机
  • 1或rescue:单用户模式
  • 3:多用户文本模式
  • 5:图形界面模式
  • 6:重启

切换运行级别:

sudo systemctl isolate multi-user.target # 相当于运行级别3 sudo systemctl isolate graphical.target # 相当于运行级别5

23. 内核模块与驱动

23.1 内核模块管理

lsmod # 列出已加载模块 modinfo module_name # 显示模块信息 sudo modprobe module # 加载模块 sudo modprobe -r module # 移除模块 # 查看模块参数 cat /sys/module/module_name/parameters/*

23.2 内核参数调整

sysctl -a # 查看所有参数 sysctl kernel.hostname # 查看特定参数 sudo sysctl -w vm.swappiness=10 # 临时修改 # 永久修改(添加或修改/etc/sysctl.conf) echo "vm.swappiness=10" | sudo tee -a /etc/sysctl.conf sudo sysctl -p # 应用更改

24. 文件系统深入

24.1 文件系统类型

# 查看已挂载文件系统 mount | column -t findmnt # 创建文件系统 mkfs.ext4 /dev/sdb1 mkfs.xfs /dev/sdb2 # 检查文件系统 fsck /dev/sda1 xfs_repair /dev/sdb2

24.2 挂载选项

/etc/fstab示例:

UUID=1234-5678 /mnt/data ext4 defaults,noatime,nodiratime 0 2

常用选项:

  • defaults:默认选项(rw,suid,dev,exec,auto,nouser,async)
  • noatime:不更新访问时间,提升性能
  • nodiratime:不更新目录访问时间
  • discard:启用TRIM(SSD)
  • nofail:启动时忽略挂载失败

24.3 磁盘配额

# 启用配额 sudo quotacheck -cugm / sudo quotaon -v / # 设置用户配额 sudo edquota -u username # 查看配额 quota -vs username repquota -a

25. 时间与计划任务

25.1 时间同步

# 使用systemd-timesyncd timedatectl status sudo timedatectl set-ntp true # 使用chrony(更精确) sudo apt install chrony chronyc tracking chronyc sources

25.2 计划任务

# 用户crontab crontab -e # 示例:每天3点备份 0 3 * * * /path/to/backup.sh # 系统cron sudo nano /etc/crontab # 查看日志 grep CRON /var/log/syslog

25.3 at命令

echo "shutdown -h now" | at midnight # 午夜关机 atq # 查看待执行任务 atrm 1 # 删除任务1

26. 国际化与本地化

26.1 语言环境设置

locale # 查看当前设置 localectl status # 系统范围设置 sudo dpkg-reconfigure locales # 生成语言环境 # 设置LANG环境变量 export LANG=en_US.UTF-8

26.2 时区设置

timedatectl list-timezones sudo timedatectl set-timezone America/New_York

26.3 键盘布局

localectl list-keymaps sudo localectl set-keymap us

27. 系统救援与恢复

27.1 单用户模式

# 在GRUB启动菜单中: 1. 按e编辑启动项 2. 找到linux行,在末尾添加"single"或"init=/bin/bash" 3. Ctrl+x启动

27.2 从Live CD恢复

# 挂载原系统分区 mkdir /mnt/root mount /dev/sda1 /mnt/root mount --bind /dev /mnt/root/dev mount --bind /proc /mnt/root/proc mount --bind /sys /mnt/root/sys chroot /mnt/root

27.3 修复GRUB

# 从Live CD启动后 sudo grub-install /dev/sda sudo update-grub

28. 系统自动化与配置管理

28.1 Bash脚本进阶

# 错误处理 set -euo pipefail # 日志记录 exec > >(tee -a "$logfile") 2>&1 # 参数解析 while getopts ":a:b:" opt; do case $opt in a) arg1="$OPTARG" ;; b) arg2="$OPTARG" ;; \?) echo "无效选项: -$OPTARG" >&2 ;; esac done

28.2 使用Ansible

# 安装 sudo apt install ansible # 简单playbook示例 --- - hosts: webservers become: yes tasks: - name: Ensure nginx is installed apt: name: nginx state: present

28.3 使用Puppet/Chef

# Puppet示例 package { 'nginx': ensure => installed, } service { 'nginx': ensure => running, enable => true, }

29. 性能调优实践

29.1 内核参数优化

# /etc/sysctl.conf优化示例 vm.swappiness = 10 vm.vfs_cache_pressure = 50 net.ipv4.tcp_fin_timeout = 30 net.core.somaxconn = 4096

29.2 磁盘I/O优化

# 使用ionice调整I/O优先级 ionice -c2 -n7 command # 使用deadline调度器 echo deadline | sudo tee /sys/block/sda/queue/scheduler # 调整预读值 blockdev --setra 256 /dev/sda

29.3 网络优化

# 调整TCP缓冲区 echo 'net.core.rmem_max=16777216' | sudo tee -a /etc/sysctl.conf echo 'net.core.wmem_max=16777216' | sudo tee -a /etc/sysctl.conf sudo sysctl -p

30. 命令学习资源与技巧

30.1 内置帮助系统

man command # 完整手册 command --help # 快速帮助 info command # 更详细的info文档 help builtin # shell内置命令帮助

30.2 学习新命令的技巧

  1. 先看--help输出,了解基本用法
  2. 查找常用示例(如"command examples")
  3. 从简单
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进