我有很多工作在不同的控制台上运行。
它们几乎占用了所有的CPU使用率,这导致我很难控制系统(响应时间非常慢)
有什么办法可以暂停这些控制台吗?或者还有其他方式吗?
#更新
我实际上是在许多不同的控制台中构建Yocto,似乎很难调整特定的进程,并且在构建Yocto时,有许多不同的进程在运行,它们可能会反复结束并启动另一个新进程。
答案1
如果是前台进程,可以使用ctrl +z
暂停执行前台命令,将进程置于后台,此时可以使用fg重新唤醒并置于前台
liruilong@liruilongs:~$ jobs
liruilong@liruilongs:~$ sleep 2000
^Z
[1]+ Stopped sleep 2000
liruilong@liruilongs:~$ jobs
[1]+ Stopped sleep 2000
liruilong@liruilongs:~$ fg
sleep 2000
除了修改进程优先级之外,还可以考虑使用cgroup
进程启动时限制资源
如果使用systemd
,您可以通过限制进程的资源cgroup
。
┌──[[email protected]]-[~]
└─$ systemd-run -p MemoryLimit=5M -p CPUShares=100 --unit=sleep-50 --slice=test sleep 50
Running as unit sleep-50.service.
答案2
有几种方法可以暂停进程:
向进程发送 SIGSTOP 来冻结它(SIGCONT 来解冻)。您还可以按 Ctrl+S (Ctrl+Q) 将这些信号发送到活动进程。但如果它在后台,您将不得不使用
kill
或其变体。用于
nice
设置进程的优先级。默认情况下,所有用户进程都设置为 10,因此获得相同的 CPU。如果这个过程不重要并且可以放慢 - 提高友好度。如果一个进程需要有优先级 - 降低niceness。只需停止不需要的进程即可:)