Como posso ver quais arquivos estão sendo lidos ou gravados por vez no Linux?

0

Estou executando um remix corporativo do Red Hat Enterprise Linux 6.7. De vez em quando, meu disco rígido fica mais lento devido a uma atividade de leitura de arquivos não sequencial, e acredito que pode ser devido a um aplicativo de imposição de segurança da estação de trabalho emitido pela empresa que não tenho permissão para desligar. Meu plano é determinar se um arquivo específico está sendo lido e, se esse for o caso, mova esses arquivos para um pen drive USB 3.0 para que eles possam ser lidos mais rapidamente do que em um disco rígido mecânico.

Eu procurei uma resposta sobre isso, mas a única alternativa parece estar usando o subsistema de auditoria do Linux ( auditd ), que não tenho certeza se será viável usando todo o meu sistema de arquivos raiz.

    
por RAKK 27.03.2017 / 17:04

1 resposta

0

Você pode usar inotifywait para ficar de olho nas leituras de arquivos. Infelizmente, a invocação óbvia falha na minha pequena VM após alguns minutos com o erro Couldn't watch /: Operation not permitted :

inotifywait --monitor --recursive --event access /

Isso funciona, no entanto:

find / -mount -type f |
    sort |
    inotifywait --fromfile - --monitor --recursive --event access

Por favor, esteja ciente de que você pode precisar aumentar o número padrão de relógios de diretório. Este pequeno trecho de código mostrará o que você configurou e o que você precisa, e aumentará se necessário:

need=$(find / -mount -type d | wc -l)
got=$(cat /proc/sys/fs/inotify/max_user_watches)
echo "Got $got and need $need watches"

[[ $need -gt $got ]] && echo $((need + 100)) >/proc/sys/fs/inotify/max_user_watches
    
por 27.03.2017 / 18:38