linux常用快捷键
linux常用快捷键
grep -C 20 “NullPointerException” app.log,可以显示匹配行前后各 20 行的上下文,快速了解报错前后的业务逻辑。
grep “TraceId-xxx” app.log* 批量搜索切割后的日志文件,串联起一次请求的完整生命周期。
超大文件高效浏览:对于几个 G 的日志文件,使用 less 命令按需加载,不会占满内存。进入后可以使用 /关键词 向上检索,按 n 继续查找,或按 Shift+F 无缝切换到实时追踪模式。
时间窗口切割:当日志量极大时,使用 sed -n ‘/2023-10-23 10:00:00/,/2023-10-23 10:05:00/p’ app.log 精准提取特定时间段的日志,方便下载分析。
进程资源监控:使用 top 或增强版 htop 实时查看 CPU 和内存占用。在 top 中按 P 可按 CPU 排序,按 M 可按内存排序,快速锁定高耗能的进程。
内存与磁盘排查:使用 free -h 查看系统内存使用情况(排查 OOM);使用 df -h 检查磁盘分区使用率,防止日志或临时文件占满磁盘导致服务异常;使用 du -sh * 定位当前目录下的大文件。
IO 性能分析:使用 vmstat 1 或 iostat 实时输出系统 CPU、内存、IO 统计信息,分析是否存在 IO 等待过高的问题。
进程查找与终止:使用 ps -ef | grep java 查找进程 PID。在需要终止进程时,优先使用 kill PID(发送 SIGTERM 信号),让进程有机会优雅地释放资源;仅在紧急情况下使用 kill -9 PID 强制杀死进程,避免数据损坏。
后台持久化运行:使用 nohup command & 让程序在后台运行,即使退出终端或断开 SSH 连接,程序也会继续执行。
四、 网络排查利器
端口与连接状态检查:使用 netstat -tuln 或性能更好的 ss -tuln 查看服务端口是否正常监听;使用 netstat -anp | grep PID 查看指定进程的网络连接状态,排查连接泄露(如大量 TIME_WAIT)。
连通性测试:使用 ping 测试网络延迟和丢包;使用 telnet IP 端口 或 nc -zv IP 端口 测试特定端口是否通畅(如检查后端能否连上数据库)。
接口快速调试:使用 curl -X POST -H “Content-Type: application/json” -d ‘{“key”:“value”}’ URL 直接在命令行测试 REST API 接口。
五、 进阶与自动化技巧
管道与重定向:Linux 哲学的核心是组合。通过管道符 |,可以将多个命令串联,例如 grep “error” app.log | wc -l 快速统计报错次数。
编写自动化脚本:将日常繁琐的部署、日志清理、服务重启等操作编写成 Shell 脚本,不仅能大幅提升工作效率,还能有效减少人为操作失误。
基础导航:ls -la查看目录详情(含隐藏文件),cd切换路径,pwd确认当前位置。
文件管理:cp -r递归复制目录(如项目备份),mv重命名或移动文件,rm -rf强制删除(慎用)。
内容查看:cat快速查看小文件,less分页浏览大文件(支持检索),head/tail查看文件首尾内容。
二、日志分析与文本处理
实时监控:tail -f logs/app.log跟踪日志更新,tail -n 200显示末尾指定行数。
精准检索:grep -C 20 “ERROR” app.log显示错误行及上下文,grep -r递归搜索目录。
组合使用:tail -f app.log | grep "TraceId-xxx"实时过滤特定请求日志。
三、进程与资源监控
进程管理:ps aux查看进程列表,top/htop动态监控资源占用,kill PID优雅终止进程。
资源诊断:free -h查看内存,df -h检查磁盘空间,du -sh directory统计目录大小。
四、网络与远程操作
网络诊断:ping测试连通性,ip addr查看接口信息,curl/wget模拟HTTP请求。
远程协作:ssh安全登录,scp文件传输,VSCode Remote-SSH插件实现免密连接与端口转发。
五、自动化与脚本
部署脚本:编写Shell脚本自动化git pull、依赖安装及服务重启流程。
定时任务:crontab设置周期性任务(如日志清理、服务健康检查)。
使用 tail -f 命令(最常用)
这是最基础且最常用的实时查看日志命令,它会持续监视文件的新增内容并显示在终端上。
基本用法:tail -f 日志文件的路径
示例:tail -f /var/log/syslog
退出方式:按下 Ctrl + C 组合键即可停止查看。使用 journalctl -f 命令
如果您的系统使用 systemd,可以使用 journalctl 来实时查看系统日志。
查看所有系统日志:journalctl -f
查看特定服务的日志:使用 -u 参数指定服务名称,例如 journalctl -f -u sshd 或 journalctl -u nginx -f
退出方式:同样使用 Ctrl + C 退出。使用 less +F 命令
less 命令不仅可以分页查看文件,还支持实时追踪。它的优势在于可以随时暂停实时模式,使用上下键或搜索功能(按 / 键)在历史日志中查找内容。
用法:less +F 日志文件的路径
操作:进入后默认处于实时追踪模式。按下 Ctrl + C 可退出实时模式进入普通浏览模式;在普通模式下按 Shift + F 或 F 键可重新进入实时追踪模式。使用 multitail 命令
如果您需要同时监控多个日志文件,multitail 是一个非常强大的工具,它可以将多个日志分屏显示。
用法:multitail 日志文件1 日志文件2
示例:multitail /var/log/syslog /var/log/auth.log
注意:该工具可能需要提前安装(如 sudo apt-get install multitail)。使用 dmesg -w 命令
专门用于实时查看和打印内核日志的最新内容。
用法:dmesg -w
初始化与配置
初始化本地仓库:git init
克隆远程仓库:git clone
配置用户信息:
全局配置:git config --global user.name “你的名字” 和 git config --global user.email “你的邮箱”
仅当前项目配置:git config user.name “项目名”
日常提交(增删改查)
查看状态:git status (查看工作区和暂存区的状态)
查看修改内容:git diff (查看工作区与暂存区的差异)
添加到暂存区:
添加指定文件:git add
添加所有变更:git add .
提交到本地仓库:git commit -m “提交说明”
查看提交历史:
完整日志:git log
简洁单行显示:git log --oneline
分支管理
查看分支:git branch (列出本地分支,带 * 为当前分支)
创建新分支:git branch
切换分支:git checkout 或 Git 2.23+ 推荐的新命令 git switch
创建并切换分支:git checkout -b 或 git switch -c
合并分支:git merge (将指定分支合并到当前分支)
删除分支:
删除已合并分支:git branch -d
强制删除未合并分支:git branch -D
远程仓库操作
查看远程仓库信息:git remote -v
获取远程更新(不合并):git fetch
拉取并合并远程代码:git pull
推送本地代码到远程:
常规推送:git push
首次推送并建立上游关联:git push -u origin
删除远程分支:git push origin --delete
撤销与回退(“后悔药”)
撤销工作区未提交的修改:git restore (或旧命令 git checkout – )
撤销已添加到暂存区的文件:git restore --staged (或旧命令 git reset HEAD )
修改最后一次提交信息或追加文件:git commit --amend
回退版本:
软回退(保留代码,仅撤销 commit):git reset --soft HEAD~1
硬回退(彻底抹除代码,恢复到上个版本,慎用):git reset --hard HEAD~1
撤销已推送到远程的提交:git revert (生成一个新的提交来撤销之前的更改,安全且不会重写历史记录)
代码暂存(Stash)
当你正在开发功能,突然需要去修复紧急 Bug,但当前代码还没写完无法 commit 时:
暂存当前修改:git stash
查看暂存记录:git stash list
恢复最近一次暂存并删除记录:git stash pop
