ulimit 是一個用于控制 shell 啟動的進程能夠使用的系統資源的命令。通過 ulimit,你可以限制用戶或進程可以打開的文件描述符數量、進程數等,從而防止系統資源耗盡。以下是一些常見的 ulimit 設置方法:
你可以使用以下命令查看當前的 ulimit 設置:
ulimit -a
你可以在當前 shell 會話中臨時設置 ulimit。例如,限制一個用戶可以打開的最大文件描述符數量為 4096:
ulimit -n 4096
要永久設置 ulimit,你需要編輯系統的配置文件。常見的配置文件包括:
編輯 /etc/security/limits.conf 文件,添加以下行來設置用戶的資源限制:
* soft nofile 4096
* hard nofile 8192
這行配置表示所有用戶(*)的軟限制(soft)為 4096,硬限制(hard)為 8192。
確保 /etc/pam.d/common-session 文件中包含以下行,以使 limits.conf 的設置生效:
session required pam_limits.so
同樣,確保 /etc/pam.d/common-session-noninteractive 文件中也包含以下行:
session required pam_limits.so
你還可以通過編輯 /etc/sysctl.conf 文件來設置系統級的資源限制。例如,限制系統可以打開的最大文件描述符數量:
fs.file-max = 100000
然后運行以下命令使更改生效:
sysctl -p
為了確保 ulimit 設置生效并且系統資源沒有耗盡,你可以使用以下命令監控資源使用情況:
查看當前打開的文件描述符數量:
lsof | wc -l
查看系統當前的最大文件描述符數量:
cat /proc/sys/fs/file-max
通過這些方法,你可以有效地使用 ulimit 來防止系統資源耗盡。