https://blog.csdn.net/weixin_42031299/article/details/125016440
https://blog.csdn.net/oqqHuTu12345678/article/details/75098572
https://www.xjx100.cn/news/283088.html?action=onClick
https://www.cnblogs.com/DataArt/p/10089850.html

proc是什么

在linux系统/proc目录中一些文件,记录一些系统运行时的信息,比如内存信息、网络信息、cpu信息等,但是要注意的是,这个目录下并不是保存真正的文件或者目录,只是一个伪文件系统。它只是保存在内存中,不是持久化的文件。可以理解为内核开放的一个集中查询系统信息的地方,方便查找使用,符合linux文件系统的习惯。

  • 需要清楚的
    1)proc是基于内存的文件系统,所以文件大小都是0.
    2)系统中的top、ps等命令都是通过读取proc文件中的内容,通过重 新编码来显示的

proc目录说明

https://blog.csdn.net/cjdgg/article/details/119860355

/proc/self

/proc/self/目录,这个目录比较独特,不同的进程访问该目录时获得的信息时不同的,内容等价于/proc/本进程pid/。进程可以通过访问/proc/self/目录来获取自己的系统信息,而不用每次都获取pid。

/proc/self等同于/proc/$$

/proc/pid

https://blog.csdn.net/qq_21438461/article/details/129807412

挂载信息

https://blog.csdn.net/qq_21438461/article/details/129807412

  • mountinfo

对于第4项,如果是通过“绑定挂载”机制挂载的目录,则这里会显示目录本身在宿主里的全路径。

其它

task (线程)

https://www.zhihu.com/pin/1627119204166983680
/proc/pid/task/tid/即pid进程下的tid线程

  • 统计线程内存
#!/bin/bash

# 进程ID
PID=$1

# 检查是否提供了进程ID
if [ -z "$PID" ]; then
    echo "请提供进程ID作为第一个参数"
    exit 1
fi

# 检查进程是否存在
if [ ! -d "/proc/$PID" ]; then
    echo "进程ID不存在"
    exit 1
fi

# 打印每个线程的内存占用信息
for thread in /proc/$PID/task/*/; do
    STAT_FILE="$thread/stat"
    if [ -r "$STAT_FILE" ]; then
        # 读取线程的stat文件获取内存信息
        MEM_USAGE=$(grep -o '[0-9]\+' "$STAT_FILE" | head -n 22 | tail -n 1)
        echo "线程ID: $(basename $thread) 内存占用: $MEM_USAGE kB"
    fi
done

./watch_threads_memory.sh 进程ID

  • comm
    线程名

0 条评论

发表回复

您的电子邮箱地址不会被公开。