O processo tem mais sockets abertos do que deveria ser permitido por prlimit

2

Executando o debian jessie. O seguinte é feito como root para evitar quaisquer problemas de permissão. Primeiro eu encontro o pid do meu programa, então eu verifico o seu limite de arquivo aberto para verificar se ele está configurado para 1024. Mas quando eu conto o número de arquivos abertos, eu encontro 1851.

$ pgrep -x process_name
673
$ prlimit --pid 673 --nofile
RESOURCE DESCRIPTION              SOFT HARD UNITS
NOFILE   max number of open files 1024 4096 
$ lsof -n -p 673 | grep -c "IPv4"
1851

Para uma boa medida, eu verifico que o processo não possui nenhum subprocesso que possa estar delegando aberturas de arquivos para:

$ pgrep -P 673
# no output

O que está errado aqui?

    
por nullUser 05.05.2015 / 00:25

1 resposta

0

Porque na maneira como você está usando lsof , você está contando tudo, não apenas os descritores de arquivo, use algo assim:

lsof -n  -p <pid_number> | awk '$5 ~ /([0-9].+)/'

Mas a maneira mais fácil é:

ls -l /proc/673/fd | wc -l 
    
por 05.05.2015 / 01:49