我的 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"
试一试!