Điều này đang xảy ra trên Ubuntu Release 12.04 (chính xác) Kernel Linux 3.2.0-25-virtual
Tôi đang cố gắng tăng số lượng tệp đang mở cho phép người dùng. Điều này là cho ứng dụng java nhật thực của tôi trong đó giới hạn hiện tại là 1024 là không đủ.
Theo các bài đăng tôi đã tìm thấy cho đến nay, tôi sẽ có thể đặt các dòng vào
/etc/security/limits.conf như thế này:
soft nofile 4096
hard nofile 4096
để tăng số lượng tệp được mở cho tất cả người dùng.
Nhưng điều đó không hiệu quả với tôi và tôi nghĩ vấn đề không liên quan đến tập tin đó.
Đối với tất cả người dùng, giới hạn mặc định là 1024, bất kể trong /etc/security/limits.conf (Tôi đã khởi động lại sau khi thay đổi tệp đó)
$ ulimit -n
1024
Bây giờ, mặc dù các mục trong /etc/security/limits.conf tôi không thể tăng điều đó:
$ ulimit -n 2048
-bash: ulimit: open files: không thể sửa đổi giới hạn: Không được phép thao tác Phần kỳ lạ là tôi có thể thay đổi giới hạn xuống dưới , nhưng không thể thay đổi nó lên trên - thậm chí để quay lại số nằm dưới giới hạn ban đầu:
$ ulimit -n 800
$ ulimit -n
800
$ ulimit -n 900
-bash: ulimit: open files: cannot modify limit: Operation not permitted
Là root, tôi có thể thay đổi giới hạn đó thành bất cứ điều gì tôi muốn, lên hoặc xuống. Nó thậm chí dường như không quan tâm đến giới hạn được cho là toàn hệ thống trong / Proc / sys / fs / file-max
# cat /proc/sys/fs/file-max
188897
# ulimit -n 188898
# ulimit -n
188898
Nhưng ngay cả khi tôi nhận được nhật thực để chạy bằng root, ứng dụng của tôi vẫn gặp sự cố vì ngoại lệ "Quá nhiều tệp mở"!
Cho đến nay, tôi chưa tìm thấy cách nào để tăng giới hạn tệp mở cho người dùng không phải root.
Làm thế nào tôi nên làm điều này đúng? Tôi đã xem một số bài viết khác nhưng không có may mắn!
/etc/security/limits.conf
, bạn có thể phải đăng xuất và sau đó quay lại trước khi bạn có thể sử dụng giới hạn tối đa mới. Tôi đã làm điều này, và bị bối rối khiulimit -Hs
vẫn hiển thị 1000 khi tôi vừa nâng nó lên 1000000! Sau đó tôi đăng xuất và đăng nhập lại, và ulimit cho thấy số tiền mới.