1. Linux命令操作基础认知
作为从业十五年的系统管理员,我深刻体会到命令行操作是Linux系统的灵魂所在。与图形界面相比,命令行工具具有不可替代的优势:执行效率高、资源占用低、可脚本化批量处理,特别适合服务器环境的管理维护。今天要分享的这些命令,都是我日常工作中使用频率最高的"瑞士军刀",掌握它们能让你在终端世界里游刃有余。
很多人觉得命令行晦涩难懂,其实只要理解其设计哲学就会豁然开朗。Linux命令普遍遵循"单一职责原则"——每个命令只做好一件事,通过管道(|)组合使用就能完成复杂任务。比如用find查找文件后通过xargs传递给grep过滤内容,这种模块化设计正是Unix哲学的体现。
2. 文件管理核心命令
2.1 目录导航与查看
pwd命令看似简单,但在复杂目录结构中能快速定位当前路径。我经常在脚本开头使用current_dir=$(pwd)保存当前目录,以便操作完成后能准确返回原位置。
ls命令的-l参数(长格式显示)配合-h(人类可读大小)是我最常用的组合:
bash复制ls -lh /var/log
这个组合能清晰显示文件权限、所有者、大小和修改时间。当需要按时间排序时,我会加上-t参数,反向排序则用-r:
bash复制ls -lhtr # 按时间倒序,方便查看最新文件
2.2 文件操作三剑客
cp命令在复制大文件时,-v参数(显示进度)特别有用:
bash复制cp -v large_file.iso /backup/
但要注意,默认情况下cp会覆盖同名文件而不提示。安全做法是使用-i参数进入交互模式,或者先通过ls确认目标位置。
mv命令除了移动文件,还是重命名的标准方式。在批量操作时,结合通配符非常高效:
bash复制mv *.txt /archive/2023_docs/
rm命令的-rf组合威力巨大,我给自己定了三条铁律:
- 执行前先用
echo测试通配符范围 - 重要目录先备份再删除
- 绝对不在根目录下使用
rm -rf *
血泪教训:曾经有同事在/var目录误执行
rm -rf ./ *(注意点号后的空格),导致系统崩溃。务必确认当前目录和参数格式!
3. 文本处理利器
3.1 grep家族深度使用
grep的-E参数支持扩展正则表达式,比基本正则更强大:
bash复制grep -E 'error|fail' /var/log/syslog
当需要统计匹配行数时,-c参数比| wc -l更高效:
bash复制grep -c 'pattern' file.txt
zgrep是处理压缩文件的利器,无需解压即可搜索:
bash复制zgrep 'exception' /var/log/nginx/access.log.2.gz
3.2 sed流编辑器实战
批量替换文件内容时,sed比手动编辑更可靠:
bash复制sed -i 's/old_string/new_string/g' *.conf
这里的-i表示直接修改文件,务必先不加-i测试正则表达式是否正确。
提取特定行也有奇效:
bash复制sed -n '10,20p' logfile.txt # 只显示10-20行
4. 系统监控与进程管理
4.1 资源监控黄金组合
top命令的交互模式很多人只会看前几行,其实这些快捷键能提升效率:
M:按内存排序P:按CPU排序1:展开多核CPU详情Shift + >:向右滚动进程列表
更直观的htop需要额外安装,但提供了彩色界面和鼠标操作,强烈推荐。
4.2 进程管理进阶技巧
ps命令的-ef参数能显示完整进程树,结合grep过滤特别有用:
bash复制ps -ef | grep nginx
但更专业的做法是用pgrep直接获取PID:
bash复制pid=$(pgrep -f "nginx: master")
杀死进程时,pkill比先查PID再kill更简洁:
bash复制pkill -9 -f "python3 script.py"
5. 网络诊断工具链
5.1 连通性测试
ping的-c参数控制发包次数,避免无限循环:
bash复制ping -c 4 example.com
traceroute能看到网络路径,诊断延迟问题:
bash复制traceroute -n 8.8.8.8 # -n不解析IP为域名,加快显示
5.2 端口与服务检查
netstat虽然逐渐被ss取代,但老系统上仍很有用:
bash复制netstat -tulnp | grep 80
更现代的ss命令速度更快:
bash复制ss -tulnp | grep ':443'
lsof能查看文件被哪个进程占用:
bash复制lsof /var/log/nginx/access.log
6. 权限与用户管理
6.1 文件权限控制
chmod的数字表示法更精确:
bash复制chmod 755 script.sh # owner:rwx, group:r-x, others:r-x
特殊权限设置(如SUID):
bash复制chmod u+s /usr/bin/passwd # 设置SUID位
6.2 用户与组操作
添加用户时指定家目录和登录shell:
bash复制useradd -m -s /bin/bash newuser
批量修改文件属主:
bash复制chown -R www-data:www-data /var/www/html
7. 压缩与归档技巧
7.1 常见压缩工具对比
gzip和bzip2适合单个文件:
bash复制gzip -9 bigfile.log # 最大压缩比
bzip2 -k file.txt # -k保留原文件
xz压缩率更高但更耗CPU:
bash复制xz -T4 large_file.img # -T4使用4线程
7.2 tar归档高级用法
创建带时间戳的压缩包:
bash复制tar -czvf backup_$(date +%Y%m%d).tar.gz /path/to/dir
排除特定目录:
bash复制tar --exclude='*.tmp' -czvf archive.tar.gz /data
8. 磁盘空间管理
8.1 空间分析三板斧
df的-h参数是标配:
bash复制df -hT # -T显示文件系统类型
du排序查找大目录:
bash复制du -sh * | sort -rh | head -10
ncdu交互式分析工具(需安装):
bash复制ncdu /var
8.2 文件查找与清理
按大小查找大文件:
bash复制find / -type f -size +100M -exec ls -lh {} \;
清理7天前的日志:
bash复制find /var/log -name "*.log" -mtime +7 -delete
9. 环境变量与Shell技巧
9.1 环境变量管理
查看所有环境变量:
bash复制printenv
临时添加PATH:
bash复制export PATH=$PATH:/custom/bin
永久生效需要写入~/.bashrc或/etc/profile。
9.2 历史命令优化
增加历史记录数量:
bash复制export HISTSIZE=10000
export HISTFILESIZE=20000
忽略重复命令:
bash复制export HISTCONTROL=ignoredups
10. 实用小工具集锦
10.1 时间与日期操作
获取时间戳:
bash复制date +%s
转换时间格式:
bash复制date -d "@1625097600" "+%Y-%m-%d %H:%M:%S"
10.2 计算与编码工具
简单计算:
bash复制echo $((5*1024)) # 算术运算
bc <<< "scale=2; 10/3" # 浮点计算
Base64编码解码:
bash复制echo "text" | base64
echo "dGV4dAo=" | base64 -d
这些命令组合起来能应对90%的日常管理工作。记住,掌握命令不是目的,理解其设计思想才能举一反三。建议每天花10分钟在测试环境练习,很快你就会发现命令行比图形界面高效得多。