web-dev-qa-db-fra.com

Puis-je en quelque sorte mettre en pause tous les processus d'un utilisateur connecté en arrière-plan?

J'ai principalement deux comptes sur mon ordinateur portable 14.10: le mien (admin) et celui de mon frère (restreint).

Maintenant, lorsque mon frère est connecté et exécute des applications telles que Firefox avec Flash Player, il consomme beaucoup de temps processeur. J'ai un Intel 2GHz, 2 cœurs, mais avec un rendu logiciel à cause d'une carte graphique à moitié cassée.
Quand il verrouille maintenant son compte et que je me connecte au mien, le processeur est à environ 80%, même si je ne fais rien. indicator-multiload indique à firefox et à la composition de l’autre utilisateur les processus les plus consommateurs, parfois xorg aussi, je pense.

Donc, en un mot: Puis-je exécuter une commande/un script pour mettre en pause les processus démarrés par un autre utilisateur et les reprendre après avoir effectué mon travail? Serait bien si cela pouvait être exécuté à chaque verrouillage/connexion/déconnexion.

Mais est-ce sûr pour toutes les applications? Où dois-je faire attention?

3
Byte Commander

Une solution serait d'envoyer le signal SIGSTOP à tous les processus de votre frère:

Sudo pkill -STOP -u brother

Pour réveiller les processus arrêtés, le signal SIGCONT est utilisé:

Sudo pkill -CONT -u brother

Vous pouvez utiliser un travail de session Upstart, qui pourrait s’exécuter lorsque vous êtes connecté ou déconnecté, ou verrouillé ou déverrouillé votre écran. Par exemple, créez un fichier .conf dans ~/.config/upstart (dites ~/.config/upstart/stop-brother.conf) contenant:

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

exec Sudo pkill -STOP -u brother

Et un fichier de conversation (disons ~/.config/upstart/start-brother.conf) contenant:

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

exec Sudo pkill -CONT -u brother

Vous avez également besoin d'une entrée NOPASSWD dans 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

Les signaux doivent maintenant être envoyés automatiquement lorsque vous vous connectez, déconnectez-vous, verrouillez ou déverrouillez l'écran. Vous pouvez lancer manuellement soit en utilisant:

start stop-brother
start start-brother
6
muru

Vérifiez quelle application prend des ressources plus importantes.

Trouvez le pid de cette application en utilisant la commande

pidof "application name" sans les guillemets.

 Sudo kill -STOP "ID of the process"

Ensuite, une fois que vous avez terminé votre travail, utilisez la commande ci-dessous pour démarrer ce processus arrêté.

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

Essaie!

2
Jaison V John
1
PKumar