npm后台脚本在哪里?

时间:2013-09-09 01:56:02

标签: javascript node.js npm

我有一个程序依赖于正在运行的另一个程序,因此我将此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目录,但没有运气。

1 个答案:

答案 0 :(得分:1)

所以后台进程只是在操作系统内部运行但没有附加到你的shell的tty上。要查找它们,请使用jobs -lps命令,例如ps -ef。您可以使用grep来过滤输出,但您需要找到的是构建过程的进程ID(PID),因此您可以使用kill <pid>来停止它。您可能还想阅读pgreppkill,这对于此过程非常方便。

请注意,在您的示例中,如果不合适,请使用bgbg用于此序列:1。在shell的前台启动作业,2。使用CTRL-Z暂停该作业,3。使用bg告诉shell&#34;允许这个工作继续执行,但在后台与我的tty脱离了#34;。 (再次,jobs就是你在这里寻找的。)

从更大的角度来看,在后台运行coffee命令不需要或没有好处,因为它只是一个简单的补充步骤,应该花费几毫秒的时间。

每年重读一次惊人的细节&#34;&#34;深度,请查看The TTY demystified