linux系统中对java项目常用的指令

329 阅读4分钟

微信技术群:Day9884125

1 背景

   在linux下对java项目的一些操作,需要的指令介绍以及记录。后边进行记录补充

2 代码介绍

2.1 linux操作jar和sh文件

// 进入opt文件夹中, 其中/是linux的根目录,刚进入linux时候需要这么输入,没有/会报错
cd /opt

// 列出所有正在运行的进程信息,并筛选出manage.jar的进程信息
ps -ef | grep manage.jar (manage.jar是java项目jar包名)

// 根据端口号查询pid, 其中8895是端口号
lsof -i:8895

// 杀死线程  进程号查看使用上面的指令,进程号一般都是第二个数字
kill -9 11092(进程号)

// 查看某个进程的端口号
netstat -antup | grep 11092(进程号)

// 启动项目,最简单的项目指令,其中&是后台运行的意思
java -jar manage.jar & 

// 遇到.sh类型的文件,启动指令  
sh start.sh  (start.sh 是文件名)

// 输出应用程序main.class的完整package名或者应用程序jar文件完整路径名。
jps -l

// 查找jar包所在路径 -iname表示忽略大小写
find / -iname manageCrossDomain.jar

2.2 日志操作指令

// 查看操作日志指令
1、查看实时变化的日志(比较吃内存)
tail -f data.log     (默认最后10行)
// 退出tail命令
Ctrl+c
// 显示data.log最后20行
tail -n 20 data.log    
// 从第五行开始显示文件
tail -n +5 data.log

2、搜索关键字附近的日志
cat -n data.log | grep '用户下单'

3、进入编辑查找:vi(vim)
    3.1 进入vim编辑模式:vi data.log
    3.2 输入"/关键字",按enter键查找
    3.3 查找下一个,按"n"即可 ( n 查找上一处错误日志  N 查找下一处错误日志)
    3.4 ctrl+f:下翻一屏
        ctrl+b: 上翻一屏
        ctrl+e: 向下滚动一行
        ctrl+y: 向上滚动一行
        
    3.5 wq! 保存退出, q!不保存退出
    
// 查看所有关键字相关的日志
// 默认打开所有的,从前往后,enter(向下翻滚一行),空格(向下翻滚一屏,Q退出命令)
more data.log   

more data.log | grep '用户下单'
按Space键:显示文本的下一屏内容
按B键:显示上一屏内容

// 按时间查看日志
// 使用grep命令精确查询某个时间段的日志
grep '2022-10-22 18:57' data.log
关于时间的查看日志有兴趣的自行百度了解吧

/**
 * 想要查看的内容不知道在那个文件里面,但是只直到在那个目录下可以使用下面指令
 * 假设当前要查的内容在/home/admin/logs目录下
 * 其中2348934148732是要查的内容,会将查出的内容和所在的文件目录和文件名都打印出来
 */
 grep 2348934148732 /home/admin/logs -nr
 
 /**
 * 根据日志文件中关键字,查询日志信息,但是不知道在哪个日志文件
 * 在当前日志所在的目录下输入下面内容
 */
 grep 用户信息 *.log
 
// 在标准unix/linux下的grep命令中,通过以下参数控制上下文的显示:
grep -C 10 keyword catalina.out 显示file文件中匹配keyword字串那行以及上下10行
grep -B 10 keyword catalina.out 显示keyword及前10行
grep -A 10 keyword catalina.out 显示keyword及后10行

// 查找的结果比较大时,为了方便定位问题,也可以重定向到文件中,比如:
grep -C 10 keyword catalina.out  > aaa.txt  

// 统计包含某个关键字的个数
grep -o keyword catalina.out | wc -l

// 如果一行最多一个关键字,可以简写为:  
grep -c keyword catalina.out  

// 查看grep版本的方法是
grep -V

2.3 查询java的jar所在位置

// 先使用`ps`命令 查找对应jar的进程,知道对应jar具体的jar名称
[root@node /]# ps -elf|grep platform
4 S minstone 30516     1  0  80   0 - 1495172 futex_ 7月06 ?     01:25:36 java -Xms512m -Xmx512m -jar platform-project.jar

// 根据jar的具体名字查询出来,jar所在的路径,lsof查询,jar包需要被进程使用
lsof | grep platform-project.jar

2.4 linux开启端口

// 验证firewalld是否开启
sudo systemctl status firewalld

// 使用 `systemctl`命令启动 `firewalld`
sudo systemctl start firewalld

// 开启端口
sudo firewall-cmd --permanent --add-port=18088/tcp

// **重载防火墙规则(关键!)**
sudo firewall-cmd --reload

// 验证是否开启成功
sudo firewall-cmd --list-ports | grep 18088 
# 或查看完整规则 
sudo firewall-cmd --zone=public --list-all