Можно ли как-то приостановить все процессы пользователя, вошедшего в фоновый режим? - proUbuntu
3 голосов
/ 18 февраля 2015

У меня на ноутбуке 14.10 в основном два аккаунта: мой (администратор) и мой брат (ограничен).

Теперь, когда мой брат вошел в систему и запускает некоторые приложения, такие как Firefox с Flash Player, он потребляет много ресурсов процессора. У меня Intel 2 ГГц, 2 ядра, но с программным рендерингом из-за полуразбитой видеокарты.
Когда он теперь блокирует свою учетную запись, а я захожу в свою, загрузка процессора составляет около 80%, даже если я ничего не делаю. indicator-multiload показывает firefox и compiz другого пользователя как наиболее ресурсоемкие процессы, я думаю, иногда xorg.

Итак, в двух словах: могу ли я запустить команду / скрипт, чтобы приостановить процессы, запущенные другим пользователем, и возобновить их после того, как я выполню свою работу? Было бы хорошо, если бы это могло выполняться при каждой блокировке / входе в систему / выходе из системы.

Но безопасно ли это для всех приложений? На что мне обратить внимание?

Ответы [ 3 ]

6 голосов
/ 20 февраля 2015

Один из способов - отправить сигнал SIGSTOP всем процессам вашего брата:

sudo pkill -STOP -u brother

Для пробуждения остановленных процессов используется сигнал SIGCONT:

sudo pkill -CONT -u brother

Вы можете использовать задание сеанса Upstart, которое будет запускаться, когда вы входите в систему, выходите из системы, блокируете или разблокируете экран. Например, создайте файл .conf в ~/.config/upstart (скажем, ~/.config/upstart/stop-brother.conf), содержащий:

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

exec sudo pkill -STOP -u brother

И обратный файл (скажем, ~/.config/upstart/start-brother.conf), содержащий:

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

exec sudo pkill -CONT -u brother

Вам также необходимо ввести NOPASSWD в 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

Теперь сигналы должны отправляться автоматически при входе, выходе, блокировке или разблокировке экрана. Вы можете инициировать вручную, используя:

start stop-brother
start start-brother
2 голосов
/ 19 февраля 2015

Проверьте, какое приложение использует более высокие ресурсы.

Найдите pid этого приложения с помощью команды

pidof "application name" без кавычек.

 sudo kill -STOP "ID of the process"

Затем, как только вы закончите свою работу, используйте следующую команду, чтобы запустить этот остановленный процесс.

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

Попробуйте!

1 голос
/ 19 февраля 2015
...