linux常用命令工具及问题解决方法系列2
1.grep正则过滤不包含某模式的字符串
grep 是一个强大的文本搜索工具,用于在文件中搜索匹配的行。-P 选项表示使用 Perl 兼容的正则表达式,-v 选项表示反向匹配,即匹配不包含指定模式的行。
grep -Pv 'pattern' file.txt
2.tree显示文件日期信息
执行命令tree -lD,其中:
-l:显示隐藏文件
-D:显示文件或目录的修改时间(包括创建和修改时间)
高级选项
排除特定文件/目录:-I 'node_modules'(排除node_modules目录) 2
限制显示深度:-L 2(仅显示当前目录及一级子目录) 2
显示文件大小:--du -h(以人类可读格式显示文件大小)
tree -lD --du -h
3.top查看进程的完整命令
top -c
4. pip安装python包报错:error: externally-managed-environment
当在新版 Linux 发行版(如 Ubuntu 23.04 或 Fedora 38)中运行 pip install 时,可能会遇到 error: externally-managed-environment 错误。这是由于系统限制直接使用 pip 安装全局包,以避免与系统包管理器的冲突。
使用虚拟环境(推荐)
虚拟环境允许隔离项目依赖,避免包冲突。
激活虚拟环境后,所有安装的包仅限于该环境。
# 退出虚拟环境
(venv) $ deactivate
5. $$ \begin{aligned} \end{aligned} $$属于什么语言格式?
LaTeX 语言格式,可以使用Pandoc将LaTeX格式转化为word格式。
6. 查找名为 "nginx" 的进程 ID
pgrep nginx
7.查看一个进程的内存分布
pmap 是一个专门用于报告进程内存映射的实用程序
# 假设 PID 是 12345
pmap -x 12345
或者直接查看 `/proc/[PID]/maps 文件
# 假设 PID 是 12345
cat /proc/12345/maps
12345: nginx: nginx worker process
Address Kbytes RSS Dirty Mode Mapping
0000556f8c000000 1024 1024 0 r-x-- /usr/sbin/nginx
0000556f8c100000 4 4 0 r---- /usr/sbin/nginx
0000556f8c101000 8 8 8 rw--- /usr/sbin/nginx
00007f9a80000000 131072 131072 131072 rw--- [ anon ]
...
total 132108 132108 131088
- Address:内存区域的起始虚拟地址。
- Kbytes:该内存区域的总大小(以 KB 为单位)。
- RSS (Resident Set Size):实际驻留在物理内存中的大小(以 KB 为单位)。
- Dirty:已修改的内存页大小。
- Mode (权限):内存权限(
r=读,w=写,x=执行,s=共享,p=私有)。 - Mapping:映射到的文件、库的名称,或者特殊区域(如
[ stack ]表示栈,[ heap ]表示堆,[ anon ]表示匿名内存映射,即动态分配的、不关联文件的内存)。 - total:所有映射区域的总计。
/proc/[PID]/smaps 文件提供了最详细的内核级别信息,包括该区域的私有内存、共享内存、交换空间使用量等。
smaps 仍然只提供元数据,无法告诉你程序在内存里存了什么具体的数据值。获取内存区域的具体内容 (使用 GDB 调试器)
使用 info proc mappings 命令,这与 pmap 类似,可以帮你找到感兴趣的 [ anon ] 区域的起始地址(例如 0x00007f9a80000000)
检查特定地址的内存内容:
一旦确定了地址范围,可以使用 GDB 的 x (examine memory) 命令来查看内存内容。例如,要查看从地址 0x00007f9a80000000 开始的内存,将其解释为 20 个 4 字节的整数 (/20dw):
(gdb) x/20dw 0x00007f9a80000000
或者查看作为字符串 (/s):
(gdb) x/s 0x00007f9a80000000
完成检查后,输入 detach 释放进程,然后输入 quit 退出 GDB。
(gdb) detach
(gdb) quit
linux常用命令工具及问题解决方法
如果喜欢,给个赞。

浙公网安备 33010602011771号