4.2、ps(查看进程状态)

  • 用途:显示系统中运行的进程及其相关信息,如 PID(进程 ID)、CPU 使用率、内存占用等。

  • 常见用法:

    ps aux       # 显示所有进程,包含用户、PID、CPU/内存使用情况等
    ps -ef # 以完整格式显示所有进程,并包含父子进程信息
    ps -e --forest # 以树状结构显示进程关系
    ps aux | grep nginx
  • 示例输出:

    USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
    root 1 0.0 0.1 16516 2824 ? Ss 10:00 0:01 /sbin/init
    root 1024 0.1 0.2 54392 5024 ? Ss 10:05 0:02 sshd: root@pts/0

4.3、kill(终止进程)

  • 用途:结束指定的进程。

  • 使用:

    sh复制编辑kill -9 1234  # 强制杀死进程 1234
    kill -15 1234 # 优雅地终止进程
    killall firefox # 结束所有名为 firefox 的进程

4.4、lsof(列出打开的文件)

  • 用途:显示当前系统中打开的文件(包括进程打开的文件、网络端口等)。

  • 使用:

    lsof -p 1234    # 查看进程 1234 打开的文件
    lsof -i :80 # 查看占用 80 端口的进程
    lsof /var/log/syslog # 查看哪个进程在使用某个文件

4.5、df(查看磁盘使用情况)

  • 用途:检查磁盘空间占用情况。

  • 使用:

    df -h
  • 示例输出:

    Filesystem      Size  Used Avail Use% Mounted on
    /dev/sda1 50G 10G 40G 20% /

4.6、du(查看目录大小)

  • 用途:查看目录和文件的大小。

  • 使用:

    du -sh /var/log

4.7、netstat(查看网络连接)

  • 用途:显示网络端口、连接状态。

  • 使用:

    netstat -tulnp  # 显示监听的 TCP/UDP 端口

4.8、ss(查看套接字状态,替代 netstat

  • 用途:显示 TCP/UDP 连接信息,比 netstat 更高效。

  • 使用:

    ss -tulnp

4.9、traceroute(跟踪数据包路径)

  • 用途:查看数据包经过的路由。

  • 安装:

    sudo apt install traceroute
  • 使用:

    traceroute google.com

4.10、free(查看内存使用)

  • 用途:显示系统内存占用情况。

  • 使用:

    free -h
  • 示例输出:

                total        used        free
    Mem: 8.0G 3.2G 4.8G

4.11、vmstat(查看系统资源使用情况)

  • 用途:分析 CPU、内存、I/O 使用情况。

  • 使用:

    vmstat 1 5

4.12、uname(查看系统信息)

  • 用途:查看 Linux 内核版本、架构。

  • 使用:

    uname -a

4.13、dmesg(查看内核日志)

  • 用途:查看系统启动日志、硬件信息。

  • 使用:

    dmesg | tail -20

4.14、uptime(查看系统运行时间)

  • 用途:显示系统运行时长和负载情况。

  • 使用:

    uptime

4.15、ltrace(库调用跟踪)

  • 用途:跟踪进程的库函数调用(strace 跟踪的是系统调用)。

  • 安装:

    sudo apt install ltrace
  • 使用:

    ltrace ./my_program
  • 示例:

    ltrace ls

    输出:

    __libc_start_main(0x561bc8, 1, 0x7ffc, 0x561bc8, 0, 0, 0) = 0
    opendir(".") = 0x561bc8
    readdir(0x561bc8) = 0x561bc8
    closedir(0x561bc8) = 0

    区别:

    • strace 追踪系统调用,例如 openat()
    • ltrace 追踪库函数调用,例如 opendir()

4.16、perf(系统性能分析)

  • 用途:分析 CPU 事件、函数调用频率、进程性能。

  • 安装:

    sudo apt install linux-tools-common linux-tools-generic
  • 使用:

    perf record -g ./my_program
    perf report

    输出:

    30%  my_program  [.] main
    20% my_program [.] process_data

    说明:

    • 30% 的 CPU 时间在 main 函数中
    • 20% 的 CPU 时间在 process_data 函数中

4.17、iostat(I/O 性能分析)

  • 用途:分析磁盘 I/O 读写性能。

  • 安装:

    sudo apt install sysstat
  • 使用:

    iostat -x 1

    关键指标:

    • r/s(读取请求数)
    • w/s(写入请求数)
    • %util(磁盘利用率)

4.18、valgrind(内存泄漏检测)

  • 用途:检测 C/C++ 程序中的内存泄漏、野指针、未初始化变量等问题。

  • 安装:

    sudo apt install valgrind
  • 使用:

    valgrind --leak-check=full ./my_program
  • 示例输出:

    ==1234== 10 bytes in 1 blocks are definitely lost in loss record 1 of 1
    ==1234== at 0x4C2EAF6: malloc (vg_replace_malloc.c:299)
    ==1234== by 0x400611: main (test.c:6)

    说明:

    • malloc() 申请的 10 字节没有释放,可能有内存泄漏

4.19、ping(测试网络连通性)

  • 用途:测试目标主机是否可达。

  • 使用:

    ping 8.8.8.8

五、Linux系统常用调试工具的更多相关文章

  1. Linux 学习手记(4):Linux系统常用Shell命令

    日期时间 date命令:显示当前时间日期 date -u # 显示格林威治(UTC)事件 date +%Y-%m-%d # 格式显示日期 date -s '20:25:25' # 修改系统时间,需要使 ...

  2. Linux系统常用升级的基础包

    Linux系统常用升级的基础包 yum -y install lrzsz gcc gcc-c++ make flex autoconf automake vixie-cron libjpeg libj ...

  3. linux系统常用的基本命令分类

    linux系统常用的基本命令分类: 文件命令:vim vimdiff diff mkdir touch rm mv cp ln cd ls more less head tail cat grep e ...

  4. 9个Linux系统常用监控命令

    我们的系统一旦上线跑起来我们自然希望它一直相安无事,不要宕机,不要无响应,不要慢腾腾的.但是这不是打开机器电源然后放任不管就可以得到的.所以我们要监视系统的运行状况,发现问题及时处理. 对于系统和网络 ...

  5. linux linux系统常用设置

    linux  linux系统常用设置 一.设置开机时开启数字键 修改rc.local文件 命令:vi  /etc/rc.local rc.local文件中增加如下代码: INITTY=/dev/tty ...

  6. 一文详解 Linux 系统常用监控工一文详解 Linux 系统常用监控工具(top,htop,iotop,iftop)具(top,htop,iotop,iftop)

    一文详解 Linux 系统常用监控工具(top,htop,iotop,iftop)     概 述 本文主要记录一下 Linux 系统上一些常用的系统监控工具,非常好用.正所谓磨刀不误砍柴工,花点时间 ...

  7. Linux系统常用命令权威指南

    <一>线上查询及帮助命令(2)1.man man [选项] [命令] 查看命令帮助,命令的词典,更复杂的还有info,但不常用. #man cd-a 显示所有的手册页,不只是显示第一个-f ...

  8. 100个linux系统常用指令

    1.ls [选项] [目录名 | 列出相关目录下的所有目录和文件 -a 列出包括.a开头的隐藏文件的所有文件-A 通-a,但不列出"."和".."-l 列出文件 ...

  9. linux系统——网络调试工具

    http://blog.csdn.net/chinalinuxzend/article/details/1799279 1.网络调试工具概说: 如 果我们把一台机器接入网络中,通过网络配置工具的配置这 ...

  10. Linux 系统常用管理命令(精简笔记)

    Linux是一套免费使用和自由传播的类Unix操作系统,下面的笔记是我从鸟菜中摘抄出来的重要命令,并进行了一定的排版,摒弃了一些用不到的乱七八糟的命令,目的是在生产环境中能够快速的定位并查询需要命令的 ...

随机推荐

  1. Delphi 数据库连接查询分析器

    为了方便自己查询数据库信息,花了小时间写了小工具,添加SQL语法高亮显示功能

  2. BUUCTF---密码学的心声

    题目 打开题目获取一个BMP的格式图片,根据歌词尝试转换成ASCII码 转ASCII码 将曲谱上面转化,发现是8进制从而转为ASCII码 点击查看代码 nums = [111, 114, 157, 1 ...

  3. BFS 2025/1/16

    BFS Basic 主要特点:空间复杂度较高,基于队列 经常用于求最优解的搜索题 经典模型:连通块,最短迷宫路径,曼哈顿距离 Question 01 [ACP2056 山峰与山谷] 主体是广搜模板 难 ...

  4. 简单实现Android的本地文件读写,暨将List数据保存到Json文件中并读出

    一.让我们从引入依赖开始 //将这两行代码添加到以上位置,其他的一般不用管 implementation 'com.google.code.gson:gson:2.8.5' implementatio ...

  5. 时区转换工具+PWA离线网页

    时区转换工具+PWA离线网页 一.时区转换工具对比 工具 说明 Date 原生 JS API,有限的时区支持,无法指定时区,仅使用本地时区. Intl.DateTimeFormat 原生格式化显示,可 ...

  6. RocketMQ的Producer是如何发送消息的

    RocketMQ 的 Producer 发送消息过程涉及多个步骤,包括初始化.消息创建.发送方式选择 1.Producer初始化 首先,我们需要创建并初始化一个Producer示例 这段代码完成了以下 ...

  7. STM32 开发环境用哪个呢?

    我的STM32开发环境血泪史:从入门到精通,少走弯路才是硬道理 说起STM32开发环境的选择,我真是有太多想说的了.作为一个已经在嵌入式领域摸爬滚打近十年的老兵,从当年刚入行时的懵懂无知,到现在能够从 ...

  8. DPDI(Dispatch PDI)kettle调度管理平台之实操演练第003讲-数据通途:客户端连接SQL Server的完美攻略

    SQL Server简介 基本概念 SQL Server是由微软公司开发的关系型数据库管理系统.它基于SQL(Structured Query Language,结构化查询语言)来管理和操作数据.SQ ...

  9. DPDI Online在线kettle调度工具

    1. DPDI简介 DPDI Online 是一款基于Kettle的强大在线任务调度平台,凭借其高效与灵活性,专为调度和监控Kettle客户端生成的ETL任务而设计 2. DPDI使用 2.1 DPD ...

  10. wpf 代码判断当前是否在设计模式,兼容没有UI线程的限制

    /// <summary> /// 当前是否处于设计模式 /// </summary> bool IsInDesignMode { get { return (bool)Des ...