0

我有一个程序依赖于另一个正在运行的程序,所以我将此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's directorybook_server.coffee和 in的目录,node_modules但没有运气。

4

1 回答 1

2

所以后台进程进入后台只是在操作系统内部运行,但没有附加到你的 shell 的 tty。要找到它们,请使用jobs -lps带有类似ps -ef. 您可以使用grep来过滤输出,但您需要找到的是构建过程的进程 ID (PID),以便您可以使用kill <pid>. 您可能还想继续阅读pgreppkill哪些对这个过程很方便。

请注意,在您的示例中,您bg在不合适时使用。bg适用于这个序列:1. 在 shell 的前台启动一个作业,2. 使用 CTRL-Z 暂停该作业,3. 用于bg告诉 shell“允许该作业继续执行,但在后台与我的 tty 分离”。(同样,jobs这就是您要在这里寻找的东西)。

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

要获得令人惊讶的详细“每年重读”深度级别,请查看The TTY demystified

于 2013-09-09T02:05:13.807 回答