為了正常運行,我們在安裝各種軟件后,必須保證設置正確的ulimit值。Linux系統提供了限制資源數量的方法。為每個Linux用戶賬戶設置的限制值。但是,系統的限制也是分別應用于該用戶正在運行的每個進程。例如,如果某些閾值太低,系統可能無法使用nginx/apache或php/Python應用程序來服務網頁。用NA命令查看或設置系統資源限制。讓我們看看如何使用ulimit來控制shell和進程的可用資源。
如何在Linux系統中找到用戶的ulimit?
ulimit Linux命令設置或顯示用戶進程資源限制。通常,限制是在/etc/security/limits.conf文件或systemd單元中定義的。
兩種限制
所有的Linux限制分為軟限制和硬限制。
軟限制–所有用戶都可以改變軟限制,最高可到硬限制所設置的最大值。將 -S 選項傳遞給 ulimit。
硬限制–只有root用戶才能更改esource硬限制。將 -H 選項傳遞給 ulimit。
語法如下,可以查看當前用戶的所有軟限制和硬限制。
ulimit -Sa ## Show soft limit ##
ulimit -Ha ## Show hard limit ##
列出用戶名為“ tom”的所有硬 ulimit
您必須以root用戶身份運行以下命令,或者至少可以通過sudo / su訪問該帳戶:
su – tom -c “ulimit -Ha”
su – tom –shell /bin/bash -c “ulimit -Ha”
## You can use the sudo command ##
sudo -u tom bash -c “ulimit -Ha”
sudo -u tom sh -c “ulimit -Ha”
查找名為“ jerry”的用戶的所有軟件 ulimit
su – jerry -c “ulimit -Sa”
su – jerry –shell /bin/sh -c “ulimit -Sa”
## You can use the sudo command ##
sudo -u jerry bash -c “ulimit -Sa”
sudo -u jerry sh -c “ulimit -Sa”
為進程用戶尋找’ulimit -a’的進程用戶
Linux進程不過是程序的運行實例。例如,當您啟動firefox應用程序時,您創建了一個過程。但是,某些進程在后臺運行的時間更長。通常,服務器進程在后臺運行,并且您不能使用sudo命令或su命令來找到其限制。在此示例中,nginx在Debian Linux上以www-data用戶身份運行,但是出于安全原因,默認情況下阻止對www-data用戶帳戶的shell訪問。換句話說,以下su或sudo命令將失敗100%:
$ su – www-data -c “ulimit -Sa”
This account is currently not available.
如何為進程找到ULIMIT
語法是: 首先找到nginx的PID(進程ID),與grep命令一起運行ps 命令: 示例輸出:
cat /proc/PID/limits
ps aux | grep nginx
現在運行以下cat命令: 示例輸出:
cat /proc/8868/limits
大多數開發者和系統管理員需要知道每個nginx進程的最大進程數和打開的文件數。簡而言之,我們用 “ps aux | grep appname “找到PID,然后查看/proc/目錄下的那個PID的 “limitors “文件。這樣你就可以肯定的知道該進程適用于哪些值來調整性能。