Arquivos do usuário X
Se você precisar ver apenas arquivos abertos de um único usuário:
$ lsof -u<user>
Ou apenas arquivos com um descritor de arquivo de texto (geralmente arquivos reais):
$ lsof -a -u<user> -d txt
Exemplo
Todos os arquivos em uso pelo usuário saml
.
$ lsof -usaml
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
vim 1341 saml cwd DIR 253,2 4096 10370078 /home/saml/mp3s
vim 1341 saml rtd DIR 253,0 4096 2 /
vim 1341 saml txt REG 253,0 2105272 1215334 /usr/bin/vim
vim 1341 saml mem REG 253,0 237616 393586 /lib64/libgssapi_krb5.so.2.2
Somente arquivos usando um descritor de texto e são de propriedade do usuário saml
.
$ lsof -a -usaml -d txt
Output information may be incomplete.
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
vim 1341 saml txt REG 253,0 2105272 1215334 /usr/bin/vim
bash 1468 saml txt REG 253,0 940312 2490450 /bin/bash
gvfsd-htt 1777 saml txt REG 253,0 179528 1209465 /usr/libexec/gvfsd-http
gnome-key 2051 saml txt REG 253,0 953664 1214068 /usr/bin/gnome-keyring-daemon
...
lsof como root
Normalmente, você desejará executar lsof
com privilégios elevados, para que possa ver todos os arquivos em um sistema pertencente a um processo ou raiz do Apache, por exemplo.
$ sudo lsof
Você também pode usar lsof
para trás e descobrir qual processo abriu um determinado arquivo.
$ sudo lsof /var/log/messages
Output information may be incomplete.
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
rsyslogd 1266 root 4w REG 253,0 372306 1973825 /var/log/messages
lsof como topo
Você também pode usar lsof
da mesma forma que top
, onde ele pesquisará cada segundo e mostrará o que está acontecendo em seu sistema.
$ sudo lsof -u saml -c sleep -a -r5
Exemplo
O argumento -c ...
mostra apenas processos com a string ...
em seu nome. Aqui estou usando o comando sleep
para mostrar isso. Eu corro o comando lsof
, que pesquisa a cada 5 segundos, e mostra todos os arquivos abertos por qualquer processo com a cadeia de suspensão neles. Em seguida, executei sleep 5
em outro terminal.
$ sudo lsof -u saml -c sleep -a -r5
Output information may be incomplete.
=======
=======
=======
=======
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
sleep 10780 saml cwd DIR 253,2 32768 10354689 /home/saml
sleep 10780 saml rtd DIR 253,0 4096 2 /
sleep 10780 saml txt REG 253,0 27912 2490470 /bin/sleep
sleep 10780 saml mem REG 253,0 151456 393578 /lib64/ld-2.13.so
sleep 10780 saml mem REG 253,0 1956608 393664 /lib64/libc-2.13.so
sleep 10780 saml mem REG 253,0 99158752 1209621 /usr/lib/locale/locale-archive
sleep 10780 saml 0u CHR 136,59 0t0 62 /dev/pts/59
sleep 10780 saml 1u CHR 136,59 0t0 62 /dev/pts/59
sleep 10780 saml 2u CHR 136,59 0t0 62 /dev/pts/59
=======
=======
=======
=======
arquivos de log
Você pode usar lsof
para encontrar arquivos de log simplesmente digitando qualquer uma das saídas acima para os nomes dos arquivos de log que você está interessado em ver o que está acontecendo.
$ lsof .... | grep "log file name"