资讯动态

【Linux基础回顾与总结】

发布时间:2026/10/27 1:18:02 来源:尧图企业网站定制
目录Linux看进程里的线程信息查看/proc/直接读取内核信息使用ps查看线程内存使用top动态监控线程内存使用htop更友好的交互式工具使用pmap查看线程的详细内存映射使用valgrind高级内存分析结合 gdb 调试线程Linux下查看二进制文件信息nmobjdumpreadelffilelddLinux查找findgrepwhichwhereislocateC api错误码标题标题Linux目录结构根目录系统核心目录用户相关目录临时与挂载目录Linux看进程里的线程信息获取进程PID的一些方法psaux|grepprocess_name pidof process_name# 适用于精确匹配程序名pgrep-fprocess_name# 简洁列出所有线程IDTID的一些方法ls/proc/PID/task/# 一般输出主线程 子线程ps-eLf|grepPIDps-T-pPID# SPID是线程IDps-Lpid# LWP轻量级进程ID即线程 IDpstree-ppid# 以树形结构展示进程和线程的层级关系清晰直观查看/proc/直接读取内核信息proc/PID/cmdline是一个只读文件包含进程的完整命令行信息。如果这个进程是zombie进程则这个文件没有任何内容。/proc/PID/comm包含进程的命令名。/proc/PID/environ显示进程的环境变量。/proc/PID/fd是一个目录包含进程打开文件的情况。/proc/PID/latency显示哪些代码造成的延时比较大。/proc/PID/maps显示进程的内存区域映射信息。每个线程的内存信息存储在 /proc/PID/task/TID/status 中关键字段包括VmRSS实际使用的物理内存Resident Set Size。VmSize虚拟内存大小包括共享库、堆、栈等。VmStk栈内存大小。VmData数据段内存大小。VmExe可执行文件占用的内存。查看每个线程的内存占用cat/proc/PID/task/TID/status|grep-EVmRSS|VmSize批量查看所有线程的内存脚本示例PID12345forTIDin$(ls/proc/$PID/task/);doecho-nThread$TID: grep-EVmRSS|VmSize/proc/$PID/task/$TID/statusdone使用ps查看线程内存ps 命令可以显示线程的 RSS物理内存占用和 VSZ虚拟内存占用ps-eLf--sort-rss|grepprocess_name或更详细地显示所有线程的内存ps-opid,tid,rss,vsz,cmd-L-pPID使用top动态监控线程内存top -H 可以实时查看线程的内存占用top-H-pPID按Shift E 切换内存单位KB/MB/GB…按Shift M 按内存排序按Shift H 键在进程视图和线程视图之间切换VIRT VmSizevirtual memory usage 虚拟内存进程“需要的”虚拟内存大小包括进程使用的库、代码、数据等假如进程申请100m的内存但实际只使用了10m那么它会增长100m而不是实际的使用量RES VmRSSresident memory usage 常驻内存/物理内存进程当前使用的内存大小但不包括swap out包含其他进程的共享如果申请100m的内存实际使用10m它只增长10m与VIRT相反关于库占用内存的情况它只统计加载的库文件所占内存大小SHRshared memory 共享内存除了自身进程的共享内存也包括其他进程的共享内存虽然进程只使用了几个共享库的函数但它包含了整个共享库的大小计算某个进程所占的物理内存大小公式RES – SHRswap out后它将会降下来使用htop更友好的交互式工具htop是top的增强版可交互式查看线程内存在命令终端直接输入htop按 F2 → Display Options → 勾选 “Show custom thread names” 和 “Highlight threads”F5树形视图、F6按内存排序、F4输入PID过滤目标进程htop-ppid# 直接过滤指定进程查看其线程使用pmap查看线程的详细内存映射pmap 可以显示每个线程的内存映射情况但并不是所有系统都支持pmap-xTID# 查看 TID 的内存映射使用valgrind高级内存分析如果需要更详细的内存泄漏分析可以使用 valgrindvalgrind--toolmassif ./test_program然后使用 ms_print 分析结果ms_print massif.out.PID#massif.out.PID文件可先在当前路径下找结合 gdb 调试线程如果需要调试线程可以使用gdbgdb-pPID然后在 gdb 中info threads查看所有线程thread N切换到线程 NN指前面的序号bt查看线程调用栈oom_score_adj 参考https://www.jianshu.com/p/bbaeff371019Linux下查看二进制文件信息nm查看二进制文件里的符号信息函数名、变量名等符号及其类型和地址用途找函数是否存在、变量是否定义、排查未定义引用常用选项-C对C符号进行解码使其更易读-D显示动态符号用于动态库objdump用于显示二进制文件的详细信息主要功能包括反汇编、查看文件头、节信息、符号表、重定位信息等常用选项-d以汇编代码形式显示代码段反汇编-S显示源代码与汇编代码的混合模式-f显示文件头信息文件类型、架构、入口点等-x显示所有头信息readelf专门查看 ELFExecutable and Linkable Format文件Linux 标准二进制格式详细信息如文件头、节表、符号表等用途分析 ELF 结构、查看依赖库、检查文件格式常用选项-h显示ELF文件头信息类型、架构、入口地址等-S显示节信息.text、.data、.rodata等-l显示程序头表信息内存布局和加载方式-s显示符号表信息函数、全局变量等-d显示动态段依赖库、RPATH、SONAME等file根据文件的内容而非扩展名来判断文件的实际类型例如判断一个未知文件是否可执行文件、脚本、动态/静态链接、是否stripped…ldd用于显示程序或共享库所依赖的动态链接库等同于 objdump -x lib***.so | grep NEEDEDLinux查找find实时遍历磁盘按条件名称、类型、大小、时间等查找文件 / 目录例如find /home -name “*.txt”查找/home下所有.txt文件grep在文件中搜索指定字符串 / 正则过滤文本例如grep “error” /var/log/syslog在日志文件中查找包含error的行which在系统的PATH环境变量中查找命令的完整路径仅搜索可执行文件例如which ls显示ls命令的完整路径whereis查找命令的二进制文件、源代码和帮助文件路径搜索范围比which更广例如whereis gcc显示gcc命令的可执行文件、源码和帮助文件路径locate基于数据库的快速文件搜索工具比find更快但非实时因为它搜索的是预先构建的文件索引数据库需要先运行updatedb更新数据库例如locate config快速查找包含config的文件路径find功能最全面但速度较慢locate最快但需要更新数据库grep用于文本内容搜索which和whereis主要用于查找命令路径。C api错误码调用linux C api函数发生异常时,一般会将errno变量(需include errno.h)赋一个整数值,不同的值表示不同的含义,可以通过查看该值推测出错的原因例fd open() if (fd 0) { perror(Open); }错误码参考https://blog.csdn.net/weixin_29345997/article/details/116728892标题内容标题内容Linux目录结构Linux采用树形层次目录体系所有文件和目录从根目录/开始分支延伸。ls /得到Linux目录根目录/整个文件系统的起点所有其他目录和文件都从这里开始系统核心目录/bin存放所有用户都能使用的基本命令二进制文件如ls、cp、mv、rm等/sbin存放仅系统管理员root使用的系统管理命令如reboot、shutdown等/boot存放系统启动相关文件Linux内核文件、引导加载程序等/dev存放设备文件将硬件设备抽象为文件形式如硬盘/dev/sda、键盘/dev/tty、U盘/dev/sdb/etc存放系统全局配置文件无二进制程序如/etc/passwd、/etc/hosts等/lib存放系统运行(如/bin和/sbin命令)所需的共享库文件.so类似 Windows 的 DLL。/lib6464 位系统专用库目录/proc虚拟文件系统实时显示内核和进程信息如/proc/cpuinfo、/proc/meminfo不占实际磁盘/sys虚拟文件系统提供内核和设备的详细信息管理硬件设备的内核接口不占实际磁盘/usrUnix Software Resource存放用户应用程序、库文件及源码等/usr/bin更多用户命令/usr/sbin更多系统管理命令/usr/lib应用库/usr/share文档、图标、帮助等共享数据/usr/local手动编译安装软件的默认位置用户相关目录/home普通用户主目录每个用户有独立的子目录如/home/zhangsan存放用户文件、配置。/root系统管理员(超级权限用户)的主目录为了安全独立于普通用户不放在/home下。临时与挂载目录/media系统自动挂载可移动设备如U盘、光盘、移动硬盘的目录/mnt管理员临时手动挂载其他文件系统的目录如挂载硬盘、网络共享/opt存放可选的附加软件包通常是第三方大型软件安装地如Oracle、Chrome/tmp存放临时文件系统重启后会被清空/run系统运行时临时数据进程 PID、锁文件、套接字重启后重建/var存放经常变化的文件如日志文件/var/log、缓存文件/var/cache等/srv存放本机服务提供的数据如网站文件、FTP 共享数据本文内容参考公开技术文档如有侵权请联系删除。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑