npm 后台脚本去哪儿了

Where do npm background scripts go?

本文关键字:后台 脚本 npm      更新时间:2023-09-26

我有一个程序依赖于另一个正在运行的程序,所以我将此build命令添加到我的package.json文件中

"scripts": {
    "start": "brunch watch --server",
    "build": "coffee server/modules/events/book_server.coffee &"
  }

所以在我用npm start运行我的主脚本之前,我运行了npm run-script build,这使我的主脚本工作,但是当我退出主脚本然后bg查找后台进程时,我收到消息

> -bash: bg: current: no such job

所以我决定再次运行npm run-script build但是以前的进程必须仍在运行,因为我收到错误消息

events.js:66
        throw arguments[1]; // Unhandled 'error' event
                       ^
Error: listen EADDRINUSE
  at errnoException (net.js:776:11)
  at Server._listen2._connectionKey (net.js:917:26)
  at process.startup.processNextTick.process._tickCallback (node.js:244:9)

当我尝试再次运行我的主程序时,出现错误

> TypeError: Cannot read property 'port' of null

我的问题是,这些背景脚本在哪里?

到目前为止,我已经查看了所有明显的地方,包括package.json目录,book_server.coffeenode_modules的目录,但没有运气。

因此,后台进程进入后台,只是在操作系统内运行,但不附加到外壳的 tty。要找到它们,请使用类似 ps -efjobs -lps 命令。可以使用grep来筛选输出,但需要查找的是生成过程的进程 ID (PID),以便可以使用 kill <pid> 停止它。您可能还想阅读对此过程很方便的pgreppkill

请注意,在您的示例中,当bg不合适时,您可以使用它。 bg适用于此序列:1. 在 shell 的前台启动作业,2. 使用 CTRL-Z 暂停该作业,3. 使用 bg 告诉 shell "允许此作业继续执行,但在后台与我的 TTY 分离"。(同样,jobs就是您在这里寻找的内容)。

从大局来看,在后台运行该coffee命令没有必要或好处,因为它只是一个简单的编译步骤,应该需要几毫秒的时间。

有关"每年重读"的惊人详细深度,请查看 TTY 揭秘。