2012年4月12日 星期四

檔案系統及程序的限制關係:ulimit


ulimit [-SHacdfltu] [配額數]
選項與參數:
-H  :hard limit ,嚴格的設定,不能超過這個設定值;
-S  :soft limit ,警告的設定,可以超過這個設定值,但是超過則有警告訊息。
      通常設定上, soft會比hard小,例如soft設定為90而hard設定為100,那麼你可以使用到95(因為沒有      超過100),但介於90~100之間時,系統會有警告訊息!
-a  :後面不接任何選項與參數,可列出所有的限制額度;
-c  :當某些程式發生錯誤時,系統會將該程式在記憶體中的資訊寫成檔案(除錯用),這種檔案被稱為核心       檔案(core file)。此設定限制每個核心檔案的最大容量。
-f  :限制可以建立的最大檔案容量單位為Kbytes
-d  :程序可以使用的最大斷裂記憶體(segment)容量;
-l  :可用於鎖定(lock)的記憶體量
-t  :可使用的最大 CPU 時間 (單位為秒)
-u  :單一使用者可以使用的最大程序(process)數量。
例:
列出目前身份的限制資料
mnw@ap:/$ ulimit -a
core file size          (blocks, -c) 0     <<---0代表沒有限制
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited  <<---可建立的單一檔案大小
pending signals                 (-i) 15924
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1024  <<---可以同時開啟的檔案數量
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 15924
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

現在單一檔案容量上限10MB
mnw@ap:/$ ulimit -f 10240
mnw@ap:/$ ulimit -a
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) 10240  <<---10240 Kbyes=10 MB
pending signals                 (-i) 15924
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1024
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 15924
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

mnw@ap:/$ dd if=/dev/zero of=123 bs=1M count=20
dd: opening `123': Permission denied  <<---要建立20MB的檔案,失敗了!