AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 439705
Accepted
Martin
Martin
Asked: 2012-10-19 02:24:28 +0800 CST2012-10-19 02:24:28 +0800 CST 2012-10-19 02:24:28 +0800 CST

递归 grep 开始于/挂起

  • 772

我在多个平台上使用了以下 grep 搜索模式:

grep -r -I -D skip 'string_to_match' /

例如在FreeBSD 8.0、FreeBSD 6.4和Debian 6.0 (squeeze) 上。命令从根目录开始进行递归搜索,假定二进制文件没有“string_to_match”并跳过设备、套接字和命名管道。FreeBSD 8.0和FreeBSD 6.4使用 GNU grep 2.5.1 版,Debian 6.0使用 GNU grep 2.6.3 版。在FreeBSD 6.4上,最后打印到 stderr 的信息是"grep: /dev/cuad0: Device busy"。在此 grep 之后,根据“top -m io -o total”,grep 的 I/O 使用情况不存在。在FreeBSD 8.0下同样的行为是正确的,但最后发送到 stderr 的信息是在我的安装中出现“grep: /tmp/.wine-0: Permission denied” 。在 Debian 的情况下,stderr 的最后输出是"grep: /proc/sysrq-trigger: Input/output error"。如果我在 Debian 下检查 grep 进程的 I/O 使用情况,它如下:

root@Debian:~# iotop -bp 22439
Total DISK READ: 0.00 B/s | Total DISK WRITE: 0.00 B/s
  TID  PRIO  USER     DISK READ  DISK WRITE  SWAPIN      IO    COMMAND
22439 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % grep -r -I
-D skip 10.10.10.99 /
Total DISK READ: 0.00 B/s | Total DISK WRITE: 0.00 B/s
  TID  PRIO  USER     DISK READ  DISK WRITE  SWAPIN      IO    COMMAND
22439 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % grep -r -I
-D skip 10.10.10.99 /
Total DISK READ: 0.00 B/s | Total DISK WRITE: 0.00 B/s
  TID  PRIO  USER     DISK READ  DISK WRITE  SWAPIN      IO    COMMAND
22439 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % grep -r -I
-D skip 10.10.10.99 /
^Croot@Debian:~#

这可能是什么原因造成的?如果lsof不存在,有没有办法查看grep当前正在处理哪个文件?我可以在 Debian 下使用lsof,看起来有问题的文件名是“0xc6b2c230 文件结构,ty=0,op=0xc0d34120”。我不确定这是什么。我无法在 FreeBSD 下使用lsof或fstat。

PS:我知道我可以使用find实用程序,但这不是问题所在。

debian
  • 1 1 个回答
  • 1259 Views

1 个回答

  • Voted
  1. Best Answer
    chutz
    2012-10-19T02:40:15+08:002012-10-19T02:40:15+08:00

    在 Linux 上,lsof您可以列出/proc/$(pgrep grep)/fd. 您应该看到该进程的每个打开文件描述符的符号链接,它将指向它对应的文件。以下是这对我所做的示例:

    $ ls -gG /proc/$(pgrep grep)/fd
    total 0
    lrwx------ 1 64 Oct 18 19:39 0 -> /dev/pts/2
    lrwx------ 1 64 Oct 18 19:39 1 -> /dev/pts/2
    lrwx------ 1 64 Oct 18 19:39 2 -> /dev/pts/2
    lr-x------ 1 64 Oct 18 19:39 3 -> /usr/share/groff/1.18.1.4/font/devdvi/generate/texb.map
    
    • 1

相关问题

  • 关闭 FTP

  • 如何在同一台电脑上从 putty 连接 debian vmware

  • debian- 文件到包的映射

  • Debian Ubuntu 网络管理器错误 [关闭]

  • 为本地网络中的名称解析添加自定义 dns 条目

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve