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 安装全局包,以避免与系统包管理器的冲突。

使用虚拟环境(推荐)

虚拟环境允许隔离项目依赖,避免包冲突。

sudo apt install python3-venv
python -m venv ~/.vpyenv
激活python虚拟环境:
source ~/.vpyenv/bin/activate
激活后会自动进入python虚拟环境,即执行上述命令后自动出现下面命令行:
(.vpyenv)$ 
安装某python包
(.vpyenv)$ pip install some-package

激活虚拟环境后,所有安装的包仅限于该环境。

# 退出虚拟环境
(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常用命令工具及问题解决方法

如果喜欢,给个赞。

posted @ 2025-08-12 17:06  hugingface  阅读(9)  评论(0)    收藏  举报