1. Linux系统基础命令练习指南作为一位使用Linux系统超过15年的老用户我经常被问到如何快速掌握Linux命令操作。今天我将分享一套经过实战检验的Linux命令练习方法这些练习覆盖了日常系统管理90%的场景需求。不同于教科书式的罗列我会结合真实工作场景讲解每个命令的实用技巧。1.1 文件与目录操作精要在终端里输入ls -l查看文件列表是大多数人学会的第一个Linux命令但隐藏在这条简单命令背后的学问远不止表面看到的那些ls -alht --time-stylelong-iso这个增强版命令组合实现了-a显示隐藏文件以点开头的文件-l长格式显示详细信息-h人类可读的文件大小单位-t按时间排序--time-style标准化时间格式实际经验在排查服务器问题时我经常用ls -lt | head快速查看最近修改的文件定位异常变动。文件权限管理是Linux安全的基础。chmod命令的数字表示法如755可能让新手困惑。其实理解起来很简单第一个数字代表所有者权限第二个数字代表组权限第三个数字代表其他用户权限每个数字都是r(4)w(2)x(1)的和chmod 755 script.sh # 相当于rwxr-xr-x chmod 600 key.pem # 仅所有者可读写1.2 文本处理三剑客实战grep、awk和sed被称为Linux文本处理三剑客。在日志分析时这个组合能解决大多数问题# 查找nginx日志中500错误 grep 500 access.log | awk {print $7} | sort | uniq -c | sort -nr # 批量替换配置文件中的IP地址 sed -i s/192.168.1.100/10.0.0.1/g *.conf我曾用下面这个命令分析过服务器遭受的暴力破解攻击grep Failed password /var/log/auth.log | awk {print $11} | sort | uniq -c | sort -nr | head这行命令的执行过程是筛选包含Failed password的行登录失败记录提取第11列攻击者IP地址统计每个IP的出现次数按尝试次数降序排列显示前10个最活跃的攻击IP1.3 系统监控与进程管理top命令是查看系统资源的经典工具但它的增强版htop提供了更友好的交互界面。安装和使用方法sudo apt install htop # Debian/Ubuntu sudo yum install htop # CentOS/RHEL htop在htop界面中你可以按F2进入设置菜单按F3搜索进程按F5以树状结构显示进程按空格键标记进程后批量操作对于长期运行的进程我推荐使用nohup配合nohup ./long_run_script.sh output.log 21 这个命令的每个部分都有其作用nohup忽略挂断信号 output.log重定向标准输出21将标准错误合并到标准输出后台运行2. 网络配置与故障排查2.1 网络状态诊断命令集当服务器网络出现异常时这套命令组合是我的首选诊断工具# 检查网络接口配置 ip addr show # 测试基础连通性 ping -c 4 8.8.8.8 # 追踪路由路径 traceroute example.com # 检查DNS解析 dig example.com short # 查看开放端口 ss -tulnp # 测试HTTP服务 curl -Iv http://example.com最近一次服务器迁移中mtr命令帮我快速定位了网络延迟问题mtr --report-wide --tcp --port 80 example.com这个命令的优势在于结合了ping和traceroute的功能--report-wide显示完整IP不截断--tcp使用TCP协议测试--port指定测试端口2.2 SSH安全加固实践SSH是Linux系统管理的生命线也是攻击者的主要目标。这是我的SSH加固方案修改默认端口sudo sed -i s/#Port 22/Port 58234/ /etc/ssh/sshd_config禁用root登录sudo sed -i s/PermitRootLogin yes/PermitRootLogin no/ /etc/ssh/sshd_config启用密钥认证mkdir -p ~/.ssh chmod 700 ~/.ssh ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519 cat ~/.ssh/id_ed25519.pub ~/.ssh/authorized_keys chmod 600 ~/.ssh/authorized_keys配置防火墙规则sudo ufw allow 58234/tcp sudo ufw enable关键提醒在执行这些修改前务必保持现有SSH会话不中断并在另一个终端测试新配置是否生效避免被锁在服务器外。3. 自动化运维脚本编写3.1 Bash脚本最佳实践一个健壮的Bash脚本应该包含以下要素#!/usr/bin/env bash # 严格模式 set -euo pipefail IFS$\n\t # 脚本信息 SCRIPT_NAME$(basename $0) VERSION1.0.0 # 日志函数 log() { local level$1 shift echo [$(date %Y-%m-%d %H:%M:%S)] [$level] $SCRIPT_NAME: $* 2 } # 参数检查 if [[ $# -lt 1 ]]; then log ERROR Usage: $0 input_file exit 1 fi # 主逻辑 main() { local input_file$1 if [[ ! -f $input_file ]]; then log ERROR File not found: $input_file return 1 fi log INFO Processing file: $input_file # 处理逻辑... } main $这个模板包含了Shebang行使用/usr/bin/env bash提高可移植性严格模式设置(set -euo pipefail)及早发现错误完善的日志记录功能参数验证模块化的主函数结构3.2 实用脚本案例系统健康检查这是我常用的服务器健康检查脚本#!/usr/bin/env bash # 获取系统信息 HOSTNAME$(hostname) UPTIME$(uptime -p) LOAD_AVG$(cat /proc/loadavg | awk {print $1,$2,$3}) # 内存使用情况 MEM_TOTAL$(free -h | awk /Mem:/ {print $2}) MEM_USED$(free -h | awk /Mem:/ {print $3}) MEM_PERCENT$(free | awk /Mem:/ {printf(%.1f), $3/$2*100}) # 磁盘空间 DISK_INFO$(df -h | grep -v tmpfs | grep -v udev) # 网络连接 CONN_COUNT$(ss -s | awk /^Total:/ {print $2}) # 输出报告 cat EOF 系统健康检查报告 主机名: $HOSTNAME 运行时间: $UPTIME 负载平均值: $LOAD_AVG 内存使用: $MEM_USED/$MEM_TOTAL ($MEM_PERCENT%) 磁盘空间: $DISK_INFO 网络连接数: $CONN_COUNT EOF这个脚本的价值在于快速获取服务器关键指标无需安装额外监控工具输出格式清晰易读可以扩展加入告警阈值检测4. 常见问题排查手册4.1 磁盘空间不足应急处理当/分区空间告急时我通常按照以下步骤排查快速定位大文件sudo du -hxd 1 / | sort -h检查可能被进程占用的已删除文件sudo lsof L1清理日志文件# 查看日志文件大小 sudo find /var/log -type f -exec du -h {} | sort -h # 清空特定日志如nginx访问日志 sudo truncate -s 0 /var/log/nginx/access.log重要提示直接删除日志文件可能导致正在写入的进程保持文件句柄更好的做法是使用truncate或echo file.log4.2 性能瓶颈分析流程当服务器响应缓慢时这个检查清单能帮你快速定位问题CPU瓶颈top -1 -b -n 1 | head -15 vmstat 1 5内存压力free -h cat /proc/meminfo | grep -E MemAvailable|SwapCachedI/O等待iostat -x 1 5 iotop -o网络瓶颈iftop -n nethogs我曾遇到一个典型案例服务器负载很高但CPU使用率很低。通过iostat发现%util接近100%确认是磁盘I/O瓶颈。进一步用iotop定位到是某个MySQL查询导致的大量临时文件写入。5. 进阶学习路径建议掌握基础命令后我建议按照以下路径深入学习Shell编程进阶进程替换和命令分组数组和关联数组正则表达式高级用法并行处理技巧系统内部原理# 查看系统调用 strace -f -o trace.log command # 分析二进制文件 objdump -d /bin/ls | less性能调优工具# 函数调用分析 perf top # 系统调用统计 perf stat -d ls # 火焰图生成 git clone https://github.com/brendangregg/FlameGraph perf record -F 99 -a -g -- sleep 60 perf script | ./FlameGraph/stackcollapse-perf.pl | ./FlameGraph/flamegraph.pl perf.svg容器化运维# 容器资源限制检查 docker stats # 容器内部进程查看 docker top container # 容器网络诊断 docker network inspect network最后分享一个我用了多年的命令小抄打印出来贴在工位上特别实用curl -s https://raw.githubusercontent.com/LeCoupa/awesome-cheatsheets/master/languages/bash.sh | grep -A2 -B1 ^#-- | less记住Linux学习的真谛不在于死记硬背命令而在于理解系统工作原理和培养解决问题的思维。每当遇到新命令尝试man -k 关键词或tldr 命令快速了解其用途。
Linux命令实战:15年老用户的系统管理精要
发布时间:2026/7/4 2:12:13
1. Linux系统基础命令练习指南作为一位使用Linux系统超过15年的老用户我经常被问到如何快速掌握Linux命令操作。今天我将分享一套经过实战检验的Linux命令练习方法这些练习覆盖了日常系统管理90%的场景需求。不同于教科书式的罗列我会结合真实工作场景讲解每个命令的实用技巧。1.1 文件与目录操作精要在终端里输入ls -l查看文件列表是大多数人学会的第一个Linux命令但隐藏在这条简单命令背后的学问远不止表面看到的那些ls -alht --time-stylelong-iso这个增强版命令组合实现了-a显示隐藏文件以点开头的文件-l长格式显示详细信息-h人类可读的文件大小单位-t按时间排序--time-style标准化时间格式实际经验在排查服务器问题时我经常用ls -lt | head快速查看最近修改的文件定位异常变动。文件权限管理是Linux安全的基础。chmod命令的数字表示法如755可能让新手困惑。其实理解起来很简单第一个数字代表所有者权限第二个数字代表组权限第三个数字代表其他用户权限每个数字都是r(4)w(2)x(1)的和chmod 755 script.sh # 相当于rwxr-xr-x chmod 600 key.pem # 仅所有者可读写1.2 文本处理三剑客实战grep、awk和sed被称为Linux文本处理三剑客。在日志分析时这个组合能解决大多数问题# 查找nginx日志中500错误 grep 500 access.log | awk {print $7} | sort | uniq -c | sort -nr # 批量替换配置文件中的IP地址 sed -i s/192.168.1.100/10.0.0.1/g *.conf我曾用下面这个命令分析过服务器遭受的暴力破解攻击grep Failed password /var/log/auth.log | awk {print $11} | sort | uniq -c | sort -nr | head这行命令的执行过程是筛选包含Failed password的行登录失败记录提取第11列攻击者IP地址统计每个IP的出现次数按尝试次数降序排列显示前10个最活跃的攻击IP1.3 系统监控与进程管理top命令是查看系统资源的经典工具但它的增强版htop提供了更友好的交互界面。安装和使用方法sudo apt install htop # Debian/Ubuntu sudo yum install htop # CentOS/RHEL htop在htop界面中你可以按F2进入设置菜单按F3搜索进程按F5以树状结构显示进程按空格键标记进程后批量操作对于长期运行的进程我推荐使用nohup配合nohup ./long_run_script.sh output.log 21 这个命令的每个部分都有其作用nohup忽略挂断信号 output.log重定向标准输出21将标准错误合并到标准输出后台运行2. 网络配置与故障排查2.1 网络状态诊断命令集当服务器网络出现异常时这套命令组合是我的首选诊断工具# 检查网络接口配置 ip addr show # 测试基础连通性 ping -c 4 8.8.8.8 # 追踪路由路径 traceroute example.com # 检查DNS解析 dig example.com short # 查看开放端口 ss -tulnp # 测试HTTP服务 curl -Iv http://example.com最近一次服务器迁移中mtr命令帮我快速定位了网络延迟问题mtr --report-wide --tcp --port 80 example.com这个命令的优势在于结合了ping和traceroute的功能--report-wide显示完整IP不截断--tcp使用TCP协议测试--port指定测试端口2.2 SSH安全加固实践SSH是Linux系统管理的生命线也是攻击者的主要目标。这是我的SSH加固方案修改默认端口sudo sed -i s/#Port 22/Port 58234/ /etc/ssh/sshd_config禁用root登录sudo sed -i s/PermitRootLogin yes/PermitRootLogin no/ /etc/ssh/sshd_config启用密钥认证mkdir -p ~/.ssh chmod 700 ~/.ssh ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519 cat ~/.ssh/id_ed25519.pub ~/.ssh/authorized_keys chmod 600 ~/.ssh/authorized_keys配置防火墙规则sudo ufw allow 58234/tcp sudo ufw enable关键提醒在执行这些修改前务必保持现有SSH会话不中断并在另一个终端测试新配置是否生效避免被锁在服务器外。3. 自动化运维脚本编写3.1 Bash脚本最佳实践一个健壮的Bash脚本应该包含以下要素#!/usr/bin/env bash # 严格模式 set -euo pipefail IFS$\n\t # 脚本信息 SCRIPT_NAME$(basename $0) VERSION1.0.0 # 日志函数 log() { local level$1 shift echo [$(date %Y-%m-%d %H:%M:%S)] [$level] $SCRIPT_NAME: $* 2 } # 参数检查 if [[ $# -lt 1 ]]; then log ERROR Usage: $0 input_file exit 1 fi # 主逻辑 main() { local input_file$1 if [[ ! -f $input_file ]]; then log ERROR File not found: $input_file return 1 fi log INFO Processing file: $input_file # 处理逻辑... } main $这个模板包含了Shebang行使用/usr/bin/env bash提高可移植性严格模式设置(set -euo pipefail)及早发现错误完善的日志记录功能参数验证模块化的主函数结构3.2 实用脚本案例系统健康检查这是我常用的服务器健康检查脚本#!/usr/bin/env bash # 获取系统信息 HOSTNAME$(hostname) UPTIME$(uptime -p) LOAD_AVG$(cat /proc/loadavg | awk {print $1,$2,$3}) # 内存使用情况 MEM_TOTAL$(free -h | awk /Mem:/ {print $2}) MEM_USED$(free -h | awk /Mem:/ {print $3}) MEM_PERCENT$(free | awk /Mem:/ {printf(%.1f), $3/$2*100}) # 磁盘空间 DISK_INFO$(df -h | grep -v tmpfs | grep -v udev) # 网络连接 CONN_COUNT$(ss -s | awk /^Total:/ {print $2}) # 输出报告 cat EOF 系统健康检查报告 主机名: $HOSTNAME 运行时间: $UPTIME 负载平均值: $LOAD_AVG 内存使用: $MEM_USED/$MEM_TOTAL ($MEM_PERCENT%) 磁盘空间: $DISK_INFO 网络连接数: $CONN_COUNT EOF这个脚本的价值在于快速获取服务器关键指标无需安装额外监控工具输出格式清晰易读可以扩展加入告警阈值检测4. 常见问题排查手册4.1 磁盘空间不足应急处理当/分区空间告急时我通常按照以下步骤排查快速定位大文件sudo du -hxd 1 / | sort -h检查可能被进程占用的已删除文件sudo lsof L1清理日志文件# 查看日志文件大小 sudo find /var/log -type f -exec du -h {} | sort -h # 清空特定日志如nginx访问日志 sudo truncate -s 0 /var/log/nginx/access.log重要提示直接删除日志文件可能导致正在写入的进程保持文件句柄更好的做法是使用truncate或echo file.log4.2 性能瓶颈分析流程当服务器响应缓慢时这个检查清单能帮你快速定位问题CPU瓶颈top -1 -b -n 1 | head -15 vmstat 1 5内存压力free -h cat /proc/meminfo | grep -E MemAvailable|SwapCachedI/O等待iostat -x 1 5 iotop -o网络瓶颈iftop -n nethogs我曾遇到一个典型案例服务器负载很高但CPU使用率很低。通过iostat发现%util接近100%确认是磁盘I/O瓶颈。进一步用iotop定位到是某个MySQL查询导致的大量临时文件写入。5. 进阶学习路径建议掌握基础命令后我建议按照以下路径深入学习Shell编程进阶进程替换和命令分组数组和关联数组正则表达式高级用法并行处理技巧系统内部原理# 查看系统调用 strace -f -o trace.log command # 分析二进制文件 objdump -d /bin/ls | less性能调优工具# 函数调用分析 perf top # 系统调用统计 perf stat -d ls # 火焰图生成 git clone https://github.com/brendangregg/FlameGraph perf record -F 99 -a -g -- sleep 60 perf script | ./FlameGraph/stackcollapse-perf.pl | ./FlameGraph/flamegraph.pl perf.svg容器化运维# 容器资源限制检查 docker stats # 容器内部进程查看 docker top container # 容器网络诊断 docker network inspect network最后分享一个我用了多年的命令小抄打印出来贴在工位上特别实用curl -s https://raw.githubusercontent.com/LeCoupa/awesome-cheatsheets/master/languages/bash.sh | grep -A2 -B1 ^#-- | less记住Linux学习的真谛不在于死记硬背命令而在于理解系统工作原理和培养解决问题的思维。每当遇到新命令尝试man -k 关键词或tldr 命令快速了解其用途。