Ubuntu环境下如何用nohup实现Ruby驱动Jupyter-Book后台运行
解决Ubuntu下
make serve后台驻留运行的问题 你遇到的问题大概率是因为Guard(从前台运行输出能看到它在管理Jekyll服务)在后台运行时,需要处理终端交互或标准输入关联的问题,导致nohup命令没达到预期效果。下面给你几个可行的解决方案:
方案1:完善nohup命令,彻底断开终端输入关联
你的nohup命令已经重定向了输出,但Guard可能还在等待标准输入,导致进程挂起。试试加上< /dev/null彻底断开终端输入:
nohup make serve >/dev/null 2>&1 < /dev/null &
执行后用以下命令检查进程是否正常运行:
ps aux | grep guard
如果能看到Guard相关的进程条目,说明服务已经在后台正常驻留了。
方案2:用screen/tmux实现后台运行(更可靠,支持重新连接)
这是长期运行后台服务的推荐方式,不仅能让服务驻留,还能随时重新进入终端查看输出或管理服务:
- 先安装screen(如果系统没装的话):
sudo apt update && sudo apt install screen
- 创建一个专属的screen会话:
screen -S jupyter_book_server
- 在新会话里运行
make serve,等服务正常启动后,按下Ctrl+A再按D,就能脱离会话让服务在后台继续运行。 - 之后如果需要重新查看服务状态或操作,执行:
screen -r jupyter_book_server
要停止服务的话,进入会话后按Ctrl+C即可。
方案3:修改Makefile让Guard以守护进程模式启动
如果你的Guard版本支持后台模式,可以修改Makefile里的serve目标,把原来的bundle exec guard改成:
bundle exec guard start --daemon
这样直接运行make serve就会让Guard后台运行,不需要额外的nohup命令。这种方式下,服务日志通常会输出到项目目录下的guard.log文件,方便后续查看。
不管用哪种方案,都可以用curl http://0.0.0.0:4000/jupyter-book/来测试服务是否正常响应。
内容的提问来源于stack exchange,提问作者user12054427
相关产品推荐
相关产品推荐

