目前分類:RedHat Linux (9)

瀏覽方式: 標題列表 簡短摘要

fuser 這指令, 乍看之下都會讓人解讀為 "fuse --保險絲 " , 但在Linux中, 應該是解釋為 File using

什麼時後會用到fuser這指令呢, 大體是你想知道有那一個程序 , 正使用著系統的某些接口. 像是那一個網路介面 , 或是那一個檔案系統掛載等.  由其是當我們想卸載某一檔案系統 , 如 umount /dev/win_d ,  卻一直出現 "Device is Busy" 的訊息, 就可以使用 fuser , 把正佔住該資源的程序給找出來.

例如

#fuser -m -v /mnt/win_d       會出現
 
                      USER       PID    .... COMMAND
/mnt/win_d    root        4154       bash

也就是說 ,  有一隻編號4154的bash 程序 , 正在access著/mnt/win_d

其中下的參數 :
-m 參數顯示所有使用指定文件系統的進程,後面可以跟掛載點,或是dev設備( Thanks lisir :),-v參數給出詳細的輸出


當然啦 , 問題一定是要解決的 , 如果是剛好有程序在使用 , 可以關掉就算了. 偏偏有的是錯誤的程序 , 卻關不掉. 這時就得把它給kill 了, fuser裏也安排了這樣的參數命令
fuser -m -k /mnt/win_D

這招自動把霸佔著/mnt/win_d的程序殺死。如果你不是很明確是否要殺死所有霸佔設備的程序,你還可以加一個-i 參數,這樣每殺死一個程序前,都會詢問:
# fuser -m -v -i -k /mnt/win_d

                      USER       PID    .... COMMAND
/mnt/win_d    root        4154       bash
kill process 4154? (y/N)

當你選Y時 , 那佔住的程序(pid) , 就會被刪掉了. /mnt/win_d , 也將會被釋放.

jslinux 發表在 痞客邦 留言(0) 人氣()

常用 Windows的user 一定很習慣 , 當系統出現藍色之死時 , 我們會同時按 " Alt" + "Ctrl " +"Del " , 來起動工作管理員 ,好來看看倒底是那一隻程式當掉了,  或著是死命的佔住系統資源. 然後點選刪除或停用.

這樣的問題 , 在Linux上也是會發生 , 當系統因為某些程序 crash時 , 會出現系統無法釋放資源等現像, 例如我們要umount /dev/win_d , 但老是出現 Device is busy這檔事. 我們就可以使永 "ps " 這指令 , 來好好的觀察到底是那一隻process , 偷偷的在內層搞鬼.

#ps         可以列出目前user 所執行的程式

#ps -u     則是列出所有user 所執行的程序.

但上面所提的 , 指的都是由前台console所鍵入的程序 , 但像是一開機所啟動的程序 , 則會被暗藏在後台中. 這時我們可以利用

#ps aux   則會不管使用者 , 把所有系統中所 , 目前所執行的程序 , 完全的傾印出來.

而在列出的訊息中,  有幾個個項目是比較重要的有 , 像是

USER   -- 使用者是誰
PID      -- Process ID
%CPU  -- CPU使用率
%MEM -- 記憶體使用率
TTY      --  TTY USE

 這些訊息都足以判斷 ,該程序目前在系統中, 所運作的一些情況.

 

 

 

 

 

jslinux 發表在 痞客邦 留言(0) 人氣()

        玩 Linux 似乎很難避掉 Server 這一塊 , 由其當我們要利用cross platform , 讓在i686系統上編譯出來的核心檔案 , 能夠直接透過網路 , 讓 target board 運作 , 就很難避掉這一塊.

        在O'reilly 的 Building Embedded Linux Sytem 一書的 bootloader 章節中 , 一共提到了DHCP , NFS , TFTP等幾個相關的Server  , 既然如此 , 我們就一個個的來實作一下吧.

jslinux 發表在 痞客邦 留言(0) 人氣()

         最近開始著手在 Linux 2.6的plarform 上 , 撰寫一些產品的Device driver.  結果當然一開始必定是摔個一踏糊塗. 有很多時後連怎麼死的都不曉得. 這要是在兩年前 , 那時剛碰linux的我來說  , 必定是束手無測 , 壓根不曉得從那下手. 但畢竟練功不是練假的啦....在經過一段時間的學習 , 慢慢的對linux的系統開竅了 , 就比較容易有些珠絲馬跡可尋 , 這就像是在玩 "TOMB Rider" 一樣 , 在前面的訓練關卡熟練後 , 後面就很自然的會去找一些 , 可能的線索 , 然後再不斷的 try % error , 找尋可能的解答.

jslinux 發表在 痞客邦 留言(0) 人氣()

        我想 , 乍看到這樣的主題時 , 大概多數人一定或摸不清楚 , 這是在說什麼吧. 其實, 我自己要下這標題也是挺爭扎的. 想了很久 , 最後還是以這樣的標題為名.

        問題的起源是 , 在Embedded Linux上 , 在製作核心後 , 開發PC 必須想辦法把Kernel image 給燒到Target Board上的儲存資料區 , 這可以是硬碟 , DOC(Disk on chip) , 也可以是在flash ic上 . 但不管那一種 , 只要核心一動 , 就得再弄一次 , 總讓人覺得 , 有那麼點的曠日費時.  但這一個問題早在Linux的前輩中想到了法子. 在Linux上 , 存有一個nfs server的架構. nfs 故名思義就是 network filesystem. 只要target board的boot loader 能夠透過網路與開發系統相連 , 就可以透過指定ip address 下的目錄 , 將核心給載過來用. 如此就可以不斷的進行核心開發 , 卻不用擔心需要花很多時間來進行燒錄了.

jslinux 發表在 痞客邦 留言(0) 人氣()

        tar ball是Linux的學習中相當重要的一環 , 當你取得open source時 , 通常是被包裝或是壓縮過的檔案 , 這是你就必須使用tar的command來將它解包裝或是解壓縮了. 雖然比較新版的winrar 似乎也看的懂Linux系統下壓縮的格式 , 像是bz2 . gz . tar 等格式 , 但我不能確定 , 利用winrar解壓縮 , 是否不會發生任何的問題.


jslinux 發表在 痞客邦 留言(0) 人氣()

        在一般的應用程式 , 或是系統編譯時 , 我們都常會遇到 , 需要新增一些路徑到我們原本系統存在的$PATH中 , 但總不能老是在bash下 , 敲export $PATH加上新增的path這一長串的指令吧 , 而且重新開機後 , 路徑也就消失不見了 , 所以就必須把新增了路徑 , 嵌在系統中 ,  假定我們新增的path 為 /usr/local/arm/gcc-2.95.3/bin 則有下列幾個方法

jslinux 發表在 痞客邦 留言(2) 人氣()

          root是系統的最高權限帳號 , 當系統有些設定時, 多會以root帳號登入 , 然後再行修改.  但有時後 , 我們以root權限在運作時 , 不小心修改了某些東西 ,而發生開機無法進入系統的窘境..   整個系統就卡在那動也不動 , 而Linux又沒有像windows , 在重新開機後 , 按F8 , 然後選擇上一次良好設定 , 就可以重新進入. 

         難道還要重灌一次嗎? 當然不是!!!  看看下面是怎麼做的吧~

jslinux 發表在 痞客邦 留言(0) 人氣()

        有鑑於現今的儲存媒體 , 像是硬碟或是隨身碟的儲存媒體越來越大. 所以大多會將媒體格式化為NTFS的格式. 或許在套件核心中已經將ntfs 套件built in , 但如果在編譯核心時 , 未將其勾選時 , 就會像是現在許多套件一樣 , 裏面大多都能直接mount上vfat , 也就是FAT32格式的檔案系統 , 但卻不支援NTFS的格式. 


jslinux 發表在 痞客邦 留言(0) 人氣()