screen使用过程中遇到的问题

开发弄了一套写入redis缓存的程序,目前在screen里用普通用户启动运行。今天遇到了问题整理一下,方便学习。

今天这个服务器重启了,所以这边准备启动服务,我是直接用root用户连接的服务器,以前是直接用普通用户连接的没有什么问题

由于这个服务要在普通用户下启动,所以我就su到普通用户下面。

然后执行screen命令,进入screen后启动服务。当没有断开连接的时候,服务一切正常,但是当断开服务器的连接后就出现了问题。

怎么会出现这样的问题呢 我是在screen里面运行的呢,应该断开连接服务也不会中断的啊,并且服务的进程都还在。

用pstree命令查看进程的进程树发现了问题:

我们可以看出,我们的bash和php都是sshd的子进程,当ssh断开连接的时候,HUP信号就影响到它下面的所有子进程,包括php。

所以我就直接用普通用户来ssh连接服务器,然后执行screen,进入后在里面执行php脚本,这时php就是screen的子进程了,而screen

是init的子进程,当ssh断开的时候,HUP信号就不会影响到screen下面的子进程了。

 

posted @ 2017-02-28 20:57  可可怪  阅读(415)  评论(0)    收藏  举报