Unix程式設計/應用問答中文版 ---6./etc/system可調資源限制(轉)
Unix程式設計/應用問答中文版 ---6./etc/system可調資源限制(轉)[@more@]作者:不祥 [文章出自: ]6. /etc/system可調資源限制 6.1 Solaris下如何限制每個使用者可擁有的最大程式數 6.2 如何配置系統使之支援更多的偽終端 6.3 如何增加每個程式可開啟檔案控制程式碼數 6.4 6.5 做了setuid()這類呼叫的程式如何產生core dump 6.6 訊息佇列調整 -------------------------------------------------------------------------- 6. /etc/system可調資源限制 6.1 Solaris下如何限制每個使用者可擁有的最大程式數 A: Casper Dik 在/etc/system設定 set maxuprc = Q: maxusers引數究竟影響了什麼 A: Casper Dik 下面以/etc/system語法格式舉例說明: * set maxusers = * 系統所允許的最大程式數,通常最多30000 set max_nprocs = 10 + 16 * maxusers * 每個使用者可以擁有的最大程式數(為超級使用者保留5個) set maxuprc = max_nprocs - 5; # sysdef | sed -n '/System Configuration/,$p' 6.2 如何配置系統使之支援更多的偽終端 A: Argoth 不要試圖透過'/usr/bin/adb -k'到達目的。 a. 如果Solaris版本小於7,修改/etc/system,增加如下行 set pt_cnt= 執行/usr/sbin/reboot -- -r,或者Stop-A,執行boot -r b. 對於Solaris 8,支援的偽終端數目根據需要動態改變,系統依然有一個內部限制, 但是這個值非常大。如果"pt_cnt"變數小於這個內部限制,將被忽略。一般情況 下,不再需要指定"pt_cnt"變數。但還是有某些罕見的情形,需要設定"pt_cnt" 變數大於內部限制。 6.3 如何增加每個程式可開啟檔案控制程式碼數 A: Casper Dik 從Solaris 2.4開始,可以透過修改/etc/system實現 * set hard limit on file descriptors set rlim_fd_max = 4096 * set soft limit on file descriptors set rlim_fd_cur = 1024 軟限制超過256時,某些應用程式會出問題,尤其BCP程式。軟限制超過1024時,那些 使用select()的應用程式可能會出問題。Solaris 7之前,select()使用的檔案控制程式碼 數不能超過1024。Solaris 2.6的RPC程式碼被重寫過了,使用poll()代替select(),可 以使用超過1024的檔案控制程式碼。Solaris 2.6之前,如果軟限制超過1024,所有RPC服務 很可能崩潰。 Solaris 7下select()可以使用最多達65536的檔案控制程式碼,64-bit應用程式預設情況如 此。如果是32-bit應用程式,需要指定給FD_SETSIZE一個更大的值,重新編譯。 如果程式使用標準輸入/輸出(stdio),或者呼叫那些使用stdio的庫函式,當開啟的 檔案超過256時,程式可能會出問題,這個限制是stdio的限制。當程式需要大量檔案 控制程式碼時,應該想辦法保留一些小數字的檔案控制程式碼,讓stdio使用它們。 Solaris 7下64-bit應用程式不再受這個stdio限制的影響。如果你的確需要超過256 個FILE *,而又不能使用Solaris 7,或者需要執行32-bit程式碼,考慮使用來自AT&T 的SFIO()。 A: qaz@smth.org 檢查當前設定 # ulimit -H -n 1024 # ulimit -S -n 64 # 對於Solaris,建議修改/etc/system後重啟 * set hard limit on file descriptors set rlim_fd_max=0x8000 * set soft limit on file descriptors set rlim_fd_cur=0x8000 然後 ulimit -S -n 8192 對於Linux echo 65536 > /proc/sys/fs/file-max 然後 ulimit -S -n 8192 對於FreeBSD 編輯/etc/sysctl.conf檔案(或者sysctl -w,參看SYSCTL.CONF(5)) kern.maxfiles=65536 kern.maxfilesperproc=32768 Q: Linux下如何加大系統可以開啟的檔案數 A: planck.bbs@bbs.nju.edu.cn echo > /proc/sys/fs/file-max 6.5 做了setuid()這類呼叫的程式如何產生core dump Q: 做了setuid()這類呼叫的程式不會產生core檔案,可我需要除錯這個程式。 -------------------------------------------------------------------------- /* * gcc -Wall -O3 -o suidtest suidtest.c */ #include #include #include #include #include #include int main ( int argc, char * argv[] ) { int *ptr = NULL; printf( "Current uid = %d euid = %d
", ( int )getuid(), ( int )geteuid() ); printf( "Result of seteuid( 500 ) = %d
", seteuid( 500 ) ); printf( "Current uid = %d euid = %d
", ( int )getuid(), ( int )geteuid() ); creat( "/tmp/scz_blah", S_IRWXU ); printf( "Result of setuid( 0 ) = %d
", setuid( 0 ) ); printf( "Current uid = %d euid = %d
", ( int )getuid(), ( int )geteuid() ); *ptr = 0; return( EXIT_SUCCESS ); } /* end of main */ -------------------------------------------------------------------------- # gcc -Wall -O3 -o suidtest suidtest.c # strip suidtest # file suidtest suidtest: ELF 32-位 MSB 可執行 SPARC 版本 1,動態連結,除去 # ls -l suidtest -rwxr-xr-x 1 root other 4988 6月 29 21:21 suidtest* # ./suidtest Current uid = 0 euid = 0 Result of seteuid( 500 ) = 0 Current uid = 0 euid = 500 Result of setuid( 0 ) = 0 Current uid = 0 euid = 0 段錯誤 # ls -l core core: 無此檔案或目錄 # 這個程式應該core dump,但是現在沒有core檔案產生。注意,此時suidtest僅僅是 自己呼叫了setuid(),並非被"chmod u+s suidtest"過。有無/etc/system核心可配 置引數改變這種行為。 A: Sun Microsystems 2001-04-11 出於安全考慮,suid程式以及呼叫setuid()的程式預設情況下不產生core dump。如 果確實需要產生core dump以便進行除錯,修改/etc/system檔案並重啟系統 * 預設該值為0,此時禁止suid程式以及呼叫setuid()的程式core dump set allow_setid_core = 1 對於Solaris 2.6,需要先打補丁105181-22或更高版本,才能使用上述技術。對於 7及其更高版本的Solaris作業系統,不需要任何補丁。 A: 小四 2001-07-30 20:14 對於SPARC/Solaris 7來說,為了方便除錯,執行coreadm -e proc-setid命令即可。 6.6 訊息佇列調整 Q: 在/etc/system中如何調整訊息佇列 A: 訊息佇列統一使用 msgsys:msginfo_ 字首。你可以用sysdef獲取一些預設值,還可 以參看/usr/include/sys/msg.h標頭檔案瞭解更多資訊。此外不要忘記<> msgsys:msginfo_msgmap default 100 max 2147483647 100 msgsys:msginfo_msgmax default 2048 max 2147483647 8192 typical value 2048 msgsys:msginfo_msgmnb default 4096 max 2147483647 2048 typical value 4096 msgsys:msginfo_msgmni default 50 max 2147483647 50 typical value 50 msgsys:msginfo_msgssz default 8 max 2147483647 8 msgsys:msginfo_msgtql default 40 max 2147483647 50 typical value 40 msgsys:msginfo_msgseg default 1024 max 32767 1024
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8225414/viewspace-940480/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Unix程式設計/應用問答中文版 ---4.系統資源相關問題(轉)程式設計
- Unix程式設計/應用問答中文版 ---20.shell script問題(轉)程式設計
- Unix程式設計/應用問答中文版 ---19.終端相關問題(轉)程式設計
- Unix程式設計/應用問答中文版 ---21.FreeBSD相關問題(轉)程式設計
- Unix程式設計/應用問答中文版 ---1.系統管理配置問題(轉)程式設計
- Unix程式設計/應用問答中文版 ---12.日誌相關問題 13.程式相關問題(轉)程式設計
- Unix程式設計/應用問答中文版 ---17.檔案檢視問題 18.補丁相關問題(轉)程式設計
- Unix程式設計/應用問答中文版 ---14.一些小工具的使用 15.32-bit/64-bit相關問題(轉)程式設計
- Linux應用問答(轉)Linux
- Linux桌面應用問答(轉)Linux
- Unix(Linux) C程式設計問題精粹 (轉)LinuxC程式程式設計
- Unix(Linux) C程式設計問題精粹(轉)LinuxC程式程式設計
- Unix(Linux)C程式設計問題精粹(轉)LinuxC程式程式設計
- Linux網路應用問答(轉)Linux
- 程式設計資源收集(轉)程式設計
- C 語言程式設計(unix) (轉)程式設計
- MongoDB 資源、庫、工具、應用程式精選列表中文版MongoDB
- ADO程式設計應用 (轉)程式設計
- unix--Tripwire 應用(轉)
- Linux 作業系統程式設計之Shell 問答錄(轉)Linux作業系統程式設計
- 併發程式設計-6.並行程式設計概念程式設計並行行程
- 提取應用程式中的圖示資源 (轉)
- 程式設計師的網上資源 (轉)程式設計師
- 每個程式設計師都應該讀《Unix程式設計藝術》程式設計師
- Web程式設計師最實用資源Web程式設計師
- 《實用Common Lisp程式設計》作者Peter Seibel答讀者問Lisp程式設計
- Unix哲學(Unix程式設計藝術)程式設計
- Unix程式設計藝術,Unix哲學程式設計
- 多國語言程式設計之資源轉換 (轉)程式設計
- 程式設計師面試:電話面試問答Top 50程式設計師面試
- 非Access資料庫在VB的程式設計及應用 (轉)資料庫程式設計
- Vector在Java程式設計中的應用 (轉)Java程式設計
- Java桌面應用程式設計:SWT 簡介(轉)Java程式設計
- DirectShow應用程式設計介紹(翻譯) (轉)程式設計
- Leetcode:單調棧_可見山峰問題LeetCode
- Go Web 程式設計--應用資料庫GoWeb程式設計資料庫
- 《Unix 網路程式設計》11:名字和地址轉換程式設計
- 程式設計師網站資源寶庫(轉貼)程式設計師網站