首页 > 解决方案 > 输入后后台进程停止

问题描述

我正在尝试使用在后台运行 nodemon

nodemon index.js &

nodemon 输出其初始化

[nodemon] to restart at any time, enter `rs`
[nodemon] watching: *.*
[nodemon] starting `node index.js`
listening on port 8080

没有给出提示,但是,任何命令都会运行
(在第一次显示提示时按 enter 后)
运行cd会导致 bash 输出:

[1]+  Stopped                 nodemon index.js  (wd: ~/foo/bar)
(wd now: ~)

显示 nodemon 已停止运行

请帮帮我

据我了解,bash 应该将程序置于后台,并且就像所有其他在后台不断运行的进程一样,用户输入应该停止影响该进程的行为。

这应该发生吗?
我错过了什么吗?
如何在后台正确运行程序?
感谢大家的关注和时间。

额外的

我发现反复按下enter会导致作业停止,输出略有不同:

[1]+  Stopped                 nodemon index.js

enter仅当多次按下该键时才会发生这种情况。有时它会在多按 1 次之后发生,而其他时候它会在更多次之后发生。印刷次数没有明显规律

之后工作以同样的方式停止baz: command not found

标签: bashjobsnodemon

解决方案


您的程序正在按预期在后台启动,并且确实与用户输入断开连接。但是,当您在后台处理进程时,看起来作业控制输出已暂停,直到您按下Enter。尝试例如sleep 1 &- 一条线

[1]+ 完成睡眠 1

当您在后台进程完成Enter 按下时会出现。

我怀疑这可能是为了避免在用户尝试键入另一个命令时将行输出到屏幕上。


推荐阅读