微信技术群: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