2013-05-30 73 views
0

首先,我想聲明,我不打算對受版權保護的流和視頻進行任何非法操作。我想我有權知道,在我的計算機上運行的進程是什麼(以及涉及哪些文件和位置),因此我問這個問題。我知道這些知識可能會被人們濫用,但這更多的是知識和技術的普遍問題,因此沒有公正地回答這個問題的有效論據。Linux:使用文件描述符查找閃存流

我正在使用最新的google-chrome瀏覽器(帶有集成的pepperflash),但是我看到我的問題與使用本地安裝的Flash插件的Firefox相同。 (版本11.2和更高版本)。
過去,Flash內容存儲在/ tmp中,可以輕鬆查看所涉及的文件。 後來該過程發生了變化,因此這些文件在不使用lsof的情況下不可見。 使用命令

lsof | grep Flash 

顯示某事。像

plugin-co 1347 user 16w REG 8,2 10221034 265226 /tmp/FlashXXv6onXK (deleted) 

在firefox的情況下。所以你仍然可以訪問並看到涉及的Flash文件。 現在這是不可能的了。在鉻的情況下

lsof | grep lash 

給我

chrome 2705   user mem  REG    8,18 17015392 401558 /opt/google/chrome/PepperFlash/libpepflashplayer.so 

不給我任何文件。 所以我想,也許搜索刪除的文件,關於鉻給了我一定的成效:

lsof | grep hrome | grep deleted 

,但它是不可能看到任何從輸出有用。 (至少對於我來說)。使用PID和文件描述符來訪問文件只給我幾千字節的文件(這遠遠不是加載文件的大小)。嘗試播放已恢復的文件(僅用於測試目的)不起作用。

我發現的另一個有趣的事情是: 正常情況下,流式傳輸視頻意味着我的驅動器上有幾百兆的空間,直到我關閉谷歌瀏覽器。所以我將以下目錄移至tmpfs:

/home/user/.cache/google-chrome 
/home/user/.config/google-chrome/PepperFlash/ 
/home/user/.config/google-chrome/Default/Pepper Data/ 

在播放大流時,它不會在驅動器上分配空間。所以我想這些目錄主持這些文件。但是我沒有成功地使用lsof或其他方法在這些目錄中找到任何已刪除的文件。

如果有人能告訴我文件的存儲位置以及如何查找個別視頻文件以及如何訪問這些文件,我將非常感激。他們現在是不是分開了?

非常感謝!

+0

如果你能找到的flash播放器,你可以列出它在'/ proc中已經打開了文件描述符的進程ID//fd'。 – Joni

+0

好的,我將用一個例子來演示。 「ps的斧頭| grep的閃光」 給我: 「9070 S1中0:44的/ opt /谷歌/鉻/ --type =插件--plugin路徑=在/ usr/lib64下/瀏覽器的插件? /libflashplayer.so --lang = en-US --channel = 8859.11.941641622 9240 pts/3 S + 0:00 grep --color = auto flash「 讓我們來看看文件描述符: 」 cd/proc/9070/fd && ls -l「 在播放YouTube視頻時給我: http://pastebin.com/kAsEwxBu 。 沒有(刪除)文件顯示:(。 – GEO

+0

然後它看起來像這個Flash插件保持視頻數據在內存中,而不寫入文件 – Joni

回答

1

它很容易,應該與任何Flash內容。 1。獲取您希望查看打開的文件描述符的進程的PID,在這種情況下,瀏覽器線程將寫入/ proc/PID/fd/* 中的任何FD,這可以通過

ps -ef | grep chrome 
  1. 現在通過所有打開的FD和檢查文件,你也可以通過mmin或者cmin來完成。
 
    # for i in `ps -ef| grep chrome | awk '{print$2}'`; do [ -d /proc/$i/fd ] && find /proc/$i/fd/ -type f -follow -size +50M -exec file -L {} \; ; done 
    /proc/2664/fd/75: data 
    /proc/2664/fd/77: data 
    /proc/3643/fd/33: Macromedia Flash Video 

這裏有一點要注意的是,Flash內容是一個鏈接,這樣文件就需要-L。 也爲youtube有一個python工具 - http://rg3.github.io/youtube-dl/ 希望有所幫助。

0

爲一個bash一個十歲上下的襯墊

ls -l /proc/*/fd/* 2>/dev/null |awk '(/Flash/){print $9}'

  1. 去翻所有的/ proc//FD/鏈接
  2. 只能打印指向「閃存的那些「文件

我這樣做播放Flash視頻而不玩t通過Flash Player的下襬(恆定控制和更好的電源/ CPU使用率):

mplayer $(\ls -l /proc/*/fd/* 2>/dev/null |awk '(/Flash/){print $9}')