faz com que todos os processos de um determinado usuário sejam eliminados por qualquer pessoa

15

Em um servidor compartilhado, eu 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, ele possa eliminar qualquer um dos processos dos usuários de baixa prioridade.

É possível permitir algo assim?

    
por Aslan986 04.07.2018 / 08:38

3 respostas

24

Conceda aos outros usuários permissão para matar os processos como o usuário de baixa prioridade através de

sudo -u lowpriouser /bin/kill PID

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 no arquivo sudoers pode assumir a identidade do usuário de baixa prioridade e eliminar o processo.

Por exemplo:

%killers ALL = (lowpriouser) /bin/kill

Isso permitiria que todos os usuários do grupo killers executassem /bin/kill como lowpriouser .

Veja também o manual sudoers em seu sistema.

Em um sistema OpenBSD, o mesmo pode ser feito através do utilitário nativo doas com uma configuração como

permit :killers as lowpriouser cmd /bin/kill

Então

doas -u lowpriouser /bin/kill PID

Consulte os manuais de doas e doas.conf .

    
por 04.07.2018 / 08:50
5

Você não deve matar os processos, se eles forem de baixa prioridade, eles consumirão poucos recursos.

Para torná-los realmente de baixa prioridade, altere sua prioridade manualmente ou use um daemon como autonice 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, quanto mais tempo eles correm.

EDITAR existe um pacote chamado and que oferece essa funcionalidade para os Unices modernos.

    
por 04.07.2018 / 17:23
4

Acho que você aborda o problema do ângulo errado: se um processo é executado em configurações de baixa prioridade (CPU, E / S), ele não deve afetar outros processos, porque não será programado para ser executado. Quanto ao uso de memória, se a memória principal é apertada e o processo não estava programado para rodar por muito tempo (por exemplo, devido a restrições de CPU e E / S), suas páginas “limpas” são descartadas e suas páginas “sujas” são comprometidas ou trocados e não afetam mais o desempenho de outros processos.

Conclusão: com a definição correta de prioridades e espaço de troca suficiente, não é necessário eliminar os trabalhos de baixa prioridade para criar espaço para tarefas mais importantes; em vez disso, o núcleo cuidará para que o primeiro durma em favor do último.

    
por 04.07.2018 / 15:13