前几天在部署一个服务的时候,通过ssh 进行终端访问的情况下,服务运行正常,但是一旦关闭终端会话, 则服务会停止。
后来想想应该是本次访问的时效是被系统限制在仅在终端访问期间,服务无法后台运行。
通过研究文档,最后发现确实是这个问题。使用nohup 的方式成功启动,方法如下
1) nohup +command+ &(将该服务转为后台运行,命令端不显示运行细节)
该命令会在服务所在的目录下会产生一个nohup.out 的文件,用来记录所有输出内容
2)nohup + command >myout.file + 2>&1 +&(将改为服务转为后台运行,终端不显示运行细节)
该命令与 1)不同是会将 所有输出(包括错误重定向) 输出至 指定文件 (myout.file)中
另外可通过
jobs -l 的命令进行 查看 所有后台运行的服务
nohup的原理:
linux 在进行终端访问时,系统会将本次终端通过“猫”视为一次会话,当用户退出时,则会话结束,则猫(hangup)此次用户连接,故nohup 则是 no hang up 顾名思义 就是强制不要挂断本次会话。故服务可以在关闭终端连接时而服务后台运行
==========================================================
虽然解决了问题,但是有一点困扰了我很久。
为什么有的服务可以不使用nohup 就可以台运行,有的就服务就必须借助此命令。很费解,难道是我记错了?
留个坑,下次更新。也请各位大佬看到的能指点一下