У меня есть высокоприоритетный сервис, с которого я запускаю sudo nice -n -10 process
. Для этого процесса не нужны права суперпользователя хотя, за исключением приоритетного повышения. Но хороший требует полномочий суперпользователя поднять приоритет.
Как я выполняю процесс с поднятым приоритетом, также не выполняя его как корень?
Одна возможность - это (о котором я просто думал после выяснения):
sudo nice -10 sudo -u user command
Но кажется, что должен быть более изящный метод.
Другая возможность использует sudo renice
изменить приоритет процесса после запуска его. Для получения PID процесса можно использовать ps
и sed
, или можно запустить его в фоне и получить его процесс непосредственно от оболочки:
process &
pid=$!
sudo renice -10 $pid
fg $pid # if you don't want it in background
Обратите внимание, что, если процесс порождает другие процессы и выходы, он, вероятно, сделает поэтому к этому времени renice выполнения, таким образом, Вы захотите использовать ps
получить PID дочернего процесса / процессы и renice они.