ulimit -n
đặt giới hạn mềm theo mặc định; bạn có thể thêm -H
tùy chọn để xem / đặt giới hạn cứng.
Đối với hầu hết các phần, giới hạn mềm và cứng hoạt động như thế này:
- các quy trình của root (thực ra, bất kỳ quy trình nào
CAP_SYS_RESOURCE
) có thể tăng hoặc giảm bất kỳ giới hạn nào đối với bất kỳ quy trình nào.
- mọi quy trình của người dùng có thể hạ thấp mọi giới hạn đối với các quy trình khác thuộc sở hữu của người dùng đó.
- mọi quy trình của người dùng có thể tăng giới hạn mềm lên đến giới hạn cứng đối với các quy trình do người dùng đó sở hữu.
- Nếu một quá trình cố gắng vượt quá giới hạn mềm của nó, nỗ lực sẽ thất bại.
Vì vậy, giới hạn cứng hoạt động như một nắp trên giới hạn mềm (ngoại trừ root, người bình thường có thể làm bất cứ điều gì).
Có một ngoại lệ: Giới hạn CPU mềm sẽ gửi SIGXCPU
tín hiệu. Một quá trình có thể chọn để bỏ qua điều đó, hoặc dành thời gian làm dọn dẹp, vv Một khi giới hạn CPU cứng được vượt qua, hạt nhân gửi SIGKILL
-which không catchable, handleable, hoặc có thể bỏ qua. Vì vậy, trong trường hợp này, giới hạn mềm có chức năng như một cảnh báo "bạn đã hết thời gian CPU, hãy kết thúc và thoát ngay lập tức, nếu không!" và giới hạn cứng là "hoặc cách khác."
Hầu hết là trên mỗi quy trình, nhưng một số ít (như RLIMIT_NPROC
) là cho mỗi người dùng. Các getrlimit (2) thủ công trang quy định cụ thể đối với từng giới hạn.