欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

java程序员需要知道的linux知识(二)

程序员文章站 2022-04-24 10:22:28
...

承接上文,在上文中我们讲到了如何查看系统状态,如何把项目传到服务器上,今天我们来聊一聊如何在服务器上把程序启动起来,以及查看运行的状态

## 在服务器上运行java程序

我们在本地开发时,在idea中可以直接通过idea的配置启动项目,如下图所示,但是在服务器上怎么运行呢?(这里面先只讨论web程序的运行)

java程序员需要知道的linux知识(二)

先要说下打包方式,web程序有两种打包方式:

一种是打包war包,

打成war包需要再下载一个tomcat,把war包丢到tomcat的webapp目录或者其他目录然后在tomcat 的server.xml中host/context节点下配置目录

java程序员需要知道的linux知识(二)

然后执行tomat目录下/bin/startup.sh 来启动程序

一种是打包成jar包

这种方式是我比较喜欢的方式,因为不需要再下载什么,直接把jar传到服务器上,通过平常使用java -jar命令就可以启动了,如下图所示:

java程序员需要知道的linux知识(二)

war包运行不一样的是,运行startup.sh的时候,程序会后台运行,关了linux连接也没关系,但是用java启动的就不一样了,这个窗口一关,程序就挂了。

后台运行

war包可以直接通过tomat的 start.sh后台运行,我们可以深入startup.sh ,发现执行的是 catalina.sh

java程序员需要知道的linux知识(二)

打开catalina.sh 找到最行执行java的部分

java程序员需要知道的linux知识(二)

会发现其实也是简单的命令拼起来的,关键在于最后的这个 &符号。我们在jar包发布的命令同样加就可以了:

java -jar xxx.jar &  这样就可以后台运行啦

查看日志

查看日志常用的有两种,一种是常看实时日志,常用于开发调试的时候。因为程序运行在服务端,黑乎乎的,啥都看不到,这个时候,要是程序哪块功能运行不正常了,就只有上服务器查日志,看看抛了什么异常,还是参数不对。

简单说一说程序中的日志代码

这不是专门讲日志的文章,所以这块简单说一说,首先,声明都用slf4的Logger,这样无论实际实现是用logback , log4j , 等等,都可以做到只改jar包不改代码。

private final static Logger logger = LoggerFactory.getLogger(xxxx.class);

具体配置这篇就不讲了,通过开发的时候开启debug , 线上的时候只打error级别,然后注意两个位置,一个是 tomcat/logs/catalina.out这个是用tomcat运行war包时,控制台的输出,都会进入到这个文件中,是日志最全的地方,另外一个就是程序中自己配置的位置。自己配置上的位置可以把远程调用,sql, 应用错误等等归到不同的文件中,方便查看

常用的查看日志命令

就笔者经验而言其实就一个命令:tail

实时查看,用于能现场复现的问题 tail -f  xxxx.out

刚刚才出现问题,往上面翻几行 tail  -n1000 xxxx.out

服务器流量很大,日志一直刷个不停,看的眼都花了,那就过滤下

tail -f | grep 'xxx' 这样可以只显示带有'xxx'的日志

停止应用

现在我们开发了新的版本,要把以前运行的那个版本换下来,在窗口操作中,把程序关掉,然后重新打开新程序,在linux中思路也是一样:先找到原程序

ps aux |grep 程序名

java程序员需要知道的linux知识(二)

红线框框中的内容就是id。

Kill -9 18794 去停掉原程序

按本文上面的运行java程序,启动新的服务

总结

结合上一篇,两篇内容简述了一个java程序员和linux服务器打交道的常用命令等等,抱砖引玉,还有很多很多可以大辐提升生产力的方法,如同一个机器上要同时跑一个jdk1.8的项目,和一个jdk1.6的项目,要怎么启动? 怎么通过脚本(.sh)实现自动化的停止,启动?

欢迎添加笔者微信:best396975802 一起讨论交流,这里还有好多一起学java的小伙伴在群你等你呢

java程序员需要知道的linux知识(二)