
1. Linux 文件查找命令实战指南作为Linux系统管理员每天最常遇到的问题就是那个配置文件放哪了或者上周的日志文件怎么找不到了。掌握高效的文件查找技巧能极大提升工作效率。以下是经过我十年运维验证的查找命令组合拳。1.1 find 命令的深度用法find 是Linux系统中最强大的文件查找工具但大多数人只用了它10%的功能。来看几个实际案例# 查找/home目录下所有7天内修改过的.log文件 find /home -name *.log -mtime -7 # 查找大于100MB的文件并排序 find /var -type f -size 100M -exec ls -lh {} | sort -k5 -rh # 查找所有777权限的文件安全审计常用 find / -perm 777 2/dev/null重要提示在生产环境执行全盘查找时务必添加2/dev/null过滤权限错误信息否则终端会被刷屏。find 的-exec参数特别有用可以对接找到的文件进行操作。比如批量修改权限find ./project -type d -exec chmod 755 {} \; find ./project -type f -exec chmod 644 {} \;1.2 locate 与 updatedb 的配合locate 命令比 find 快得多因为它查询的是预建的数据库。但需要注意# 先更新数据库需要root权限 sudo updatedb # 然后快速定位 locate nginx.conf这个机制导致 locate 找不到最新创建的文件。我通常的做法是在 crontab 里配置每小时自动更新0 * * * * /usr/bin/updatedb1.3 grep 的进阶搜索技巧grep 不仅是文本搜索工具结合管道可以完成复杂查找# 递归搜索目录下所有Python文件中的关键字 grep -rn import requests /path/to/project --include*.py # 显示匹配行前后3行内容 grep -A3 -B3 error logfile.txt # 使用正则表达式查找IP地址 grep -Eo ([0-9]{1,3}\.){3}[0-9]{1,3} access.log我常用的 alias 配置alias fpyfind . -name *.py | xargs grep -n alias fshfind . -name *.sh | xargs grep -n2. 文件压缩与解压完全手册Linux 下的压缩格式五花八门不同场景要用不同工具。以下是整理自实际运维经验的指南。2.1 常见压缩格式对比格式压缩工具解压工具特点适用场景.gzgzipgunzip压缩速度快压缩率一般单个文件快速压缩.bz2bzip2bunzip2压缩速度慢压缩率高需要高压缩率的场景.xzxzunxz极致压缩率速度最慢分发大型文件.zipzipunzip跨平台兼容与Windows系统交互.tartartar仅归档不压缩目录打包.tar.gztarzlibtarzlib最常用的Linux压缩格式日常使用2.2 高频使用示例打包并压缩整个目录tar -czvf project.tar.gz /path/to/project参数解析-c创建归档-z使用gzip压缩-v显示过程-f指定文件名解压到指定目录tar -xzvf archive.tar.gz -C /target/directory查看压缩包内容不解压tar -tzvf backup.tar.gz2.3 性能优化技巧使用 pigz 替代 gzip多线程压缩tar -cvf - /bigdata | pigz bigdata.tar.gz排除不需要的文件tar -czvf project.tar.gz --exclude*.tmp --exclude.git project/分卷压缩大文件适合网络传输tar -czvf - bigfile | split -b 100M - bigfile_part.tar.gz.3. vi/vim 编辑器生存指南作为Linux默认文本编辑器vi是必须掌握的生存技能。以下是让你效率翻倍的实战技巧。3.1 必须记住的基础操作模式切换i进入插入模式ESC返回命令模式:进入底线命令模式保存与退出:w保存:q退出:wq保存并退出:q!强制退出不保存移动光标h/j/k/l左/下/上/右0行首$行尾gg文件开头G文件末尾3.2 提高效率的进阶技巧批量操作dd删除当前行yy复制当前行p粘贴u撤销Ctrlr重做搜索与替换/keyword向前搜索?keyword向后搜索:%s/old/new/g全局替换:10,20s/old/new/g指定行范围替换多文件编辑:e filename打开新文件:bn下一个缓冲区:bp上一个缓冲区:bd关闭当前缓冲区3.3 我的 vim 配置建议创建~/.vimrc文件添加以下配置set number 显示行号 set tabstop4 Tab键宽度 set expandtab 用空格代替Tab set autoindent 自动缩进 syntax on 语法高亮 快速保存退出 nmap leaderw :w!cr nmap leaderq :q!cr4. 其他高频实用命令合集4.1 网络相关命令查看IP地址ip addr show # 老版本系统用 ifconfig测试网络连通性ping -c 4 baidu.com查看路由表route -n # 或 ip route show端口检测netstat -tulnp # 或 ss -tulnp4.2 系统监控命令实时进程监控top # 更现代的替代品 htop磁盘空间检查df -h # 查看目录大小 du -sh *内存使用情况free -h4.3 用户与权限管理添加用户useradd -m -s /bin/bash username修改密码passwd username修改文件权限chmod 755 script.sh chown user:group file4.4 我的常用命令别名在~/.bashrc中添加alias llls -alF alias lals -A alias lls -CF alias grepgrep --colorauto alias dfdf -h alias dudu -h alias hhistory alias clsclear然后执行source ~/.bashrc使配置生效。5. 命令组合实战案例5.1 日志分析三板斧查找最近错误日志grep -i error /var/log/syslog | tail -20统计访问日志IP排名awk {print $1} access.log | sort | uniq -c | sort -nr | head -10监控日志实时变化tail -f /var/log/nginx/access.log | grep 5005.2 系统维护组合拳查找并删除7天前的日志find /var/log -name *.log -mtime 7 -exec rm {} \;批量杀死某进程ps aux | grep python script.py | awk {print $2} | xargs kill -9备份MySQL数据库mysqldump -u root -p database backup.sql gzip backup.sql5.3 开发常用命令链统计代码行数find . -name *.py | xargs wc -l查找所有TODO注释grep -rn TODO src/批量重命名文件for file in *.txt; do mv $file ${file%.txt}.md; done6. 终端使用高级技巧6.1 历史命令高效利用快速执行历史命令!!执行上一条命令!$上条命令的最后一个参数!n执行历史记录中第n条命令!string执行最近以string开头的命令搜索历史命令Ctrlr 然后输入关键词6.2 终端复用神器 tmux安装sudo apt install tmux # Debian/Ubuntu sudo yum install tmux # CentOS/RHEL基本使用tmux new -s session_name新建会话Ctrlb d分离会话tmux attach -t session_name重新连接tmux ls列出所有会话6.3 SSH 相关技巧免密登录配置ssh-keygen -t rsa ssh-copy-id userremote_host通过跳板机连接ssh -J user1jump_host user2target_host传输文件scp file.txt userremote:/path/ rsync -avz /local/path userremote:/remote/path7. 常见问题排错指南7.1 Command not found 解决方案检查命令是否存在which command_name检查PATH环境变量echo $PATH安装缺失的软件包# Debian/Ubuntu sudo apt search keyword sudo apt install package # RHEL/CentOS sudo yum search keyword sudo yum install package7.2 磁盘空间不足排查查找大文件du -ah / | sort -rh | head -20查找大日志文件find /var/log -type f -size 100M清理旧内核Ubuntusudo apt autoremove --purge7.3 进程占用端口处理查找占用端口的进程sudo lsof -i :8080杀死进程sudo kill -9 PID如果进程反复启动可能需要停止服务sudo systemctl stop service_name8. 个人经验与建议经过多年Linux系统管理我总结出以下经验善用手册遇到不熟悉的命令时man command是最权威的参考资料。比如man tar会显示所有参数说明。命令组合的艺术Linux的强大之处在于管道和重定向。多练习将简单命令组合成复杂操作比如ps aux | grep python | awk {print $2} | xargs kill脚本化重复工作任何需要执行超过3次的操作都应该写成脚本。我的个人脚本库已经积累了200实用脚本。安全第一执行rm命令前先echo确认危险的命令可以加上-i交互参数rm -i important_file.txt保持学习Linux生态不断发展定期了解新工具。比如最近我在学习ripgrep替代grepexa替代ls。最后分享一个实用技巧——在命令行输入Ctrlxe会打开默认编辑器可以编辑复杂命令后再执行特别适合长管道命令的调试。