Confira /etc/security/limits.conf
. Lá você pode especificar quais prioridades os usuários ou grupos podem usar. Página de manual: man 5 limits.conf
Eu tenho um serviço de alta prioridade que começo com sudo nice -n -10 process
. Esse processo não precisa de direitos de superusuário, exceto pela elevação de prioridade. Mas bom requer privilégios de superusuário para elevar a prioridade.
Como executo um processo com prioridade elevada, sem também executá-lo como root?
Uma possibilidade é essa (que acabei de pensar depois de perguntar):
sudo nice -10 sudo -u user command
Mas parece que deveria haver um método mais elegante.
A outra possibilidade é usar sudo renice
para alterar a prioridade do processo depois de iniciá-lo. Para obter o PID do processo, você pode usar ps
e sed
ou pode iniciá-lo em segundo plano e obter seu processo diretamente do shell:
process &
pid=$!
sudo renice -10 $pid
fg $pid # if you don't want it in background
Observe que, se o processo gerar outros processos e saídas, provavelmente o fará no momento em que o renice for executado, portanto, você deverá usar ps
para obter o PID do processo / processo filho; renuncie aqueles.