freebsd 中 nohup使用时出现的奇怪问题

【现象】

在freebsd中启动rails网站;

网站的启动写到一个bat脚本中:

#/glodon/WEB_APP/CONF/rails_svnms.bat

#!/bin/sh 

cd /glodon/WEB_APP/SVNMS 
/usr/local/bin/rails s mongrel -e production -b 127.0.0.1 

利用nohup启动网站: nohup /glodon/WEB_APP/CONF/rails_svnms.bat &

成功生成job, 但是没有生成nohup.out文件, 重定向也不管用(nohup /glodon/WEB_APP/CONF/rails_svnms.bat 2>1& &),  日志输出到屏幕上,网站能够正常访问。

但是窗口一旦logout或者关闭, 网站就不能访问了, 后台有rails进程仍然正常运行,能够检测到日志变化,就是网站无法访问。

 

总不能一直开着窗口吧,郁闷了一上午~~~~~~~~~~~~

【原因】

我执行的是一个脚本文件,它里面还调了各种执行文件和应用程序,而且它里面调程序都没用用nohup &这种方式的,原因就处在这。

原因应该是这样,由于脚本中调用的脚本未加后台符(&)运行时需要另外调用一个新的Shell作为运行环境,而这个Shell却无法屏蔽父Shell退出时发出的quit signal,所以会导致进程被杀死,解决方法就是加后台符,这样进程运行无需启用新的Shell。

【解决方案】

把脚本里面把所有的地方都加上&,并把输出重定向到文件

即:

#/glodon/WEB_APP/CONF/rails_svnms.bat

#!/bin/sh 

cd /glodon/WEB_APP/SVNMS 
/usr/local/bin/rails s mongrel -e production -b 127.0.0.1 >> log/production.log 2>&1 &

你可能感兴趣的:(FreeBSD)