【问题标题】:How many open files for each process running for a specific user in Linux在 Linux 中为特定用户运行的每个进程有多少打开文件
【发布时间】:2013-09-18 06:55:44
【问题描述】:

在 Linux 上运行 Apache 和 Jboss,有时我的服务器会意外停止,说问题是打开的文件太多。

我知道我们可能会在 /etc/security/limits.conf 中为 nprocnofile 设置更高的限制来修复打开的问题文件问题,但我正在尝试获得更好的输出,例如使用 watch 实时监控它们。

通过这个命令行,我可以看到每个 PID 有多少打开的文件:

lsof -u apache | awk '{print $2}' | sort | uniq -c | sort -n

输出(第 1 列是用户 apache 打开的文件数):

1     PID
1335  13880
1389  13897
1392  13882

如果我可以只添加 watch 命令就足够了,但是下面的代码不起作用:

watch lsof -u apache | awk '{print $2}' | sort | uniq -c | sort -n

【问题讨论】:

    标签: linux lsof


    【解决方案1】:

    您应该将命令放在引号内,如下所示:

    watch 'lsof -u apache | awk '\''{print $2}'\'' | sort | uniq -c | sort -n'
    

    或者您可以将命令放入像 test.sh 这样的 shell 脚本中,然后使用 watch。

    chmod +x test.sh
    watch ./test.sh
    

    【讨论】:

      【解决方案2】:

      这个命令会告诉你Apache打开了多少文件:

      ps -A x |grep apache | awk '{print $1}' | xargs -I '{}' ls /proc/{}/fd  | wc -l
      

      您可能必须以 root 身份运行它才能访问进程 fd 目录。这听起来就像您有一个未关闭其文件描述符的 Web 应用程序。我将把精力集中在那个领域。

      【讨论】:

        猜你喜欢
        • 2011-02-10
        • 1970-01-01
        • 2020-05-04
        • 1970-01-01
        • 1970-01-01
        • 2012-10-02
        • 2014-03-26
        • 1970-01-01
        • 2010-09-18
        相关资源
        最近更新 更多