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?
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
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!
Vérifiez ceci Sauvegarder et restaurer les processus Linux avec CRI