The thing I use lsof for most often these days is watching Flash videos with mplayer (or VLC if you prefer). This allows me to pause/rewind/fullscreen easier. Or sometimes I save the file to watch later. You still have to start the video from within Flash and then pause it so it downloads the video file. Then you can do this:
Oftentimes the output will give you duplicates for the same temporary flash file (FlashXXfHeQqB in this case) with an extra number after the process id, you can ignore all of that. I'm assuming those are child processes. All you need is the process id (1038) and the file descriptor (16). You can safely ingore the character (w) after the file descriptor.
Back in the day (Flash 9 or so?) the flash player used to just dump temporary flash video files in /tmp and delete them after you close the browser tab. I guess they figured it was too easy to copy the files out of /tmp so the newer flash player deletes the /tmp file immediately after it creates them. This is why we have to go and grab the open file descriptor.
This will work with most but not all websites. Some websites (Hulu) will use a streaming protocol (rtsp) among other things to make the content harder to get at outside of flash.
This works on Linux, I'm not sure about OSX or BSD.
For most Flash video hosting sites, clive¹ is the easiest way to download a video to watch in an external player; sometimes I've had to resort to poking through the HTML source in Firebug, but even that doesn't always yield a useful result. I'll have to keep lsof in mind the next time I hit one of those!
Thanks. I also appreciate watching long presentations in an app such as VLC because I can then watch it at 1.2x or 1.5x speed to save time. After getting used to it a normal speed presentation seems to plod on forever.
Thank you. I was a little concerned when my MBP spewed out a list with this option. I tried a little look-up on why that is normal.
From the manpage:
When +L is followed by a number, only files having a link count less than that number will be listed. (No number may follow -L.) A specification of the form ``+L1'' will select open files that
have been unlinked. A specification of the form ``+aL1 <file_system>'' will select unlinked open files on the specified file system.
On my MBP (SL) at least, all the files listed with +L1 are from /private/var/folders/
A quick search seems to hint that this is the location to store secure caches and temp files for Snow Leopard.
For at least _some_ *BSDs (Net, Free. Don't know about Open, Dragon Fly), see fstat(1) and sockstat(1) for functionally similar tools that ship with the base system. lsof(1) isn't part of base, but is available via ports/pkgsrc if lsof(1) is required or desired.
Thank you for this! I almost feel embarrassed not knowing the extent of lsof's abilities; I've used it for a long time just for basic things (e.g. lsof <file>, that's it!). Very awesome, I can't wait to use some of these in my scripts.
I use lsof a lot in combination with strace. E.g. lsof -p some_process tells you that fd 9 is the socket you're interested in. Then you can run something like strace -e read=9 to see all the reads on that socket.
Back in the day (Flash 9 or so?) the flash player used to just dump temporary flash video files in /tmp and delete them after you close the browser tab. I guess they figured it was too easy to copy the files out of /tmp so the newer flash player deletes the /tmp file immediately after it creates them. This is why we have to go and grab the open file descriptor.
This will work with most but not all websites. Some websites (Hulu) will use a streaming protocol (rtsp) among other things to make the content harder to get at outside of flash.
This works on Linux, I'm not sure about OSX or BSD.