当前位置:首页 > IT技术 > 系统服务 > 正文

linux下启动Tomact排查问题
2022-02-14 14:02:03


Linux下启动Tomcat启动并显示控制台日志信息

Windows下启动tomcat,一般直接运行startup.bat,启动后显示一些控制台启动的日志信息,就好像我们在编程序时候打印在控制台中的一样的。如果没有这些信息我们就好像没有眼睛的盲人瞎折腾,根本就搞不定这些问题。好好的去理解这个很有必要。借助前人的优秀的设计标准的打印在logs的日记中,存在的只是我们没有去看而已,碰巧没有出问题,懒得出看。如果想查看日志文件的信息怎么办啊!有两种手段,看你喜欢哪种!

1. 可以通过运行​​./catalina.sh​​ run启动,就可以像windows中一样查看tomcat启动信息了

2. 还是使用​​./startup.sh​​,不过我们可以通过去查看logs下面的目录catalina.out中去查看日志的信息,这个比较简单了吧​​cat catalina.out 或者tail -f catalina.out​

3. 上面的问题已经解决了还是不能启动无非就是端口号被占用,数据库连接不上,程序有问题,惊呆了…​​`kill -9 xxxxx​​先杀死你回家在看看再说。到底启动没有可以看看下面的继续进行。

查看启动的进程命令行

Linux下直接启动./startup.sh但是查看不到启动日志信息,通过​​ps –ef|grep tomcat​​查看,实际已经启动,或者通过​​ps -ef |grep java​

因为tomact是java写的,java可以查看一下到底启动了没有,是不是很简单。除此之外对于一个web程序来说,端口绑定被占用也是常有发生的,看看端口的信息是否正常,通常的命令是​​netstat -tln​​这个只是查看到了当前的端口的占用的情况,并不知道是那个进程占用了,所以还需要加一个参数 -p ​​netstat -tlnp​​晓得了哪个程序占用了,直接把这个进程干掉就行了。除了这个之外呢,有时候这个端口太多了,怎么办呢?过滤一下子处理。​​netstat -tlnp |grep 8080​​除了上面的这个可以查看端口的占用来看但是我记不住啊,怎么办还有个比较牛的命令也是很不错哦的分享给大家。​​lsof -i:8080 或者 lsof -i|grep 8080​

lsof简介

lsof(list open files)是一个列出当前系统打开文件的工具。在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件。所以如传输控制协议 (TCP) 和用户数据报协议 (UDP) 套接字等,系统在后台都为该应用程序分配了一个文件描述符,无论这个文件的本质如何,该文件描述符为应用程序与基础操作系统之间的交互提供了通用接口。因为应用程序打开文件的描述符列表提供了大量关于这个应用程序本身的信息,因此通过lsof工具能够查看这个列表对系统监测以及排错将是很有帮助的。具体怎么使用可以查看man lsof 或者info lsof这个是linux给予我们最大的好处,随时可以查,但是基本的东西还是需要记住一点点,使用的时候才能手到擒来。要学会自己查找资料嘛 ​​man lsof​​​这里面有很多的参数,我这只想了解-i参数代表网络。查询具体的端口号​​lsof -i:8080 或者 lsof -i|grep 8080​

在终端下输入lsof即可显示系统打开的文件,因为lsof需要访问核心内存和各种文件,所以必须以 root用户的身份运行它才能够充分地发挥其功能。

还有很多的有用的命令行参数呢:

1. lsof filename 显示打开指定文件的所有进程

2. lsof -c string 显示COMMAND列中包含指定字符的进程所有打开的文件(比如Java)

3. lsof -u username 显示所属user进程打开的文件

4. lsof +d /DIR/ 显示目录下被进程打开的文件(感觉这个很有用,查看当前目录下打开的进程)

5. lsof +D /DIR/ 同上,但是会搜索目录下的所有目录,时间相对较长

在查看catalina.out的时候够累

每次启动一次错误的信息太多了…..简直不想在看下去了!怎么办怎么办呢??我就是想清空文件而已就是这么简单,看看方法使用重定向搞定分分钟,使用起来特别爽,你也可以来试试。

1. ​​$ : > filename​

2. ​​$ > filename​

3. ​​$ echo "" > filename​​ 我喜欢使用这种好理解

4. ​​$ echo > filename​

5. ​​$ cat /dev/null > filename​

tail - 输出文件尾部/动态监视文件尾部

相对于上面这个来说,这个简单了很多!直接查看文件的尾部就可以知道到时是不是启动了。error你在哪里。

用途:tail命令可以输出文件的尾部内容,默认情况下它显示文件的最后十行。它常用来动态监视文件的尾部内容的增长情况,比如用来监视日志文件的变化。与tail命令对应的是head命令,用来显示文件头部内容。


  1. ​tail file​​ 输出指定文件file的尾部内容,默认输出最后十行内容
  2. ​tail file1 file2 ...​​指定多个文件时,会显示每个文件的文件名称,再显示该文件的尾部内容
  3. ​tail -n file​​​显示文件最后n 行。tail -n可以显示最后n行的文本内容。那么有没有一种方式显示从n行开始的文本内容,答案是肯定的。​​tail -n +4 file​​表示显示文件file从第4行开始的内容。从1开始计数。
  4. ​tail -f file​​ 动态跟踪文件file的增长情况,tail会每隔一秒去检查一下文件是否增加新的内容,如果增加就追加在原来的输出后面显示。但这种情况,必须保证在执行tail命令时,文件已经存在。如果想终止tail -f的输出,按Ctrl+C中断tail程序即可.

在Linux的下面部署了tomcat

在Linux的下面部署了tomcat,为了安全我们使用非root用户进行启动,但是在域名绑定时无法直接访问80端口号。众所周知,在unix下,非root用户不能监听1024以上的端口号,这个tomcat服务器就没办法绑定在80端口下。所以这里需要使用linux的端口转发机制,把到80端口的服务请求都转到8080端口上。

  • 安装 iptables-persistent
sudo apt-get update
sudo apt-get install iptables-persistent
  • 添加 80 端口跳转到 8080 规则
sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080
  • 保存跳转规则
sudo service iptables-persistent save

参考


  1. ​http://codingstandards.iteye.com/blog/832575​​ tail


本文摘自 :https://blog.51cto.com/u

开通会员,享受整站包年服务立即开通 >