Contando o número de arquivos abertos para cada usuário?

1

Estou à procura de um comando que me liste o número de arquivos abertos para cada usuário, classificado em ordem decrescente.

Por exemplo, lsof -u postgres | wc - os listaria apenas para o usuário postgres, mas eu quero ver em qual usuário posso perder os manipuladores.

Nota: algumas questões podem se aplicar a PIDs em vez de nomes de usuários, mas ainda assim, estou procurando por um único liner.

    
por sorin 04.01.2015 / 17:16

2 respostas

1

Se você está aberto ao pipe, que tal isso:

lsof | perl -pe 's / \ s \ s + / / g' | corte -d '' -f3 | grep -v ^ USER | classificar | uniq -c | sort -rn

Eu testei isso no MacOS 10.10.2 (Yosemite), OEL 6.6 e Ubuntu 10.04.01.

    
por 04.01.2015 / 17:34
1

Corri o roteiro de Warren Lavallee e achei difícil interpretar.

Em vez disso, eu estendi o script original para percorrer todos os usuários para fornecer o seguinte: -

for f in $(sed</etc/passwd 's/:.*$//g'); do ( echo -n $f ' '; lsof -u $f 2>/dev/null | wc -l ); done | grep -v ' 0$'

Isso funciona bem no Ubuntu 14.04. O% final grep remove as entradas zero, pois muitos usuários não terão processos ativos. Você também pode adicionar | sort -rnk 2 ao final do comando para classificar em ordem decrescente de contagem de arquivos.

Você precisará estar em um shell de root para ter certeza de poder ver os arquivos de todos os usuários.

    
por 04.01.2015 / 18:23

Tags