Từ man renice
:
Người dùng không phải siêu người dùng chỉ có thể thay đổi mức độ ưu tiên của các quy trình mà họ sở hữu và chỉ có thể tăng đơn điệu `` giá trị đẹp '' (vì lý do bảo mật) trong phạm vi 0 thành PRIO_MAX (20) [...]
Vì vậy, tôi có thể renice
tự xử lý các quy trình của mình trở lên (ưu tiên thấp hơn) nhưng không bao giờ đi xuống:
$ renice 10 22316
22316 (process ID) old priority 0, new priority 10
$ renice 9 22316
renice: failed to set priority for 22316 (process ID): Permission denied
Tại sao lại thế này? Tôi có thể hiểu tại sao người dùng bình thường không thể đặt giá trị đẹp thấp hơn 0, nhưng tại sao vì tôi có thể giảm mức ưu tiên xuống 10 nên tôi không thể tăng lại thành 9? "Lý do bảo mật" là gì cho điều này? Tôi có quyền khởi chạy một quy trình có giá trị tốt là 9, vậy tại sao tôi không thể đổi tên thành 9?
EDIT: Tôi nên học cách cuộn xuống. Hóa ra điều này được liệt kê như là một lỗi trong man renice
:
BUGS
Non super-users can not increase scheduling priorities of their own
processes, even if they were the ones that decreased the priorities
in the first place.
Điều đó thậm chí còn khó hiểu hơn. Nếu họ coi hành vi này là một lỗi, tại sao không thay đổi nó? Các renice
lệnh xuất hiện trong 4.0BSD mà tôi nghĩ là từ năm 1980. Điều này sẽ rất dễ dàng để sửa chữa vv Một mặt họ dường như đã chọn để lại nó và mặt khác họ liệt kê nó như là một lỗi.