我有一个 lerna 脚本( lerna dev
),它使用 --parallel
启动几个包的开发服务器选项(如果我不使用该选项,则只会启动第一个服务,而不会启动其他服务)。这些服务器在不同端口上以开发模式为各自的应用程序提供服务,并带有热重载。基本上,这允许顺利开发,因为我们只需要输入一个命令即可开始处理多个包。
我注意到的问题是,当我中断此 lerna 任务时,服务器不会关闭。当我运行我的 lerna dev
命令,它会打印消息,说明服务器已经在它们使用的端口上运行。这意味着,当我关闭 lerna dev
时命令(使用 CTRL+C),它不会杀死所有正在运行的进程(有些被杀死,有些没有)。
有趣的是,那些没有关闭的是 create-react-app projects
.
所以这是我的问题:我如何确保通过 lerna run
启动进程命令与 --parallel
选项都与主进程一起被杀死?
PS:这发生在 Unix 系统上,我们不使用 Windows。
最佳答案
我建议您不要为此使用 ctrl+c。看看使用 kill
通过 pid(进程 ID)杀死进程或 pkill -f
.
首先,看看哪些 lerna 进程正在运行。我的猜测是 ps aux | grep lerna
应该在那里显示您想要的内容(如果需要,请调整 grep)。如果是这样的话,你可能会看到一个主进程(我在使用 Nginx 时会看到,我从来没有使用过 lerna)如果是这样的话 PID并输入 kill PID
其中 PID 是您的主 PID。如果这不会杀死所有进程,请使用 pkill -f lerna
杀死与 lerna 搜索词匹配的所有进程(如果需要,再次调整)。
有关如何根据搜索词终止进程的更多信息,请参阅 How to kill all processes matching a name
关于unix - 一次中断所有 lerna --parallel 任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52926315/