使用多个终端,其中一个是关键任务?

使用多个终端,其中一个是关键任务?

因此,我有一个任务关键型但资源占用并不大的 node.js 程序,该程序在 Ubuntu 18 virtualbox 上的一个终端上全天候运行,并且我需要使用一两个额外的终端进行开发和研究。最终,我会在云 VPS 或第二台机器上安装第一个程序,但现在它在我的主工作站上。

我对此还很新手,所以请原谅我的问题,但是:

  1. 多个终端是否完全沙盒化?

  2. 如果我在第二个终端上运行 CPU/内存密集型操作,除了使用整体资源之外,它还会以任何方式干扰第一个终端吗?

  3. 有没有一个好的方法可以为关键任务终端优先分配网络、CPU 和内存资源?

答案1

“终端”本身并不是node实际执行工作的进程。您在终端上看到的输出仅仅是进程的stdin一种表现形式。stdout

进程本身将被调用,node并且其功能与终端没有直接关联,除非终端关闭时(即,SIGHUP由于它是终端的子进程,因此被发送到进程),进程将被关闭,因为终端通过分叉自身并将其内容替换为您的应用程序来创建进程。可以通过在命令末尾添加一个(使其忽略)或在或会话内运行命令(推荐,因为您可以轻松地重新连接)node来规避此问题&SIGHUPscreentmux

因此回答你的问题

  1. 由于终端实际上​​并不“包含”你的进程,因此它们之间实际上没有任何隔离。如果任何进程具有 root 访问权限,它就可以干扰任何其他进程

  2. 这一切都取决于nice相关进程的 ness 值,因为如果将更多的总体 CPU 时间分配给具有较低值的进程,则如果系统被推到极限,nice则可能会减慢任何其他具有较高值的​​进程的速度nice

  3. nice允许您设置进程的“优先级”,优先级越低,优先级越高。至于网络,您可以使用它trickle来调整带宽

无论如何,在用于研究/开发工作的系统上运行任何关键任务都不是最佳选择,应尽可能避免

相关内容