Java程序员应该遇到过类似这样的命令:
[root@localhost]# java -jar demo.jar
无论是在Windows还是Linux下,这样的命令执行,都会有这么一个问题:当你的cmd或者窗口Linux本地或者xshell远程terminal,当窗口关闭或者链接断开是时候,对应的子进程就会死掉了。但是,这不是开发或者运维人员所希望的。那么,如果起一个进程在后天运行,不会随着terminal关闭而终结,岂不是很开兴?当然方法是有的啦,对于一些hello world开发人员或者是调参人员来说可能不会接触到服务部署之类的工作,但还是有必要来学习一下的(只了解在Linux下)。
方法1:
最简单的方式:
[root@localhost]# java -jar demo.jar &
这样服务就可以后台启动,以下的命令就可以查看后台是否在正常运行:
[root@localhost]# ps -ef |grep demo.jar
但是这种方式会有一个问题,比如在demo.jar启动过程中没有console信息输出,你也看不到服务是否能够正常启动起来。
方法2:
为了能够看到启动过程,就可以使用nohup命令了。一个基本的nohup命令格式如下:
[root@localhost]# nohup java -jar demo.jar >filename 2>&1 &
上边这一行命令有三个地方可以讲:
- java -jar demo.jar(command)这个是基本启动服务的命令;
- nohup启动方式,>filename 2>&1 这样的参数,是将启动过程的标准输出和标准错误输出重定向到指定的文件;
- & 让着一整条命令后台方式启动。
command > filename 是将标准输出重定向到了文件filename,2>&1是将标准输出错重定向到了标准输出(也就是2代表的是输出错误)。
然后可以:
[root@localhost]# tail -f filename
看到启动的这个过程。如果有什么异常,也是可以看到的。
后续根据接触到的东西在补充……