辦公用品網(wǎng)站建設(shè)拼多多運營
在 Ubuntu 22.04 中,可以通過修改系統(tǒng)配置來調(diào)整進(jìn)程啟動后能夠打開的文件數(shù)軟限制。軟限制是指操作系統(tǒng)允許單個進(jìn)程打開的文件描述符的最大數(shù)量。以下是調(diào)整該限制的方法:
1. 查看當(dāng)前限制
首先,你可以通過 ulimit
命令查看當(dāng)前的軟限制和硬限制:
ulimit -n
這個命令會返回當(dāng)前進(jìn)程可以打開的最大文件數(shù)(軟限制)。
2. 臨時調(diào)整(僅對當(dāng)前會話有效)
你可以使用 ulimit
命令來臨時調(diào)整當(dāng)前 shell 會話中的文件打開限制:
ulimit -n 65535
這將把軟限制設(shè)置為 65535。請注意,這個限制僅在當(dāng)前終端會話中有效,退出會話后會恢復(fù)默認(rèn)設(shè)置。
3. 永久調(diào)整
要永久修改文件打開限制,需要修改系統(tǒng)配置文件,確保新的設(shè)置在每次系統(tǒng)啟動時生效。
(a) 修改 /etc/security/limits.conf
編輯 /etc/security/limits.conf
文件,設(shè)置適當(dāng)?shù)能浵拗坪陀蚕拗?。打開該文件進(jìn)行編輯:
sudo nano /etc/security/limits.conf
然后添加如下行:
root soft nofile 65535
root hard nofile 65535
這將設(shè)置root用戶的軟限制和硬限制都為 65535。
注意
1)我嘗試了 * soft nofile 65535,本來想設(shè)置所有用戶,但沒有成功。
2)如果是nginx,則需要添加(nginx是以nginx啟動的)
nginx soft nofile 65535
nginx hard nofile 65535
(b) 修改 /etc/pam.d/common-session
和 /etc/pam.d/common-session-noninteractive
確保 PAM(可插拔認(rèn)證模塊)能夠應(yīng)用這些限制。編輯以下文件:
sudo nano /etc/pam.d/common-session
在文件的末尾添加以下行:
session required pam_limits.so
這將確保 PAM 模塊在會話啟動時加載限制配置。
? 修改 /etc/sysctl.conf
(可選)
有時候,內(nèi)核級別的限制可能會影響文件描述符的上限。如果需要,你還可以調(diào)整內(nèi)核參數(shù):
sudo nano /etc/sysctl.conf
添加以下行:
fs.file-max = 1000000
然后應(yīng)用更改:
sudo sysctl -p
4. 重啟系統(tǒng)
為了確保所有更改生效,最好重啟計算機(jī)或重新登錄。
5. 驗證
重啟后,可以使用以下命令驗證設(shè)置是否成功:
ulimit -n
或者查看系統(tǒng)級別的文件描述符限制:
cat /proc/sys/fs/file-max
這樣,你就可以根據(jù)需要調(diào)整 Ubuntu 22.04 中進(jìn)程的文件打開數(shù)軟限制了。
6. 對于 systemd
啟動的服務(wù)
如果你的進(jìn)程是通過 systemd
啟動的(例如作為服務(wù)或后臺進(jìn)程),limits.conf
配置也可能不會直接生效。這是因為 systemd
管理的進(jìn)程有自己的資源限制機(jī)制。
-
要為
systemd
管理的服務(wù)設(shè)置文件描述符限制,你需要編輯相應(yīng)服務(wù)的配置文件(如/etc/systemd/system/your-service.service
),并在[Service]
部分中設(shè)置LimitNOFILE
:[Service] LimitNOFILE=65535
然后重新加載
systemd
配置并重啟服務(wù):sudo systemctl daemon-reload sudo systemctl restart your-service
如何判定某個進(jìn)程的文件數(shù)打開限制:
cat /proc/$(pgrep nginx | head -n 1)/limits | grep ‘Max open files’