Giới hạn tệp mở mặc định cho mỗi quy trình là 1024 trên - giả sử - Linux. Đối với một số daemon này là không đủ. Vì vậy, câu hỏi: Làm thế nào để thay đổi giới hạn tệp mở cho một người dùng cụ thể?
Giới hạn tệp mở mặc định cho mỗi quy trình là 1024 trên - giả sử - Linux. Đối với một số daemon này là không đủ. Vì vậy, câu hỏi: Làm thế nào để thay đổi giới hạn tệp mở cho một người dùng cụ thể?
Câu trả lời:
Trên Linux, bạn có thể định cấu hình qua limits.conf
, ví dụ: qua
# cd /etc/security
# echo debian-transmission - nofile 8192 > limits.d/transmission.conf
(đặt cả giới hạn cứng và mềm cho các quy trình được bắt đầu trong quá trình truyền debian của người dùng thành 8192)
Bạn có thể xác minh thay đổi qua:
# sudo -u debian-transmission bash -c "ulimit -a"
[..]
open files (-n) 8192
[..]
Nếu một daemon đang chạy, nó phải được khởi động lại để giới hạn mới được chọn. Trong trường hợp trình nền được khởi động thủ công từ phiên người dùng, người dùng phải đăng nhập lại để có giới hạn mới.
Ngoài ra, bạn cũng có thể chỉ định các giới hạn bổ sung trực tiếp trong /etc/security/limits.conf
, tất nhiên - nhưng tôi thích .d
cách tiếp cận thư mục để duy trì tốt hơn.
Để thực thi các giới hạn mềm / cứng khác nhau, sử dụng hai mục, ví dụ:
debian-transmission soft nofile 4096
debian-transmission hard nofile 8192
(lý do đằng sau này: giá trị mềm được đặt sau khi người dùng đăng nhập nhưng quá trình người dùng được phép tăng giới hạn lên đến giới hạn cứng)
Các limits.conf
/ limits.d
cấu hình được sử dụng bởi pam_limits.so
, được kích hoạt theo mặc định trên bản phân phối Linux hiện hành.
Ngoài ra còn có giới hạn toàn hệ thống trên Linux , /proc/sys/fs/file-max
:
Tệp này xác định giới hạn toàn hệ thống về số lượng tệp đang mở cho tất cả các quy trình.
Ví dụ: mặc định trên Ubuntu 10.04:
$ cat /proc/sys/fs/file-max
786046
Tệp giả /proc/sys/fs/file-nr
cung cấp thêm thông tin, ví dụ:
$ cat /proc/sys/fs/file-nr
1408 0 786046
số lượng tệp xử lý được phân bổ (nghĩa là số lượng tệp hiện được mở); số lượng tập tin xử lý miễn phí; và số lượng tệp xử lý tối đa
Do đó, một mặt, bạn cũng có thể phải điều chỉnh file-max
giới hạn toàn hệ thống , trong trường hợp nó rất nhỏ và / hoặc hệ thống đã được tải rất nhiều. Mặt khác, chỉ tăng file-max
là không đủ, vì nó không ảnh hưởng đến các giới hạn mềm / cứng được thi hành bởi cơ chế pam_limits.
Để thay đổi file-max
trên dòng lệnh (không cần khởi động lại):
# sysctl -w fs.file-max=786046
Đối với thay đổi vĩnh viễn thêm fs.file-max=786046
vào /etc/sysctl.conf
hoặc /etc/sysctl.d
.
Giới hạn trên fs.file-max
được ghi lại trong fs.nr_open
. Ví dụ: (một lần nữa) trên Ubuntu 10.04:
$ sysctl -n fs.nr_open
1048576
(đó là 1024 * 1024)
Sysctl này cũng có thể cấu hình.