Получение PID и чтение файла ограничений для каждого PID - PullRequest
0 голосов
/ 25 апреля 2019

Я пытаюсь получить список 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

1 Ответ

0 голосов
/ 25 апреля 2019

Если вы хотите, чтобы он был короче, вы можете сделать следующее:

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