可以暂停控制台操作吗?

可以暂停控制台操作吗?

我有很多工作在不同的控制台上运行。

它们几乎占用了所有的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

有几种方法可以暂停进程:

  1. 向进程发送 SIGSTOP 来冻结它(SIGCONT 来解冻)。您还可以按 Ctrl+S (Ctrl+Q) 将这些信号发送到活动进程。但如果它在后台,您将不得不使用kill或其变体。

  2. 用于nice设置进程的优先级。默认情况下,所有用户进程都设置为 10,因此获得相同的 CPU。如果这个过程不重要并且可以放慢 - 提高友好度。如果一个进程需要有优先级 - 降低niceness。

  3. 只需停止不需要的进程即可:)

相关内容