我有一个程序依赖于正在运行的另一个程序,因此我将此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.coffee
和node_modules
目录,但没有运气。
答案 0 :(得分:1)
所以后台进程只是在操作系统内部运行但没有附加到你的shell的tty上。要查找它们,请使用jobs -l
或ps
命令,例如ps -ef
。您可以使用grep
来过滤输出,但您需要找到的是构建过程的进程ID(PID),因此您可以使用kill <pid>
来停止它。您可能还想阅读pgrep
和pkill
,这对于此过程非常方便。
请注意,在您的示例中,如果不合适,请使用bg
。 bg
用于此序列:1。在shell的前台启动作业,2。使用CTRL-Z暂停该作业,3。使用bg
告诉shell&#34;允许这个工作继续执行,但在后台与我的tty脱离了#34;。 (再次,jobs
就是你在这里寻找的。)
从更大的角度来看,在后台运行coffee
命令不需要或没有好处,因为它只是一个简单的补充步骤,应该花费几毫秒的时间。
每年重读一次惊人的细节&#34;&#34;深度,请查看The TTY demystified。