Saya ingin pengguna menjalankan proses tertentu pada sistem dengan nilai bagus negatif. Saya tidak bisa begitu saja memotong proses ke latar belakang karena program khusus ini adalah server minecraft dan saya mengandalkan baris perintah untuk mengontrol server.
Skrip bash saya saat ini terlihat seperti ini (bagian penting):
sleep 10 && \
sudo renice -n $NICENESS $(ps -u $(id -u) -o "%p:%c" | sed -n "s/:java$//p") & \
java -Xmx8G -Xms2G -jar minecraft_server.jar nogui
sleep
hanya menunda eksekusi renice
. renice
itu sendiri digunakan ps
untuk memeriksa proses java menggunakan ID pengguna sendiri. Mungkin ada contoh lain dari pemijahan java di bawah pengguna yang berbeda, tetapi server minecraft berjalan di bawah minecraft penggunanya sendiri .
Saya jelas tidak ingin memasukkan kata sandi setiap kali saya memulai server.
dari / etc / sudoers :
minecraft ALL = NOPASSWD: /etc/renice
Apakah ada cara yang lebih elegan untuk melakukan ini? Cukup menggunakan nice
bukanlah suatu pilihan, sudo nice bash
dalam kombinasi dengan opsi NOPASSWD: akan menjadi masalah keamanan yang hebat.
nice
sepertinya tidak melakukannya, saya harus mengatur keduanya, menggunakan-
.