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
浙公网安备 33010602011771号