Ferramenta Unix para monitorar muitos arquivos abertos?

1

Estou procurando uma ferramenta que possa monitorar se um processo está próximo do limite máximo de arquivos abertos.

    
por Robert Grezan 13.08.2011 / 11:46

2 respostas

2
lsof -p process-id

Da página do manual

Lsof lists on its standard output file information about files opened by processes

[...]

       -p s     This option excludes or selects the listing of files  for  the
                processes  whose optional process IDentification (PID) numbers
                are  in  the  comma-separated  set  s  -  e.g.,   ''123''   or
                ''123,^456''.  (There should be no spaces in the set.)

                PID  numbers  that  begin with '^' (negation) represent exclu-
                sions.

                Multiple process ID numbers are joined in a  single  ORed  set
                before  participating  in  AND option selection.  However, PID
                exclusions are applied without ORing or ANDing and take effect
                before other selection criteria are applied.

[...]

       +|-r [t[m]]
                This option puts lsof in repeat mode.  There lsof  lists  open
                files  as selected by other options, delays t seconds (default
                fifteen), then  repeats  the  listing,  delaying  and  listing
                repetitively  until stopped by a condition defined by the pre-
                fix to the option.

                If the prefix is a '-', repeat mode is endless.  Lsof must  be
                terminated with an interrupt or quit signal.

                If  the prefix is '+', repeat mode will end the first cycle no
                open files are listed
    
por 13.08.2011 / 12:19
0

rodar isso como root lhe daria o número de arquivos abertos abertos pelo processo com o maior número de arquivos abertos. Como na verdade ele não segue os links na árvore proc, ele se move muito mais rápido que o lsof e cobre todos os processos em execução na caixa. No entanto, ele precisa ser executado como root.

find /proc/*/fd -type l -print | awk -F/ '{print $3}' | sort | uniq -c | sort -n | tail -1
    
por 06.06.2018 / 19:45

Tags