ulimit
là một shell được tích hợp sẵn, không phải là một lệnh bên ngoài. Nó cần phải được xây dựng vì nó hoạt động trên chính tiến trình shell, như cd
: các giới hạn, như thư mục hiện tại, là một thuộc tính của quy trình cụ thể đó.
sudo bash -c 'ulimit -n 4096'
sẽ hoạt động, nhưng nó sẽ thay đổi giới hạn cho quy trình bash sudo
chỉ được gọi , điều này sẽ không giúp bạn.
Có hai giá trị cho mỗi giới hạn: giới hạn cứng và giới hạn mềm. Chỉ có root mới có thể nâng giới hạn cứng; bất cứ ai cũng có thể hạ thấp giới hạn cứng và giới hạn mềm có thể được sửa đổi theo một trong hai hướng với ràng buộc duy nhất là nó không thể cao hơn giới hạn cứng. Giới hạn mềm là giá trị thực tế quan trọng.
Do đó, bạn cần sắp xếp rằng tất cả các quy trình của bạn có giới hạn cứng đối với các tệp đang mở ít nhất là 4096. Bạn có thể giữ giới hạn mềm ở 1024. Trước khi khởi chạy quy trình đó yêu cầu nhiều tệp, hãy tăng giới hạn mềm. Trong /etc/security/limits.conf
, thêm các dòng
paislee hard nofile 4096
paislee soft nofile 1024
nơi paislee
là tên của người dùng mà bạn muốn chạy quá trình của bạn như. Trong trình bao khởi chạy tiến trình mà bạn muốn giới hạn cao hơn, hãy chạy
ulimit -Sn unlimited
để nâng giới hạn mềm đến giới hạn cứng.
ulimit 4096
không hoạt động. Tôi nghĩ-n
là chính xác. Như một bằng chứng về khái niệm, nó hoạt động nếu tôi lần đầu tiênsudo su - root
(nhưng chỉ thay đổi cho root).