获取 PID 并读取每个 PID 的限制文件

Getting the PID and read the limits file for each PID

我正在尝试获取 PID 列表,然后从 /proc/<PID>/limits 文件中打印 Max open files

我找到了一种方法,但我想知道是否可以做一些更简单的事情。

它基本上会搜索 haproxy(本例中的睡眠 :D),搜索 Max open files,最后读取在第一个 awk 上匹配的所有进程的限制文件。

密码是:

ps aux | awk '/sleep/ && !/awk/ { print  }' | xargs -I{} awk '/Max open files/{ print "PID="{}"\t\t"[=10=] }' /proc/{}/limits

结果将是这样的:

PID=16      Max open files            1048576              1048576              files
PID=17      Max open files            1048576              1048576              files
PID=18      Max open files            1048576              1048576              files
PID=19      Max open files            1048576              1048576              files
PID=20      Max open files            1048576              1048576              files
PID=21      Max open files            1048576              1048576              files
PID=22      Max open files            1048576              1048576              files
PID=23      Max open files            1048576              1048576              files
PID=24      Max open files            1048576              1048576              files
PID=25      Max open files            1048576              1048576              files
PID=26      Max open files            1048576              1048576              files
PID=27      Max open files            1048576              1048576              files

如果您想缩短它的长度,您可以执行以下操作:

for pid in $(ps h -o pid -C sleep); do
    echo "PID=$pid\t\t$(grep 'Max open files' /proc/$pid/limits)"
done