Linux 常用工具整理
1. C/C++ 编译工具
1.1 gcc/g++
描述: Linux 下 C/C++ 编译器,必备工具。
使用场景: 从简单的 helloworld.cpp 开始学习编译过程。
1.2 make
描述: 自动化构建工具,通过 Makefile 一键编译。
使用场景: 当项目有多个源文件时,使用 make 可以简化编译流程。
1.3 cmake
描述: 跨平台的构建工具,自动生成 Makefile。
使用场景: 适用于大型项目,简化 Makefile 的编写。
1.4 pkg-config
描述: 用于定位已安装库的头文件和库路径。
使用场景: 在编译时自动获取依赖库的编译和链接参数。
2. 代码调试工具
2.1 gdb
描述: GNU 调试器,用于调试 C/C++ 程序。
常用命令:break xxx.cpp:123 # 在文件 A 第 123 行打断点
break classA::funcB() # 在函数入口打断点
set print pretty # 设置输出格式
print *this # 查看类内函数所属类信息
info locals # 查看函数堆栈
2.2 strace
描述: 跟踪系统调用和信号,用于排查问题。
常用命令:strace ./xxxx # 启动跟踪系统调用
strace -p pid # attach 跟踪进程当前调用
strace -p pid -e read,write,xxxx # 过滤系统调用
2.3 Google Test (gtest)
描述: C++ 单元测试框架。
使用场景: 用于编写和运行单元测试。
2.4 进程查询
常用命令:ps -uax -p pid # 查询进程情况
pstree -uax # 显示进程树
2.5 top
描述: 实时监控系统进程。
常用命令:top # 查看全局进程
top -p pid # 查看指定进程
2.6 htop
描述: top 的增强版,提供更友好的界面。
常用命令:htop # 启动 htop
F4 # 输入名字过滤进程
2.7 /proc
描述: 虚拟文件系统,提供内核和进程信息的视图。
2.8 sar
描述: 系统性能监控工具,用于收集和报告系统活动。
3. 内存排查工具
3.1 free
描述: 查看系统内存使用情况。
3.2 mtrace
描述: 用于检测内存泄漏的工具。
3.3 valgrind
描述: 内存调试工具,用于检测内存泄漏和内存错误。
常用命令:valgrind \
--time-stamp=yes \
--leak-check=full \
--track-fds=yes \
--show-leak-kinds=all \
--tool=memcheck \
--memcheck \
--log-file=progress_valgrind.log \
./process
4. 文件排查工具
4.1 lsof
描述: 列出打开的文件和进程。
4.2 iostat
描述: 监控系统输入输出设备负载。
4.3 find
描述: 在目录树中查找文件。
4.4 tree
描述: 以树状图列出目录内容。
5. 网络查询工具
5.1 ip
描述: 显示和操作网络设备、路由、策略路由等。
5.2 ethtool
描述: 查询和设置网卡参数。
5.3 netstat
描述: 显示网络连接、路由表、接口统计信息等。
5.4 ss
描述: 用于查看网络连接的统计信息。
6. 防火墙工具
6.1 iptables
描述: 用于配置 Linux 内核防火墙规则。
7. 性能瓶颈分析工具
7.1 perf
描述: 性能分析工具,用于分析函数调用热点。
常用命令:perf top -p pid # 查看进程/线程的函数调用频率
perf record # 记录性能数据
perf stat # 统计性能事件
perf report # 生成报告
7.2 strace
描述: 跟踪系统调用,用于分析程序性能瓶颈。
7.3 gprof
描述: 性能分析工具,用于分析程序运行时的函数调用关系。
8. 日志轮转工具
8.1 savelog
描述: 用于保存和轮转日志文件。
8.2 logrotate
描述: 自动轮转、压缩、删除日志文件。
9. 定时任务工具
9.1 cron
描述: 用于定期执行脚本或命令。
9.2 systemd timer
描述: 比 cron 更强大的定时任务工具。
10. 容器工具
10.1 docker
描述: 容器化平台,用于构建、运行和管理容器。
常用操作: docker pull, docker run, docker build 等。
11. 终端复用工具
11.1 tmux
描述: 终端复用工具,允许在一个终端窗口中运行多个终端会话。
常用命令:tmux # 启动 tmux
11.2 Zellij
描述: 现代化的终端复用工具,功能类似于 tmux。
使用场景: 暂时没有经验。
12. 环境变量配置
12.1 env
描述: 终端复用工具,允许在一个终端窗口中运行多个终端会话。
常用命令:
# 基础用法
env # 列出所有环境变量
env -i # 清空环境变量后运行(无任何继承)
env -u VAR # 移除指定变量后运行
# 临时修改环境运行程序
env PATH=/custom/path myapp # 自定义 PATH 运行程序
env -i PATH=/bin:/usr/bin ls # 在纯净环境中执行命令
13. 其他shell小命令
13.1 watch
可以随时查看输出,并做对比
watch -d -t 30 "ps -uax |grep Progress |grep -v grep"
13.2 timeout
可以配合tcpdump实现抓包指定时长
timeout 30 tcpdump -i any port 30000 -w temp_30s.pcap