一、遇到问题:
笔者在测试阶段,把服务拉到服务器上,部署之后,启动服务,但是没有启动成功,也没有报错信息。
二、先理解一些概念:
1、黑洞
/dev/null:这个就是黑洞,这是一个文件,这个文件是一个“只写”的文件,从里面读不出信息,为什么要使用这个呢?由于我们的进程中的信息(包括错误信息)默认是标准输出(也就是打印在控制台上),采用这个的话,可以把这些信息不打印。在很多shell脚本的编写中会采用这种方式。
参考:http://blog.csdn.net/kaiwii/article/details/7308729
2、标准输出
在Linux中文件的输入与输出有三种:标准输出、错误输出、标准输入:
3、文本信息重定向:
我们的输出信息默认都是输出到控制台上,我们如何让它重定向到文件中,如下:
重定向绑定问题:
参考:http://www.cnblogs.com/520playboy/p/6275022.html
4、前台进程、后台进程
& 这个命令就是讲一个进程放到后台,也就是Linux中进程启动默认在前台。
前后台进程详解:http://blog.csdn.net/elbort/article/details/7576536
三、问题解决方式:
启动进程,但是通过ps -ef | grep xxx,查看启动失败,但是没有报错
于是进入启动脚本中,查看脚本中进程的启动方式如下,把“>> /dev/null 2>&1 &”删掉,也就是把标准信息与错误信息打印出来:
再启动如下提示:
再通过free -m查看内存:
到达这里我们就定位到了问题的所在了,具体解决如下:
注意:
1、上面的错误提示可以看出是“堆内存”不足,这找到问题之后,可以按自己的想法做做一些事了。比如:减小启动时内存大小,杀掉不需要的进程。由于是在我自己的测试机上,我采用简单粗暴的方法,杀掉其它现在不用的服务。
2、注意:前台启动的进程,我们按 Ctrl+C,就杀死进程了。这种一帮只有在定位问题的时候改成前台进程启动,定位好了,一帮要改回去,使用后台进程在跑