2009年1月21日 星期三

Too many open file?!

之前一直都沒有注意Linux有開啟檔案數的問題,一直到不久前,在使用eclipse時常常會出現『Too many open files'的錯誤,導致eclipse無法正常運作。原本以為是Linux上的JDK的問題,在google之後才知道原來是Linux本身的設定問題。

想知道自己某個程式的開啟檔案數,可以用以下的指令察看:
lsof -p [pid of your process] | wc -l
如果想調大檔案開啟數,可以調整fs.file-max這個核心參數。如果memory夠大,可以將此值加大到65536,或是更大:調整的方式:
在/etc/rc.local中加入echo 65536 > /proc/sys/fs/file-max
或是
在sysctl.conf中加入fs.file-max=65536
不過單修改核心參數只能加大系統核心的上限,Linux本身還有針對每個user的每個程式本身的限制,因此還需要編輯/etc/security/limits.conf,並加入
* soft nofile 4096
* hard nofile 4096
修改完畢之後,重新開機即可!

自己編譯gcin的deb

因為家中的Ubuntu是裝64bit的,所以在使用gcin上,不容易找到編譯好的deb來安裝。所幸,廣大的internet上還是有不少資訊可以參考,以下就是參考整理後的步驟:
  1. 去抓取想編譯的版本的source code。抓回來之後,解開。(官網下載)
  2. 抓取編譯用的diff,並且解開放到gcin source的目錄。注意:版本要符合。(diff下載點)
  3. 安裝編譯gcin的必要套件:
    sudo apt-get build-dep gcin
  4. 把diff檔patch到gcin source:進入步驟1的目錄,輸入:
    patch -Np1 -i *.diff
  5. 進行編譯:先把編譯必要的rule檔加上正確的權限
    chmod u+x ./debian/rules
    ,然後輸入
    dpkg-buildpackage -b
經過以上步驟就可以產生需要的deb檔,就可以透過dpkg來安裝