8 votos

Los archivos temporales listados por lsof no existen

Me gusta copiar vídeos flash para verlos más tarde sin conexión. Solía hacerlo cargando el vídeo en el navegador (Firefox o Google Chrome) y, a continuación, ejecutando este comando para ver dónde se almacenaba en caché el archivo flash:

lsof | grep ^Google | grep folders

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

...
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

El listado 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?

11voto

staffan Puntos 3299

En algunas variantes de unix, lsof muestra los archivos que se han borrado pero siguen abiertos. Más concretamente, estos archivos tienen un "recuento de enlaces" de 0, lo que significa que no hay ninguna entrada de directorio (ningún enlace, es decir, ningún nombre) que conduzca a ellos, pero los datos del archivo siguen existiendo. Los datos del fichero se borrarán cuando se cierre el fichero.

La capacidad de lsof para mostrar archivos con un recuento de enlaces de 0 depende de la plataforma, y no puedo encontrar nada en el documentación sobre la situación en OS X. Pruebe a ejecutar lsof +L para ver el recuento de enlaces de los archivos, o lsof +L1 para listar sólo los archivos con un recuento de enlaces de 0.

No me extrañaría que el plugin de flash creara el archivo e inmediatamente lo borrara, es una técnica sencilla para dificultar la obtención de los datos desde fuera de la aplicación. En otras palabras, es lo que haría el autor del plugin precisamente para dificultar lo que intentas hacer. Si eso es lo que está pasando, podrías contrarrestarlo con algo como libtrash para OSX .

1 votos

Esta parece ser la razón por la que los archivos no son visibles con ls . De hecho, correr lsof +L muestra un recuento de enlaces de 0. ¡Gracias por explicarlo!

2 votos

Eliminar inmediatamente los archivos temporales también es una buena forma de asegurarse de que los archivos se eliminarán si la aplicación se bloquea (o si se produce un corte de energía).

0 votos

Confirmo que MacOS hace esto; He probado en 10.6.8, 10.13.6, y 10.14.6 con exec 3>/tmp/wibble; rm /tmp/wibble; lsof | grep wibble (lo lista abierto bajo dos procesos porque la tubería crea un subshell) seguido de exec 3>&-; lsof | grep wibble (ya no figura en la lista).

4voto

Tim Puntos 11

Lsof sin sudo puede no listar todos los archivos abiertos

Regla de oro:

  • para garantizar resultados completos de lsof Utilice sudo

Ejemplo

Ejecute los dos comandos siguientes. Observa las diferencias en la salida. Con privilegios, espere encontrar muchas más líneas.

Sin privilegios de superusuario

lsof / | grep root

Resultado:

COMMAND     PID      USER   FD   TYPE DEVICE   SIZE/OFF       NODE NAME
Spotlight   325 user_name_here  txt    REG    1,5     257996 8609539837 /System/Library/PrivateFrameworks/NLP.framework/Versions/A/Resources/root.cache

Con privilegios

sudo lsof / | grep root

Resultado:

Password:
COMMAND     PID      USER   FD   TYPE DEVICE   SIZE/OFF       NODE NAME
launchd       1               root  cwd    DIR    1,5        928          2 /
launchd       1               root  txt    REG    1,5     345584 8624629318 /sbin/launchd
launchd       1               root  txt    REG    1,5     973824 8624630575 /usr/lib/dyld
launchd       1               root   44r   REG    1,5        358 8609644469 /private/etc/security/audit_control
launchd       1               root   46r   REG    1,5        652 8609644467 /private/etc/security/audit_class
UserEvent    60               root  cwd    DIR    1,5        928          2 /
UserEvent    60               root  txt    REG    1,5      35184 8624631345 /usr/libexec/UserEventAgent
... ...

0voto

David Anderson Puntos 91

¿Has probado a poner la ruta entre comillas?

Así:

$ ls "/private/var/folders/zz/zzTLi2haPMrCYxEbpkwFmS+++TI/-Tmp-/.com.google.chrome.p22bCa"

0 votos

Las comillas no ayudan. Voy a añadir a la pregunta que listar el directorio no muestra ninguna .com.google.chome.* archivos o directorios.

0 votos

Sé que esto no responde a tu pregunta, pero ¿has probado algo como la descarga de flv? bitbucket.org/m.23/flv_download/wiki/Home

-1voto

Aalex Gabi Puntos 101

Prueba esto:

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

Dónde:

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

Los identificadores de proceso suelen ser 4 digit números. Los descriptores de fichero suelen tener una letra al lado ( r , u , w etc.).

Por ejemplo, ésta:

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

Sustituir $pid$ con 311 y $fdid$ con 22 para que usted obtenga:

cp /proc/311/fd/22

1 votos

Mac OS X no tiene el /proc sistema de archivos.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X