代码之家  ›  专栏  ›  技术社区  ›  LOrD_ARaGOrN

Shell脚本:如何获取使用文件系统/目录的所有进程Id

  •  0
  • LOrD_ARaGOrN  · 技术社区  · 7 年前

    我正在检查使用文件系统的进程。现在,当我做fuser时,有数百个进程即将到来。

    fuser -cu /xyz
    

    输出被截断:

    393ce(xyz)  1044c(root)  1068cm(oracle)  2065ce(xyz)  3729ce(xyz)
    

    我只想在文件中用换行符分隔进程id,这样我就可以运行一个循环来检查进程。

    1 回复  |  直到 7 年前
        1
  •  2
  •   Socowi    7 年前

    如果你只想 id id(user) 那就不要用这个 -u 选项文件 fuser -u

    -u、 --用户
    将进程所有者的用户名附加到每个PID。

    fuser -c / 具有与您的示例不同的格式。每个id后面都有表示访问类型的字母。这些信被印成 stderr ,因此我将使用 2>&- 把它们藏起来。

    $ fuser -c /
    /:                    1717rce  1754rce  1765rce  1785rce  ...
    $ fuser -c / 2>&-
      1717  1754  1765  1785  ...
    

    你可以用 grep 要每行打印一个id:

    $ fuser -c / 2>&- | grep -o '[0-9]*'
    1717
    1754
    1765
    1785
    ...
    

    for id in $(fuser -c / 2>&-); do
        echo "id = $id"
    done
    
    推荐文章