Linux ulimit使用

JYRoy發表於2021-02-08

什麼是ulimit?

ulimit是一個可以設定或者彙報當前使用者資源限制的命令。使用ulimit命令需要有管理員許可權,它只能在允許使用shell進行控制的系統中使用。也就是說它已經被嵌入到shell當中了。

基本使用

ulimit

如輸出所示,unlimited,當前的使用者有無限的資源可以訪問。意味著,當前使用者可以消耗當前系統支援的所有資源。

ulimit -a

-a引數可以展示出詳細的引數,即我們可以對什麼資源做限制。這裡的限制有兩種型別:soft & hard。hard資源限制意味著是物理限制;soft資源限制是由使用者進行管理的,soft的最大值由hard來限制。

系統資源被定義在了/etc/security/limits.conf的檔案當中,當我們使用ulimit的時候,就是在使用這個檔案裡定義的值。

檢視其他資源限制

ulimit -c # 檢視core file檔案的最大值
ulimit -d # 檢視資料段的最大值
ulimit -e # 檢視當前使用者的最大排程優先順序
ulimit -s # 當前使用者的最大棧大小
ulimit -u # 當前使用者的最大程式數
ulimit -v # 檢視虛擬記憶體的大小
ulimit -b # 檢視socket buffer的大小
ulimit -t # 檢視每個程式允許執行的時間
ulimit -n # 檢視一個程式可以最多有多少檔案描述符

其他命令可通過--help檢視

設定資源限制

我們通過上面的內容瞭解到了怎麼去檢視當前系統中的一些資源限制的值。現在就來看一下怎麼去修改它們。

注意:對於hard限制,我們需要有root許可權pip

首先進入limits.conf檔案

vim /etc/security/limits.conf

按照如下的格式編輯檔案

<domain> <type> <item> <value>
  1. domain可以是下面的值

    • 一個特定的使用者
    • 一個組
    • wildcard(* and %)
  2. type可以是下面的值

  • soft 限制
  • hard 限制
  1. item可以是下面的值

  • core:core檔案大小(KB)
  • data:最大資料大小(KB)
  • fsize:最大檔案大小(KB)
  • memlock:最大locked-in-memory地址空間(KB)
  • nofile:最大的open files的數目
  • rss:最大的resident set大小(KB)
  • stack:最大棧大小(KB)
  • cpu:最大cpu時間(分鐘)
  • nproc:最大程式數
  • as:地址空間的限制(KB)
  • maxlogins:當前使用者的最大登陸數目
  • maxsyslogins:當前系統的最大登陸數目
  • priority:跑使用者程式的優先順序
  • locks:使用者可以持有的file locks的數目
  • sigpending:最大的pending signals的數目
  1. value就是具體的整數值

參考文獻

本文內容翻譯自

  1. https://linuxhint.com/linux_ulimit_command/

相關文章