我可以以某种方式暂停后台登录用户的所有进程吗?

我可以以某种方式暂停后台登录用户的所有进程吗?

我的 14.10 笔记本电脑上主要有两个帐户:我的帐户(管理员)和我兄弟的帐户(受限)。

现在,当我的兄弟登录并运行一些应用程序(如带有 Flash Player 的 Firefox)时,它会消耗大量 CPU。我有一台 Intel 2GHz、2 核处理器,但由于显卡半坏,所以只能使用软件渲染。
现在,当他锁定他的帐户,我登录我的帐户时,即使我什么都不做,CPU 也会达到 80% 左右。indicator-multiload显示其他用户的 Firefox 和 compiz 是最耗电的进程,有时 xorg 也是如此,我想。

简而言之:我可以运行命令/脚本来暂停其他用户启动的进程,并在我完成工作后再次恢复它们吗?如果每次锁定/登录/注销时都可以执行该命令/脚本,那就太好了。

但这对所有应用程序来说都是安全的吗?我需要注意什么?

答案1

一种方法是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

检查哪个应用程序占用了较多的资源。

使用命令查找该应用程序的 pid

pidof "application name"没有引号。

 sudo kill -STOP "ID of the process"

然后,一旦您完成工作,请使用以下命令启动已停止的进程。

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

试一试!

答案3

相关内容