Я хочу, щоб користувач запустив певний процес у системі з негативним приємним значенням. Я не можу просто відкинути процес на другий план, оскільки ця конкретна програма є сервером minecraft, і я покладаюся на командний рядок для управління сервером.
Мій поточний сценарій bash виглядає приблизно так (важлива частина):
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просто затримує виконання renice. reniceвикористовує psдля перевірки Java-процесу за допомогою власного ідентифікатора користувачів. Можуть бути й інші випадки нересту java у різних користувачів, але сервер minecraft працює під своїм власним користувачем minecraft .
Я, очевидно, не хочу вводити пароль щоразу, коли запускаю сервер.
від / etc / sudoers :
minecraft ALL = NOPASSWD: /etc/renice
Чи є більш елегантний спосіб це зробити? Просто використання nice- це не варіант, sudo nice bashу поєднанні з NOPASSWD: варіант буде великою проблемою безпеки.
niceцього, схоже, не робиться, мені довелося встановити обидва, використовуючи-.