Dari man renice
:
Pengguna selain pengguna super hanya dapat mengubah prioritas proses yang mereka miliki, dan hanya dapat secara monoton meningkatkan `` nilai bagus '' (untuk alasan keamanan) dalam kisaran 0 hingga PRIO_MAX (20) [...]
Jadi, saya bisa renice
memproses sendiri ke atas (memberi mereka prioritas lebih rendah) tetapi tidak pernah ke bawah:
$ 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
Kenapa ini? Saya dapat memahami mengapa pengguna normal tidak dapat menetapkan nilai bagus lebih rendah dari 0, tetapi mengapa karena saya dapat mengurangi prioritas menjadi 10, saya tidak dapat meningkatkannya lagi menjadi 9? Apa "alasan keamanan" yang ada untuk ini? Saya memiliki hak untuk meluncurkan proses dengan nilai bagus 9, jadi mengapa saya tidak bisa mengubahnya menjadi 9?
EDIT: Saya harus belajar gulir ke bawah. Ternyata ini terdaftar sebagai bug di 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.
Itu bahkan lebih membingungkan. Jika mereka menganggap perilaku ini sebagai bug, mengapa tidak mengubahnya? The renice
perintah muncul di 4.0BSD yang saya pikir adalah dari 1980. Ini harus sangat mudah untuk memperbaiki sehingga di satu sisi mereka tampaknya telah memilih untuk meninggalkannya dan di sisi lain mereka daftar sebagai bug.
Jawaban:
Sejak linux 2.6.12, itu tergantung pada nilai batas RLIMIT_NICE (
ulimit -e
). Yang dapat mengambil nilai dari 0 hingga 40. Batas itu lebih merupakan batas pada prioritas proses (semakin besar angka itu, semakin tinggi prioritas yang dapat ditetapkan pengguna untuk suatu proses).Anda akan melihat nilai default adalah 20 di ubuntu 10,04 dan 0 di Debian jessie misalnya.
Nilai
n
untuk batas itu berarti bahwa proses tanpa kapabilitas CAP_NICE hanya dapat meningkatkan prioritas proses hinggan
, yang berarti mengurangi kebaikan hingga kebaikan20 - n
. Jadi untuk nilai 0, itu berarti tidak ada pengguna yang tidak memiliki hak istimewa yang dapat menurunkan kebaikan di bawah 20, jadi tidak ada pengguna yang tidak memiliki hak istimewa yang dapat menurunkan kebaikan.Dengan nilai 20, pengguna yang tidak memiliki hak istimewa dapat menurunkan kembali ke 0.
Terserah administrator untuk memilih apakah mereka mengizinkan pengguna untuk menurunkan prioritas proses mereka, dan ke level apa dengan menetapkan batas keras untuk itu.
Mengenai mengapa administrator mungkin tidak ingin pengguna menurunkan prioritas proses mereka, lihat jawaban Flup .
sumber
Ini untuk apa yang saya sebut alasan kebijakan . Idenya adalah bahwa pengguna normal tidak dapat mengesampingkan tindakan pengguna istimewa.
Katakanlah Anda adalah pengguna di beberapa server bersama yang sangat besar. Anda menjalankan proses hogging CPU yang sangat besar sehingga merugikan pengguna lain. Sysadmin
renice
adalah beberapa proses Anda karena dia tidak begitu menyukaimu. OS tidak ingat siapa yang melakukan iturenice
, tetapi ia tahu bahwa pengguna normal tidak dapat membalikkan tindakan. Dengan cara ini, sysadmin memiliki kendali atas prioritas proses pengguna normal.sumber
man renice
.renice
tidak dapat dibalik kecuali oleh pengguna yang memiliki hak istimewa.renice
ituroot
berhasil.Aneh? ini bekerja untuk saya
contoh
Sunting 2
Konfigurasi perubahan
Dan saya anggota grup audio, ini untuk mengurangi latensi dengan jack / ardor dan buffer xruns saat merekam.
renice
sumber
cat /etc/lsb*
danrenice --version
juga.renice --version renice from util-linux-ng 2.17.2
tapi masih di AIX itu tidak mungkin