Em um servidor compartilhado, gostaria de ter alguns usuários de prioridade muito baixa, de modo que sempre que um outro usuário (também sem privilégios de root) precisar dos recursos, eles possam matar qualquer um dos processos de usuários de baixa prioridade.
É possível permitir algo assim?
Dê aos outros usuários permissão para matar os processos como o usuário de baixa prioridade por meio de
Um usuário só pode sinalizar seus próprios processos, a menos que tenha privilégios de root. Ao usar
sudo -u
um usuário com a configuração correta nosudoers
arquivo pode-se assumir a identidade do usuário de baixa prioridade e matar o processo.Por exemplo:
Isso permitiria que todos os usuários do grupo
killers
executassem/bin/kill
como arquivoslowpriouser
.Consulte também o
sudoers
manual do seu sistema.Em um sistema OpenBSD, o mesmo pode ser feito através do utilitário nativo
doas
com uma configuração comoEntão
Consulte os manuais para
doas
edoas.conf
.Você não deve matar os processos, se forem de baixa prioridade consumirão poucos recursos.
Para realmente torná-los de baixa prioridade, altere sua prioridade manualmente ou use um daemon como
autonice
aquele que escrevi para o DEC OSF/1 há muitos anos (c. 1994) que procura por trabalhos de longa duração e reduz progressivamente sua prioridade à medida que eles são executados .EDIT existe um pacote chamado
and
que oferece essa funcionalidade para Unices modernos.Acho que você aborda a questão do ângulo errado: se um processo é executado em configurações de baixa prioridade (CPU, E/S), ele não deve afetar muito outros processos porque não será agendado para execução. Quanto ao uso de memória, se a memória principal estiver apertada e o processo não estiver programado para ser executado em um longo período de tempo (por exemplo, devido a restrições de CPU e E/S), suas páginas “limpas” serão descartadas e suas páginas “sujas” serão confirmadas ou trocados e não afetam mais o desempenho de outros processos.
Conclusão: com a configuração de prioridade correta e espaço de troca suficiente, não deve ser necessário eliminar trabalhos de baixa prioridade para dar “espaço” para tarefas mais importantes; em vez disso, o kernel terá o cuidado de colocar o primeiro para dormir em favor do último.