Linux常用工具整理

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
posted on 2025-03-14 00:23  风惊庭前叶  阅读(354)  评论(0)    收藏  举报