Posso in qualche modo mettere in pausa tutti i processi di un utente che ha effettuato l'accesso in background?

2

Ho principalmente due account sul mio laptop 14.10: Il mio (amministratore) e mio fratello (limitato).

Ora, quando mio fratello è loggato ed esegue alcune applicazioni come firefox con flash player, consuma molta CPU. Ho un Intel 2GHz, 2 core, ma con il rendering del software a causa della scheda grafica mezza rotta.
Quando ora blocca il suo account e accedo al mio, la CPU è a circa l'80% anche se non faccio nulla. indicator-multiload mostra firefox e compiz dell'altro utente come i processi più consumanti, a volte anche xorg, credo.

Quindi, in breve: posso eseguire un comando / script per sospendere i processi avviati da un altro utente e riprenderli di nuovo dopo aver eseguito il mio lavoro? Sarebbe bello se ciò potesse essere eseguito ad ogni blocco / login / logout.

Ma è sicuro per tutte le applicazioni? Dove devo prestare attenzione?

    
posta Byte Commander 18.02.2015 - 22:06

3 risposte

4

Un modo sarebbe quello di inviare il segnale SIGSTOP a tutti i processi di tuo fratello:

sudo pkill -STOP -u brother

Per risvegliare i processi fermati, viene utilizzato il segnale SIGCONT :

sudo pkill -CONT -u brother

È possibile utilizzare un processo di sessione Upstart, uno che verrebbe eseguito quando si è effettuato il login o l'uscita o bloccato o sbloccato lo schermo. Ad esempio, crea un file .conf in ~/.config/upstart (ad esempio ~/.config/upstart/stop-brother.conf ) contenente:

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

exec sudo pkill -STOP -u brother

E un file inverso (ad esempio ~/.config/upstart/start-brother.conf ) contenente:

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

exec sudo pkill -CONT -u brother

Hai anche bisogno di una voce NOPASSWD in 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

Ora i segnali devono essere inviati automaticamente quando si accede, si chiude, si blocca o si sblocca lo schermo. Puoi iniziare manualmente usando:

start stop-brother
start start-brother
    
risposta data muru 20.02.2015 - 13:58
1

Verifica quale applicazione sta utilizzando risorse più elevate.

Trova il pid di quell'applicazione usando il comando

pidof "application name" senza virgolette.

 sudo kill -STOP "ID of the process"

Quindi, una volta completato il tuo lavoro, usa il comando seguente per avviare quel processo interrotto.

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

Fai un tentativo!

    
risposta data Jaison V John 19.02.2015 - 07:08
0
risposta data PKumar 19.02.2015 - 07:59

Leggi altre domande sui tag