versiones ventajas sirve que para historia desventajas caracteristicas unix command-line solaris pid fuser

ventajas - Archivos utilizados por un proceso de Unix



unix ventajas y desventajas (6)

El comando fuser me permite saber qué procesos están usando un archivo o directorio.

Estoy buscando un comando que haga lo contrario: me permite saber qué archivos está usando un proceso.

Actualizar

Olvidé mencionar que es para un sistema Solaris.



En algunos sistemas Unix, (IE: Linux), todos los archivos abiertos por un proceso tienen una identificación FD.

Estos se pueden ver en

/ 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]

Además, a veces incluso obtienes "FDINFO" (creo que esto es un indicador de kernel en Linux)

cat /proc/2055/fdinfo/11 pos: 232741818 flags: 02


Esta es una aplicación clásica para dtrace .

No puedo recordar exactamente la sintaxis, pero puede hacer un rastreo cada vez que un proceso en el sistema abre un archivo. Se puede hacer en un sistema en ejecución sin casi tanta sobrecarga como esperaba. Si está ejecutando solaris como administrador, dtrace es su mejor amigo. Incluso si no eres un programador, es bastante simple de aprender y una herramienta de consulta de sistema MUY poderosa.


lsof -p <pid>

De aquí

lsof significa " LiSt Open Files ". Este comando de shell parece engañosamente simple: enumera información sobre archivos abiertos por procesos en un cuadro de UNIX.

A pesar de su declaración de misión (aparente) modesta, lsof es en realidad uno de los comandos de UNIX más potentes y útiles. Su poder bruto proviene de uno de los principios de diseño de UNIX a menudo descrito como "en UNIX todo es un archivo". Lo que esto significa es que el concepto lsof de un archivo abierto no solo cubre archivos regulares sino también los siguientes:

  • Directorios
  • Flujos o archivos de red (por ejemplo, sockets de dominio de Internet o UNIX y archivos NFS)
  • Bibliotecas nativas (por ejemplo, bibliotecas .soor .dylibdynamic vinculadas a un proceso)
  • Archivos especiales de bloques y caracteres (por ejemplo, volumen del disco, disco duro externo, consola o mouse)
  • Tubería

¡Espera, no puedo encontrar lsof en mi sistema!

lof es una herramienta tan popular que ha sido adaptada a prácticamente todos los dialectos de UNIX (Linux, Mac OS X, BSD, Solaris, etc.). Si no está disponible en su caja, use su sistema de administración de paquetes habitual para instalarlo. Puede encontrar paquetes lsof para Solaris en Sun Freeware .


Si bien no me molestaría que alguien aprendiera Dtrace o que adquiriera experiencia en la instalación de software, en Solaris hay un comando para ver los archivos que un proceso ha abierto: / 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


  1. puedes usar ls command y grep para encontrar los archivos usados ​​por chrome

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

lrwx ------ 1 abc 64 Jul 16 22:19 104 -> /home/abc/.config/google-chrome/Default/Cookies

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

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

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

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

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

Otro comando para averiguar el resultado usando lsof y grep

$ lsof | grep "cromo"

chrome 2204 abc cwd DIR 8,5 4096 1441794 / inicio / abc

chrome 2204 abc rtd DIR 8,5 4096 2 /

chrome 2204 abc txt REG 8,5 87345336 5111885 / opt / google / chrome / chrome

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

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

Chrome 2204 abc mem REG 8,5 270336 1443925 /home/abc/.cache/google-chrome/Default/Media Cache / data_1

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