1. 程式人生 > >關於ulimit -a 顯示的檔案開啟控制代碼數的含義

關於ulimit -a 顯示的檔案開啟控制代碼數的含義

ulimit 我經常用了,還經常設定一些引數,尤其是open file,當時的理解是:openfile設定為多大,此使用者就只能最大開啟這麼多檔案。我還經常給客戶講課,尤其是郵政的客戶,講課我都是這麼講的。我納悶這到底是誰最先告訴我是這麼解釋的?


                [[email protected] ~]$ ulimit -a
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
max nice                        (-e) 0
file size               (blocks, -f) unlimited

pending signals                 (-i) 3Array5Array
max locked memory       (kbytes, -l) 32
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1024
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 81Array200
max rt priority                 (-r) 0
stack size              (kbytes, -s) 81Array2

cpu time               (seconds, -t) unlimited
max user processes              (-u) 3Array5Array
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited
file locks                      (-x) unlimited
    昨天才知道確切的意義:在Linux下,我們使用ulimit -n 命令可以看到單個程序能夠開啟的最大檔案控制代碼數量(socket連線也算在裡面)。系統預設值1024。

    以前也遇到過,某些使用者比如weblogic使用者,登入後提示“too many files open”,原來是某個程序開啟的檔案數過多。這個程序是由哪個使用者開啟的,需要修改這個使用者的“open file”引數。
    下面命令可以看到系統中程序開啟檔案數的一個排序:
lsof -n |awk ’{print $2}’|sort|uniq -c |sort -nr|more
[[email protected] ~]# lsof -n |awk ’{print $2}’|sort|uniq -c |sort -nr|more
     64 18563
     63 18632
     63 18583
     62 18617
     61 18561
     60 18565
[[email protected] ~]# ps -ef|grep 18563
oracle   18563     1  0 Aug15 ?        00:00:07 ora_lgwr_orcl
    其中第一行是開啟的檔案控制代碼數量,第二行是程序號。得到程序號後,我們可以通過ps命令得到程序的詳細內容。可以檢視到這個18563的程序是oracle的一個程序。
    一般情況下http一類的程序可能會開啟檔案數比較大,這樣就需要將“open file”引數調大即可:
ulimit -HSn 40Array6 
    Linux有硬性限制和軟性限制。可以通過ulimit來設定這兩個引數。H指定了硬性大小,S指定了軟性大小,n表示設定單個程序最大的開啟檔案控制代碼數量。
    如果想讓使用者登入即修改“open file”引數,有兩種方法:
    1、修改系統配置檔案/etc/security/limits.conf,在最後新增
work                soft        nofile      40Array6
work      soft      nofile      40Array6
    2、將命令新增到/etc/profile組後,這樣所有使用者登入都會改變

相關推薦

關於ulimit -a 顯示檔案開啟控制含義

ulimit 我經常用了,還經常設定一些引數,尤其是open file,當時的理解是:openfile設定為多大,此使用者就只能最大開啟這麼多檔案。我還經常給客戶講課,尤其是郵政的客戶,講課我都是這麼講的。我納悶這到底是誰最先告訴我是這麼解釋的?             

運維繫統,發現報錯,開啟檔案控制太多解決方案

在Linux中檢視日誌時,發現有Can’t open so many files資訊。應該是虛擬機器開啟檔案數或者sockets數太多了。 在Linux下,我們使用ulimit -n命令可以看到單個程序能夠開啟的最大檔案控制代碼數量(socket連線也算在裡面)。系統預設值

Windows系統程序開啟檔案控制的限制

在linux系統中,程序開啟的檔案控制代碼數量的限制,可用ulimit命令來檢視和修改,或者修改/etc/security/limits.conf也可以修改。但在windows中,目前沒有找到方便的方法檢視這個值。 下面這段程式碼可以用來檢視該值,設定的辦法還沒有找到。 W

linux 開啟檔案控制

首先可以通過ulimit –a 命令來檢視 如下: Redhat系統 [[email protected]_3 ut]# ulimit -a core file size        (blocks, -c) 0 data seg size     

如何調整“作業系統的中開啟檔案的最大控制”?

使用/proc檔案系統來控制系統/proc/sys/fs/proc/sys/fs/file-max該檔案指定了可以分配的檔案控制代碼的最大數目。如果使用者得到的錯誤訊息宣告由於開啟檔案數已經達到了最大值,從而他們不能開啟更多檔案,則可能需要增加該值。可將這個值設定成有任意多個

linux 檔案控制檢視命令

當你的伺服器在大併發達到極限時,就會報出“too many open files”。 檢視執行緒佔控制代碼數ulimit -a 輸出如下:core file size (blocks, -c) 0data seg size (kbytes, -d) unlimitedscheduling priority

Linux檔案控制調整

首先介紹下Linux系統中"一切都是檔案"。 1. Linux系統檔案控制代碼數概念 檔案控制代碼和檔案描述符 2. 查詢Linux系統檔案控制代碼數 # ulimit -a core file size (blocks, -c) 0 data seg size

伺服器記憶體佔用不斷的增加 & 工作管理員(PF使用率)不斷的增加:關注控制(轉)

原文連結:http://www.cnblogs.com/personnel/p/4583038.html 最近一二個月以來,我發現伺服器的記憶體佔用正按著每天60M的速度增加。 一臺windows 2003的伺服器(2G記憶體),剛剛啟起時佔用記憶體:600M左右。 執行20天后,記憶體佔用(PF使用)

伺服器記憶體線性增長,根據控制查詢問題程序 伺服器記憶體佔用不斷的增加 & 工作管理員(PF使用率)不斷的增加:關注控制(轉)

伺服器修改成nignx+xxfm之後 訪問速度變快了很多。但是伺服器記憶體每天線性增長30M左右。 網上找了很多資料都不行。根據這篇文章伺服器記憶體佔用不斷的增加 & 工作管理員(PF使用率)不斷的增加:關注控制代碼數(轉) 檢視所有程序的控制代碼數,發現xxfm.exe程序的控制代碼數有3萬多,

系統技術非業餘研究 » 如何檢視節點的可用控制數目和已用控制

很多同學在使用erlang的過程中, 碰到了很奇怪的問題, 後來查明都是檔案控制代碼不夠用了, 因為系統預設的是每個程序1024. 所以我們有必要在程式執行的時候, 瞭解這些資訊, 以便診斷和預警. 下面的這個程式就演示了這個如何檢視節點的可用控制代碼數目和已用控制代碼數的功能. 首先確保你已經安

獲得指定程序的控制

環境是VC6.0  Win2000不能使用GetProcessHandleCount函式 /***************************************************************************/ GetProcessHand

Windows程序控制限制

GDIProcessHandleQuota項設定GDI控制代碼數量,預設值為2710(16進位制)/10000(10進位制),該值的允許範圍為 256 ~ 16384 ,將其調整為大於預設的10000的值。如果您的系統配置了2G或更多內容,不妨將其設定為允許的最大值 16384(10進位制);USERProc

記大問題:因為linux系統的控制限制導致連不上mq的問題

在docker中模擬了數百臺客戶端連線執行在linux系統之上的mq,結果報連線不上的錯誤。 定位了好久,請教了一個前輩,在非常偶然的情況下發現了mq使用的控制代碼數為1021,而linux系統(沒有配置過)這個數值是1024,所以連線不上了 使用ulimit -n 655

mina通訊,對於高併發的產生:java.io.IOException: Too many open files(開啟檔案控制過多問題)

起因:由於業務系統有多個定時任務定時訪問銀行端,銀行每天也有大量業務訪問業務系統,都是通過mina通訊,部署在測試環境的系統每過一兩天開啟控制代碼過萬,生產的也是一週左右不重啟業務系統就會爆掉。一開始並不清楚到底是哪方面原因導致控制代碼增長這麼快,因為這是一個老系統,經過多次升級,大量的併發、多執行緒,所以只

Linux的開啟檔案表:開啟檔案表、檔案描述符、開啟檔案控制以及i-node之間的關係

    在Linux系統中一切皆可以看成是檔案,檔案又可分為:普通檔案、目錄檔案、連結檔案和裝置檔案。檔案描述符(file descriptor)是核心為了高效管理已被開啟的檔案所建立的索引,其是一個非負整數(通常是小整數),用於指代被開啟的檔案,所有執行I/O操作的系統呼叫都通過檔案描述符。程式剛剛啟動的

開啟檔案-控制方式

;檔案控制代碼方式開啟檔案code segment     assume cs:codemain proc far     jmp startfilename db 'e:/1.txt',0success db 'ok...',0dh,0ah,24hfaile    db '

檔案關閉後馬上再開啟另一個檔案兩個控制會一樣

for(int i = 0; i < 5; i++) { FILE *pF = fopen("123.txt", "wb"); printf("%x\n", pF); fclose(pF); p

開啟被獨佔的檔案方法(二) -- 修改控制訪問許可權

修改控制代碼訪問許可權 所有被佔用的檔案通常都可以用讀屬性(FILE_READ_ATTRIBUTES)開啟,這樣就可以讀取檔案的屬性,取得它的大小,列舉NTSF stream,但遺憾的是,ReadFile就不能成功呼叫了。開啟檔案時各種訪問屬性的區別在哪裡呢?顯然,開啟檔案時,系統會記錄訪問屬性,之後會

頻繁通過win32api的createfile函式開啟檔案控制導致記憶體洩漏

1、通過win32的createfile、writefile函式開啟寫入檔案 void WriteLogThread(void* lpParameter) { LPLogData pData = (LPLogData)lpParameter; string logCon

1106Selenium web自動化測試經驗分享-開啟多個視窗,切換控制

在web自動化測試中,好像很少會出現多視窗和切換控制代碼的情景。我之前曾想過一個情景:如果我開啟多個視窗,該怎樣更快更好的切換控制代碼呢?今天做個小分享。 一)切換控制代碼(handle)(1) 首先說明下情景:百度搜索Python,在搜尋的結果中點選一個‘官網’的超連結,打開了一個