Bash 后台进程在输入后停止
我正在尝试在后台使用Bash 后台进程在输入后停止,bash,jobs,nodemon,Bash,Jobs,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 &
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
键不止一次时,才会出现这种情况。有时它发生在再按一次之后,而另一些时候它发生在多次之后。印刷机的数量没有明确的模式
在
baz:command not found
您的程序按预期在后台启动,并且确实与用户输入断开连接后,作业以相同的方式停止。但是,在对流程进行后台处理时,作业控制输出似乎会暂停,直到按Enter键为止。尝试使用例如sleep 1&
-一行
[1] +完成睡眠1
后台处理完成后按Enter键时将显示
我怀疑这可能是为了避免在用户尝试键入另一个命令时将行输出到屏幕上。运行时,
nodemon
是否从stdin读取?根据bash手册:“只允许前台进程从终端读取数据。试图从终端读取数据的后台进程由内核的终端驱动程序发送一个sigtin信号,除非被捕获,否则会暂停进程。”