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.
Puede obtener lsof desde http://www.sunfreeware.com/programlistsparc10.html#lsof
También puedes probar pfiles:
http://docs.oracle.com/cd/E23823_01/html/816-5165/pfiles-1.html#scrolltoc
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
- 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