Como faço para elevar a prioridade de um processo sem dar a esse processo direitos de superusuário?

4

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?

    
por Myrddin Emrys 21.01.2011 / 16:54

3 respostas

3

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

    
por 21.01.2011 / 17:32
1

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.

    
por 21.01.2011 / 16:57
1

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.

    
por 21.01.2011 / 17:12

Tags