Posso de alguma forma pausar todos os processos de um usuário logado em segundo plano?

2

Eu tenho principalmente duas contas no meu laptop 14.10: Meu (admin) e meu irmão (restrito).

Agora, quando meu irmão está logado e executa alguns aplicativos como o firefox com o flash player, ele consome muito CPU. Eu tenho uma Intel 2GHz, 2 núcleos, mas com renderização de software por causa da placa gráfica quebrada. Quando ele agora bloqueia sua conta e eu entro na minha, a CPU está em cerca de 80%, mesmo que eu não faça nada. indicator-multiload mostra o firefox e compiz do outro usuário como a maioria dos processos de consumo, às vezes xorg também, eu acho.

Em poucas palavras: Posso executar um comando / script para pausar os processos iniciados por outro usuário e retomar os mesmos depois que eu tiver feito meu trabalho? Seria legal se isso pudesse ser executado a cada bloqueio / login / logout.

Mas isso é seguro para todos os aplicativos? Onde tenho que prestar atenção?

    
por Byte Commander 18.02.2015 / 22:06

3 respostas

4

Uma maneira seria enviar o sinal SIGSTOP para todos os processos do seu irmão:

sudo pkill -STOP -u brother

Para despertar os processos interrompidos, o sinal SIGCONT é usado:

sudo pkill -CONT -u brother

Você pode usar um trabalho de sessão do Upstart, que pode ser executado quando você entra ou sai ou bloqueia ou desbloqueia a tela. Por exemplo, crie um arquivo .conf em ~/.config/upstart (digamos ~/.config/upstart/stop-brother.conf ) contendo:

description "Stop all my brother's processes"
start on desktop-start or desktop-unlock
task

exec sudo pkill -STOP -u brother

E um arquivo de conversa (digamos ~/.config/upstart/start-brother.conf ) contendo:

description "Resume all my brother's processes"
start on desktop-end or desktop-lock
task

exec sudo pkill -CONT -u brother

Você também precisa de uma entrada NOPASSWD em sudoers :

sudo tee /etc/sudoers.d/stop-brother <<EOF
$USER ALL = (ALL) /usr/bin/pkill -STOP -u brother, /usr/bin/pkill -CONT -u brother
EOF

Agora, os sinais devem ser enviados automaticamente quando você fizer login, sair, bloquear ou desbloquear a tela. Você pode iniciar manualmente usando:

start stop-brother
start start-brother
    
por muru 20.02.2015 / 13:58
1

Verifique qual aplicativo está levando recursos maiores.

Encontre o pid dessa aplicação usando o comando

pidof "application name" sem as aspas.

 sudo kill -STOP "ID of the process"

Depois de concluir seu trabalho, use o comando abaixo para iniciar o processo interrompido.

sudo kill -CONT "PID that you have killed earlier"

Experimente!

    
por Jaison V John 19.02.2015 / 07:08
0
por PKumar 19.02.2015 / 07:59