C++:(6) 常用 linux 命令:进程管理、日志查看、网络端口与文件权限
本文摘要: 本文介绍了Linux系统管理中的核心命令,主要包含四个方面内容:1)进程管理(ps查看进程、top监控资源、kill终止进程);2)日志查看(tail实时跟踪、grep过滤搜索、less分页浏览);3)网络与端口(netstat/ss查看端口占用、curl测试接口);4)文件权限管理(chmod/chown权限控制、find/df/du文件查找与磁盘分析)。文章通过常用命令组合和实际案
·
1. 进程管理
1.1 ps (Process Status) - 静态查看
- 常用组合:ps -ef 或 ps aux
- ps -ef:显示所有进程的完整格式(UID, PID, PPID, CMD 等)。
- ps aux:显示更详细的资源占用(CPU%, MEM%)。
- 查找名为 c++ 的进程:
ps -ef | grep c++
# 或者排除 grep 自身进程
ps -ef | grep c++ | grep -v grep
- 追问:PID 和 PPID
- 答:PID 是进程 ID,PPID 是父进程 ID。如果父进程挂了,子进程通常会变成孤儿进程被 init/systemd 接管。
1.2 top / htop - 动态监控
- 作用:实时查看系统负载、CPU、内存使用情况。
- 关键操作:
- 进入后按
P:按 CPU 使用率排序。 - 进入后按
M:按内存使用率排序。 - 按
k:输入 PID 可以杀死进程。
- 进入后按
- 追问:
- "CPU 飙高到 100% 怎么排查?”
- 思路:
- top -> 找到高 CPU 的 PID
- -> top -H -p <PID> 查看该进程下的线程(-H:显示线程(H代表 Threads),否则默认只显示进程。-p <PID>:指定要监控的进程 ID,可跟多个 PID,用逗号分隔),找到高 CPU 的线程 ID (TID)
-
# 附加到进程(会暂停进程,生产环境谨慎) gdb -p <PID> # 在 gdb 中执行: (gdb) info threads # 查看所有线程及状态 (gdb) thread <线程编号> # 切换到高CPU线程 (gdb) bt # 查看调用堆栈 (gdb) bt full # 查看详细堆栈(含局部变量) (gdb) frame <帧编号> # 切换到具体栈帧 (gdb) print <变量名> # 查看变量值 (gdb) detach # 解除附加(恢复进程运行) (gdb) quit
1.3 kill - 杀死进程
- 常用命令:
- kill <PID>:默认发送 SIGTERM (15),优雅停止。
- kill -9 <PID>:发送 SIGKILL (9),强制杀死(慎用,可能导致数据丢失)。
- 追问:
- "kill -9 和 kill 有什么区别?”
- 答:kill 给进程信号让它自己清理资源后退出;kill -9 是内核直接杀掉进程,进程来不及做任何清理工作。
2. 日志查看
后端开发面试必问:“线上报错了,你怎么看日志?”
2.1 tail - 看末尾
- 核心命令:tail -f filename.log
- -f:实时滚动查看最新日志。
- -n 100:查看最后 100 行。
- 例:tail -f -n 200 error.log(实时查看最后 200 行)。
2.2 grep - 搜索过滤
- 核心命令:
- grep "Exception" app.log:查找包含 Exception 的行。
- grep -C 5 "Error" app.log:查看匹配行及其上下各 5 行(Context)。
- grep -v "INFO" app.log:排除包含 INFO 的行。
- 追问:
- “统计日志中 'ERROR' 出现的次数?”
- grep -c "ERROR" app.log
2.3 less / more - 分页查看大文件
- 区别:less 比 more 强大,支持上下翻页、搜索。
- 操作:
- /keyword:向下搜索关键字。
- ?keyword:向上搜索关键字。
- G:跳到底部,g:跳到顶部。
- 场景:日志文件几个 G 大时,严禁用 vim 打开,必须用 less。
3. 网络与端口
3.1 netstat / ss
- 常用命令:
- netstat -tunlp | grep <端口号>:查看哪个进程占用了指定端口。
- ss -tunlp:netstat 的现代替代品,速度更快。
- 参数解释:
- -t: TCP, -u: UDP, -n: 显示数字 IP, -l: 监听状态, -p: 显示进程 PID。
- 追问:
- “端口 8080 被占用了,怎么找出是谁占的?”
-
netstat -tunlp | grep 8080 # 拿到 PID 后,再用 ps -ef | grep PID 看是哪个服务
3.2 curl
- 作用:测试接口连通性。
- curl -I http://localhost:8080/health:只查看响应头(判断服务活没活)。
- curl -X POST -d "param=1" http://...:模拟 POST 请求。
3.3 ping / telnet / nc
- ping ip:测试网络通不通。
- telnet ip port 或 nc -zv ip port:测试特定端口通不通(比如数据库端口)。
4. 文件与权限
4.1 chmod / chown
- chmod 755 file.sh:赋予执行权限(rwx r-x r-x)拥有者、组、其他。
- chown user:group file:修改文件所有者。
4.2 find
- 场景:查找最近修改过的文件或大文件。
- find . -name "*.log":找当前目录下所有 log 文件。
- find . -size +100M:找大于 100M 的文件(清理磁盘空间必备)。
- find . -mtime -1:找最近 1 天内修改过的文件。
4.3 df / du
- df -h:查看磁盘整体使用率(Human-readable)。
- du -sh *:查看当前目录下每个文件夹的大小,定位哪个目录占满了磁盘。
更多推荐


所有评论(0)