Pergunta

O fuser comando permite-me saber quais processos estão usando um arquivo ou diretório.

Eu estou procurando comando que faz o oposto:. Permite-me saber quais arquivos estão sendo usados ??por um processo


Atualização

Esqueceu-se de mencionar que é para um sistema Solaris.

Foi útil?

Solução

Enquanto eu não invejo ninguém aprendendo Dtrace ou ganhar experiência na instalação de software, em Solaris existe é um comando para ver os arquivos de um processo tem aberto: / Usr / bin / pfiles

% tail -f /etc/motd &
[1] 6033

% pfiles 6033
6033:   tail -f /etc/motd

      Current rlimit: 256 file descriptors
       0: S_IFREG mode:0644 dev:182,65538 ino:163065 uid:0 gid:3 size:54
          O_RDONLY|O_LARGEFILE
          /etc/motd
       1: S_IFCHR mode:0620 dev:299,0 ino:718837882 uid:101 gid:7 rdev:24,3
          O_RDWR|O_NOCTTY|O_LARGEFILE
          /dev/pts/3
       2: S_IFCHR mode:0620 dev:299,0 ino:718837882 uid:101 gid:7 rdev:24,3
          O_RDWR|O_NOCTTY|O_LARGEFILE
          /dev/pts/3

Outras dicas

lsof -p <pid>

A partir aqui

lsof significa “ Lista de arquivos abertos ”. Este comando shell parece enganosamente simples: Ele lista informações sobre arquivos abertos por processos em uma caixa de UNIX

.

Apesar de sua declaração (aparente) missão modesta, lsof é realmente um dos comandos UNIX mais poderosas e úteis. Sua força bruta vem de um princípio de projeto do UNIX muitas vezes descrita como “em UNIX tudo é um arquivo”. O que isto significa é que o conceito lsof de um arquivo aberto não só abrange arquivos regulares, mas também o seguinte:

  • Directories
  • Streams ou arquivos de rede (por exemplo, Internet ou soquetes de domínio UNIX e arquivos NFS)
  • bibliotecas nativas (por exemplo, .soor bibliotecas .dylibdynamic ligado a um processo)
  • Block e arquivos de caracteres especiais (por exemplo, volume de disco, disco rígido externo, console, ou mouse)
  • Pipes

Espere, eu não consigo encontrar lsof no meu sistema!

lsof é uma ferramenta tão popular que foi portado para praticamente todos os dialetos UNIX (Linux, Mac OS X, BSD, Solaris, e assim por diante). Se ele não estiver disponível em sua caixa, use o seu sistema de gerenciamento de pacotes de costume para instalá-lo. Você pode encontrar lsof pacotes para Solaris em Sun freeware .

Esta é uma aplicação clássica para dtrace .

Não me lembro a sintaxe exatamente, mas você pode ter um incêndio traço cada vez que um arquivo é aberto por qualquer processo no sistema. Isso pode ser feito em um sistema em execução sem qualquer lugar próximo tanto em cima como eu esperava que teria. Se você estiver executando o Solaris como um administrador, o DTrace é seu melhor amigo. Mesmo se você não for um programador, é bastante simples de aprender e uma ferramenta de consulta sistema muito poderoso.

Em alguns sistemas UNIX, (IE: Linux), todos os arquivos abertos por um processo tem um ID de FD.

Estes podem ser vistos sob

/ proc / $ PID / fd

ls -la /proc/2055/fd 
total 0
dr-x------ 2 kent kent  0 Nov 19 21:44 .
dr-xr-xr-x 7 kent kent  0 Nov 19 21:42 ..
lr-x------ 1 kent kent 64 Nov 19 21:44 0 -> /dev/null
l-wx------ 1 kent kent 64 Nov 19 21:44 1 -> /home/kent/.xsession-errors
lrwx------ 1 kent kent 64 Nov 19 21:44 10 -> socket:[3977613]
lrwx------ 1 kent kent 64 Nov 19 21:44 11 -> /home/kent/.googleearth/Cache/dbCache.dat
lrwx------ 1 kent kent 64 Nov 19 21:44 12 -> /home/kent/.googleearth/Cache/dbCache.dat.index
lrwx------ 1 kent kent 64 Nov 19 21:44 13 -> socket:[3978765]
lrwx------ 1 kent kent 64 Nov 19 21:44 14 -> socket:[3978763]
lrwx------ 1 kent kent 64 Nov 19 21:44 15 -> socket:[3978766]
lrwx------ 1 kent kent 64 Nov 19 21:44 17 -> socket:[3978764]
l-wx------ 1 kent kent 64 Nov 19 21:44 2 -> /home/kent/.xsession-errors
lr-x------ 1 kent kent 64 Nov 19 21:44 3 -> pipe:[3977583]
l-wx------ 1 kent kent 64 Nov 19 21:44 4 -> pipe:[3977583]
lr-x------ 1 kent kent 64 Nov 19 21:44 5 -> pipe:[3977584]
l-wx------ 1 kent kent 64 Nov 19 21:44 6 -> pipe:[3977584]
lr-x------ 1 kent kent 64 Nov 19 21:44 7 -> pipe:[3977587]
l-wx------ 1 kent kent 64 Nov 19 21:44 8 -> pipe:[3977587]
lrwx------ 1 kent kent 64 Nov 19 21:44 9 -> socket:[3977588]

Além disso, às vezes mesmo de chegar "FDINFO" (Eu acho que esta é uma bandeira kernel linux)

cat /proc/2055/fdinfo/11 
pos:    232741818
flags:  02
  1. Você pode usar ls comando e grep para descobrir os arquivos utilizados pelo Chrome

$ ls -l / proc / * / fd | grep "cromo"

lrwx ------ uma ba ABC 64 16 jul 22:19 104 -> /home/abc/.config/google-chrome/Default/Cookies

lr-x ------ 1 ABC ABC 64 16 jul 22:19 113 -> /opt/google/chrome/nacl_irt_x86_64.nexe

lrwx ------ 1 ABC ABC 64 16 jul 22:19 121 -> /home/abc/.cache/google-chrome/Default/Cache/data_0

lrwx ------ 1 ABC ABC 64 16 jul 22:19 122 -> /home/abc/.cache/google-chrome/Default/Cache/data_1

lrwx ------ 1 ABC ABC 64 16 jul 22:19 123 -> /home/abc/.cache/google-chrome/Default/Cache/data_2

lr-x ------ 1 ABC ABC 64 16 de julho 22:19 125 -> /home/abc/.config/google-chrome/Dictionaries/en-US-3-0.bdic

Outro comando para descobrir o resultado usando lsof e grep

$ lsof | grep "cromo"

cromo 2204 abc cwd DIR 8,5 4096 1441794 / home / abc

cromo 2204 abc IDT DIR 8,5 4096 2 /

cromo 2204 abc txt REG 8,5 87.345.336 5.111.885 / opt / google / cromo / cromo

cromo 2204 abc mem REG 8,5 4202496 1443927 /home/abc/.cache/google-chrome/Default/Media Cache / data_3

cromo 2204 abc mem REG 8,5 1056768 1443926 /home/abc/.cache/google-chrome/Default/Media Cache / dados_2

cromo 2204 abc mem REG 8,5 270.336 1.443.925 /home/abc/.cache/google-chrome/Default/Media Cache / dados_1

cromo 2204 abc mem REG 8,5 45056 1443924 /home/abc/.cache/google-chrome/Default/Media Cache / data_0

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top