Los archivos temporales listados por lsof no existen

5

Me gusta copiar videos flash para verlos sin conexión más tarde. Solía hacerlo cargando el video en el navegador (Firefox o Google Chrome), luego ejecutando este comando para ver dónde se estaba guardando el archivo flash:

lsof | grep ^Google | grep folders

Esto mostrará todos los archivos temporales que Google Chrome tiene abiertos en este momento, por ejemplo:

...
Google    311 mike   21u     REG       14,1    262148 17819373 /private/var/folders/zz/zzTLi2haPMrCYxEbpkwFmS+++TI/-Tmp-/.com.google.chrome.p22bCa
Google    311 mike   22u     REG       14,1      9974 17819369 /private/var/folders/zz/zzTLi2haPMrCYxEbpkwFmS+++TI/-Tmp-/.com.google.chrome.MUo4JT
Google    312 mike  txt      REG       14,1      9974 17819369 /private/var/folders/zz/zzTLi2haPMrCYxEbpkwFmS+++TI/-Tmp-/.com.google.chrome.MUo4JT
Google    312 mike  txt      REG       14,1    262148 17819373 /private/var/folders/zz/zzTLi2haPMrCYxEbpkwFmS+++TI/-Tmp-/.com.google.chrome.p22bCa
... etc

Sin embargo, ninguno de los archivos existe:

$ ls /private/var/folders/zz/zzTLi2haPMrCYxEbpkwFmS+++TI/-Tmp-/.com.google.chrome.p22bCa
ls: /private/var/folders/zz/zzTLi2haPMrCYxEbpkwFmS+++TI/-Tmp-/.com.google.chrome.p22bCa: No such file or directory

La lista del directorio no muestra ningún archivo o directorio como este existente:

$ ls -lA /private/var/folders/zz/zzTLi2haPMrCYxEbpkwFmS+++TI/-Tmp-/
total 0
drwxr-xr-x  3 mike  staff  102 Jul 24 18:14 TemporaryItems
srwxr-xr-x  1 mike  staff    0 Jul 24 12:10 com.apple.notify.206.32
srwxr-xr-x  1 mike  staff    0 Jul 24 12:10 com.apple.notify.206.33
drwxr-xr-x  2 mike  staff   68 Jul 24 18:25 hsperfdata_mike

¿Qué está pasando aquí? ¿Por qué no puedo acceder a los archivos temporales?

Dado que mi objetivo es copiar el archivo flash para verlo más tarde, ¿hay algo más que pueda hacer?

    
pregunta Mike Mazur 24.07.2011 - 12:13

4 respuestas

9

En algunas variantes de Unix, lsof muestra los archivos que se han eliminado pero aún están abiertos. Más precisamente, estos archivos tienen un "recuento de enlaces" de 0, lo que significa que no hay una entrada de directorio (ningún enlace, es decir, ningún nombre) que lleve a ellos, pero los datos del archivo todavía existen. Los datos del archivo se eliminarán cuando se cierre el archivo.

La capacidad de lsof para mostrar archivos con un recuento de enlaces de 0 depende de la plataforma, y no puedo encontrar nada en documentation acerca de la situación en OS X. Intente ejecutar lsof +L para ver el recuento de enlaces de los archivos, o lsof +L1 para ver la lista solo archivos con un número de enlaces de 0.

No me sorprendería si el complemento flash creara el archivo y lo eliminara de inmediato, es una técnica simple para hacer que los datos sean más difíciles de obtener desde fuera de la aplicación. En otras palabras, es lo que el autor del complemento haría precisamente para que sea difícil hacer lo que estás tratando de hacer. Si eso es lo que sucede, puedes contrarrestarlo con algo como libtrash para OSX .

    
respondido por el Gilles 24.07.2011 - 15:44
3

lsof without sudo puede no mostrar todos los archivos abiertos

Regla de oro:

  • para garantizar resultados completos de lsof , use sudo

Ejemplo

Ejecuta los dos comandos de abajo. Observe las diferencias en la salida. Con privilegios, espera encontrar muchas más líneas.

Sin privilegios de superusuario

lsof / | grep root

Con privilegios

sudo lsof / | grep root
    
respondido por el Graham Perrin 30.12.2012 - 11:14
0

¿Has intentado poner el camino entre comillas?

Me gusta esto:

$ ls "/private/var/folders/zz/zzTLi2haPMrCYxEbpkwFmS+++TI/-Tmp-/.com.google.chrome.p22bCa" 
    
respondido por el Digitalchild 24.07.2011 - 12:28
-1

Prueba esto:

cp /proc/$pid$/fd/$fdid$

Donde:

  • $pid$ - Id. de proceso
  • $fdid$ - ID de descriptor de archivo

Los ID de proceso usualmente son números 4 digit . Los descriptores de archivos suelen tener una letra junto a ellos ( r , u , w , etc.).

Toma esta por ejemplo:

Google    311 mike   22u     REG       14,1      9974 17819369 /private/var/folders/z...

Reemplaza $pid$ con 311 y $fdid$ con 22 para que obtengas:

cp /proc/311/fd/22
    
respondido por el Aalex Gabi 25.05.2012 - 14:56

Lea otras preguntas en las etiquetas