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

问题描述 投票:0回答:1

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

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

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

代码是:

ps aux | awk '/sleep/ && !/awk/ { print $2 }' | xargs -I{} awk '/Max open files/{ print "PID="{}"\t\t"$0 }' /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
bash awk xargs ps ulimit
1个回答
0
投票

如果您想让它更短,您可以执行以下操作:

for pid in $(ps h -o pid -C sleep); do
    echo "PID=$pid\t\t$(grep 'Max open files' /proc/$pid/limits)"
done
© www.soinside.com 2019 - 2024. All rights reserved.