[LUG.ro] Dónde están los videos temporales flash [solución]
Martin A. Troncoso
tincho.tgz en gmail.com
Mie Oct 12 01:05:31 ART 2011
On Tuesday 11 October 2011 10:59:31 Ricardo Armas wrote:
> 2011/10/10 Ricardo Armas <rarmas en gmail.com>:
> > 2011/10/8 Martín Carr <tincarr en gmail.com>:
> > Yo le agregué la opción -X al lsof para que no liste los archivos
> > TCP&UDP, anda más rápido, queda:
> > #!/bin/bash
> > mplayer $(for i in $(lsof -X | grep -i Flash | grep -v '.so' |awk
> > '{printf "%s--%s\n", $2, $4}'); do { echo "/proc/"$(echo $i | awk -F
> > -- '{print $1}')"/fd/"$(echo $i | awk -F -- '{print $2}'|sed s/u//g);
> > }; done )
>
> Otra, le agregué que sólo busque los Flash que están en la carpeta
> tmp, ahora anda perfecto
> grep -i tmp/Flash
no entiendo algo, porque armar un for y complicarlo tanto?
lsof -X | grep -i flash <-- obtenemos la lista de flash player
redirigimos a un grep para ver los archivos temporales
grep tmp <-- obtenemos solo los que van en tmp
imprimimos entonces "/proc/columna del proceso/fd/id archivo"
awk '{print "/proc/"$2"/fd/"$4}' <--- imprime lo antes mencionado
en el lsof el id archivo finaliza con una "u" que no sirve, la eliminamos
cut -d u -f 1 <-- corta el campo antes de la "u", como los valores anteriores
no tienen "u" viene bien, tambien podria ser un "sed s/u//" (el g no es
necesario porque no vamos a tener mas de una concurrencia por linea) para
remplazar por la nada o un "tr -d u" (para eliminar el caracter "u")
entonces:
lsof -X | grep -i flash | grep tmp | awk '{print "/proc/"$2"/fd/"$4}' | tr -d u
<--- nos va a devolver una lista de archivos que son los que nos interesan,
mplayer soporta listas de esta forma
mplayer `lsof -X | grep -i flash | grep tmp | awk '{print "/proc/"$2"/fd/"$4}'
| tr -d u`
y listo, para que usar tantos AWK, bucles FOR y demas? o.0
Más información sobre la lista de distribución Lugro