我可以以某种方式暂停在后台登录的用户的所有进程吗?
我的14.10笔记本电脑上主要有两个帐户:我的(管理员)和我的兄弟(限制)。
现在当我的兄弟登录并使用flash player运行一些像firefox这样的应用程序时,它会消耗很多CPU。 我有一个英特尔2GHz,2核,但由于半破坏的显卡软件渲染。
当他现在锁定他的账户并登录我的账户时,即使我什么都不做,CPU也只有80%左右。 indicator-multiload
显示firefox和其他用户的compiz作为最耗费的进程,有时也是xorg,我想。
简而言之:我可以运行命令/脚本来暂停其他用户启动的进程,并在完成工作后再次恢复它们吗? 如果可以在每次锁定/登录/注销时执行,那将会很好。
但这对所有应用程序都安全吗? 我在哪里要注意?
一种方法是将SIGSTOP
信号发送到您兄弟的所有进程:
sudo pkill -STOP -u brother
要唤醒已停止的进程,使用SIGCONT
信号:
sudo pkill -CONT -u brother
您可以使用Upstart会话作业,该作业将在您登录或注销或锁定或解锁屏幕时运行。 例如,在~/.config/upstart
创建一个.conf
文件(比如~/.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
和一个converse文件(比如~/.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
您还需要在sudoers
输入NOPASSWD
条目:
sudo tee /etc/sudoers.d/stop-brother <
现在,当您登录,注销,锁定或解锁屏幕时,应自动发送信号。 您可以使用以下方式手动启动:
start stop-brother start start-brother
检查哪个应用程序占用了更多资源。
使用该命令查找该应用程序的pid
pidof "application name"
不带引号。
sudo kill -STOP "ID of the process"
然后,完成工作后,使用以下命令启动已停止的进程。
sudo kill -CONT "PID that you have killed earlier"
试试看!
使用CRIU检查此保存和还原Linux进程