Я хочу, щоб користувач запустив певний процес у системі з негативним приємним значенням. Я не можу просто відкинути процес на другий план, оскільки ця конкретна програма є сервером 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
цього, схоже, не робиться, мені довелося встановити обидва, використовуючи-
.