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