2013年5月22日 星期三

查詢修改 Linux maximum open file限制

當某些特殊情況,需大量開啟檔案時(上萬個),往往會被系統阻擋並提示 "Too many files"。此時需要針對系統參數去做修改。

而會限制 maximum open file 的部分有分兩個:一個是 kernel level,另一個為 user level。

Kernel level:限制整個系統所能開啟的最大檔案數量(所有使用者和系統的總和)。


查詢 fs.file-max
$ sysctl fs.file-max
暫時修改 fs.file-max(重開機後失效)
$ sudo sysctl -w fs.file-max=<numbers>
自動修改 fs.file-max(重開機會自動套用)
$ sudo vi /etc/sysctl.conf
在檔尾修改或插入設定。
s.file-max = <numbers>
重新載入設定
$ sudo sysctl -p




User Level,open files:限制單一使用者所能開啟的最大檔案數量。


查詢
$ ulimit -n
修改
$ sudo vi /etc/security/limits.conf
在檔尾加入需要的設定。
Example:* - nofile 65535
Syntax:<domain> <type> <item> <value>
<domain>:欲調整個使用者(可以用 * 表示所有使用者)或群組(在群組名稱前加@)。
<type>:分為 hard 和 soft,或是以 - 表示兩者。
<item>:要設定的參數名稱。
<value>:欲給予的值。

之後重新開機後,便會套用設定。



2013年5月13日 星期一

scan:掃描DVB頻道資訊

scan 是一個用來掃描 DVB channel、並產生 channels.conf 的程式,對許多軟體,像是 MPlayer、tzap,channels.conf 是播放 DVB 節目的必要檔案,其中包含各個 channel 的詳細資訊,如 channel name、frequency、bandwidth...等。

/usr/share/dvb/dvb-t 目錄底下,放有一些各地區的 initial tuning data file,這些檔案內容放有特定 frequency、bandwidth、QAM...等和在 DVB-Tx 設定頻道時,需要給予的頻道參數一樣。但是很多情況,我們可能只知道一個頻道的 frequency 和 bandwidth,其他資訊並不清楚,所以在我自己寫的 initial tuning data file 的內容如下:

# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
T 647000000 6MHz AUTO NONE AUTO AUTO AUTO NONE
T 653000000 6MHz AUTO NONE AUTO AUTO AUTO NONE
T 659000000 6MHz AUTO NONE AUTO AUTO AUTO NONE
僅給予 frequency、bandwidth 資訊,其他都設定 AUTO 或 NONE。

之後在透過以下指令,讓 scan 根據 initial tuning data file 內容去掃頻道,並產生 channels.conf:
$ scan <initial_tuning_data_file> > channels.conf