我正在尝试使用Node.JS通过restify提供一组Web服务。其中一个服务接收一些参数,然后通过使用子进程的exec方法在Linux上启动一个进程,传递为执行类似于“nohup program&”的执行程序。启动过程没有任何问题,但即使使用nohup也会在短暂的间隔后被杀死。我想知道是否有另一种方法可以通过Node.JS在后台启动进程。我也尝试使用child-process的spawn方法,但似乎没有启动该进程。
答案 0 :(得分:1)
因此nohup
和&
在此上下文中都不合适。这些是人类使用交互式shell时的实用程序。以编程方式启动子进程时,您不需要它们。只需直接通过可执行路径/名称启动您的流程。它将在"背景"默认情况下。 "前景"的概念和"背景"来自具有单个终端屏幕的单个用户的概念,但请记住,操作系统通常并行运行许多进程,因此调用了一些" background"工作在概念上并不完全正确。
您也不想要nohup
,因为这是一个特殊目的工具,允许您退出父shell进程并让子进程保持运行,但在您的情况下,您需要默认行为如果您的父node.js进程退出,则子工作进程也应该退出。