命令Linux\MySQL\Java

Linux
文本命令
-- 指定要进入的data目录
cd /data

- 查看文本
cat 文件
- 修改文本
vim 文件
-- vim使用后默认进行【命令模式】
-- 输入i进入【输入模式】 再按esc返回【命令模式】 
-- 输入:进入【编辑模式】 输入wq回车即完成保存并退出
:wq 保存并退出
:q 不保存退出
:w 保存不退出

- 查日志
- 持续输出日志
tail -f 文件名
tail -f game.log |grep INFO
- 打印最后20行
tail -n 20 game.log

- grep 用于搜索文件中匹配指定模式的文本行
- 搜索文件filename中包含模式pattern的行。
grep 'pattern' filename 
- n显示匹配行的行号
grep -n 'pattern' filename
- i搜索时忽略大小写
grep -i 'pattern' filename
- c统计匹配行的数量
grep -c 'pattern' filename

-- less模式
less game.log
- q退出
- 空格键  滚动一页(同f)
- 回车键  滚动一行(同j)
- G-移动到最后一行 定位到文档最尾部
- g-移动到第一行 定位到文档头部

j    下一行
k    上一行
f    向下滚动一屏幕
b    向上滚动一屏幕

进入less模式后,键入F,即实时滚动文档
F        实时滚动文档
Ctrl + c  退出实时滚动模式

类似效果:
tail -f xxx.log

-- 查找关键字内容时,常用向下查找、向上查看
/keyword  向下查找
n    向下匹配下一处匹配文本
N    向上匹配下一处匹配文本

?keyword  向上查找
n    向上匹配下一处匹配文本
N    向下匹配下一处匹配文本

-- 统计数量
grep -c "修复p_summary属性字段" game.log
less game.log | grep -c "修复p_summary属性字段"

-- grep -v 反向查找 
-- 就是查找不含有 hello 字段的行
grep -v "hello" 

- 复制 
cp fgqj_ad_test_11/clear.sh fgqj_ad_testpvpops_1/
cp 源文件 目标文件
- 剪切 移动 将source_file文件剪切到destination_directory目录中
mv source_file destination_directory/

-- 删除binlog目录里的所有文件 f表示不询问
rm -f binlog/*

其他删除:
- 删除文件:
rm 文件       删除当前目录下的文件
rm -f 文件    删除当前目录的的文件(不询问)
- 删除目录:
rm -r aaa    递归删除当前目录下的aaa目录
rm -rf aaa    递归删除当前目录下的aaa目录(不询问)
- 全部删除
rm -rf *    将当前目录下的所有目录和文件全部删除

vim命令模式:

时间命令
- 时间
date
- 调时间
date -s "2022-11-11 10:00:00"
- 重置时间到当前时间
hwclock -s
监视和故障排查命令
-- 查看所有文件的大小 查看磁盘空间使用情况:-h参数表示以人类可读的格式(例如GB、MB)显示信息。
df -h
-- 查看当前目录的大小
du -sh
-- 相当于Windows的"总大小"
lsblk  # 查看物理容量
-- 相当于Windows的"已使用空间"
df -h  # 查看文件系统使用情况

-- 查看内存和交换分区的使用情况:-m参数表示以MB为单位显示内存使用情况。-g为GB,-k为KB,-b为Byte
free -m
-- 查看内存和交换分区的使用情况:-h参数表示以人可读的方式显示内存使用情况。即自动换算成GB、MB等单位表示
free -h

-- 查看内存占用前十的进程,且能看到内存占用多少
ps aux --sort=-%mem | head -n 11 | awk '{print $2, $4, $6/1024 " MB", $11}'

-- 查看所有运行中的进程pid
ps aux
ps aux | grep java
-- linux 强制关闭进程pid
kill -9 pid

-- 显示所有进程的CPU和内存占用情况
top
-- 显示进程号的所有的线程CPU和内存占用情况
top -Hp 进程号
查看CPU型号和基本信息
# 查看CPU型号和基本信息
cat /proc/cpuinfo | grep "model name" | uniq

# 物理核心数
grep "cpu cores" /proc/cpuinfo | uniq

# 逻辑处理器数(线程数)
grep -c "processor" /proc/cpuinfo

# CPU 的详细信息
lscpu
其他命令
- 运行.sh文件
sh xxx.sh

- 查看历史命令,过滤出命令中有mysql字样的
history |grep mysql

- 用于在系统后台不挂断地运行命令,退出终端不会影响程序的运行,会输出一个名叫 nohup.out 的文件到当前目录下
- Command:要执行的命令。Arg:一些参数,可以指定输出文件。&:让命令在后台执行,终端退出后命令仍旧执行。
nohup Command [ Arg … ] [ & ]

-- 解压缩
tar -zxvf test.tar.gz
-- 压缩
tar -czvf 压缩后文件名.tar.gz 要压缩的文件名

-- 重启端口 远程debug内网外网时,连不上端口可以重启端口
systemctl stop iptables
-- 连不上外网,查看端口是否打开,没打开就不能访问
-- 运行 iptables -nL 可以查看当前系统的 iptables 防火墙规则(即使 firewalld 未运行,iptables 仍可能生效)。
iptables -L -n
-- 打开16001端口 打开后用iptables -L -n 查看是否已经打开
sudo /sbin/iptables -I INPUT -p tcp --dport 16001 -j ACCEPT


-- 检查当前系统中是否有 Java 进程正在监听 TCP/UDP 端口,通常用于确认 Java 应用(如 Tomcat、Spring Boot、JDWP 调试服务等)是否正常运行并绑定了预期的端口。
sudo netstat -tulnp | grep java


-- 重启MySQL服务命令 修改了mysql的配置等情况需要重启服务
sudo systemctl restart mysql

-- 变成以MB为单位 $3/1024/1024
jmap -histo 进程号 | head -20 | awk '{ print($1, $2, $3, $3/1024/1024, $4) }'
-- 结果格式化 变成以MB为单位 $3/1024/1024
jmap -histo 进程号 | head -20 | awk '{ printf("%-10s %-10s %-10s %-10s %-10s\n", $1, $2, $3, $3/1024/1024, $4) }'
管道符

在Linux中,管道符(|)是一个特殊字符,它用于连接两个或多个命令,将第一个命令的输出作为第二个命令的输入。这使得用户能够将多个命令组合在一起,以实现更复杂的任务。基本的管道符语法如下:

command1 | command2

其中,command1表示第一个命令,其输出将成为command2的输入。管道可以连接任意数量的命令,形成长串的命令管道。

Shebang 符号(#!)

释伴:Linux 上的 Shebang 符号(#!)-CSDN博客

常见 Shebang 示例

Shebang 用途
#!/bin/bash 使用 Bash(最常用)
#!/bin/sh 使用标准 Shell(兼容性更好,但功能较少)
#!/usr/bin/env bash 通过 env 查找 Bash(兼容不同系统)
#!/usr/bin/python 用 Python 执行脚本
#!/usr/bin/perl 用 Perl 执行脚本
MySQL
-- 登录mysql
mysql -uroot -proot
-- 展示所有数据库
show databases;
-- 使用qj4数据库
use qj4;
-- 展示所有表
show tables;

-- 查询
select * from p_role;

-- 新建数据库
CREATE DATABASE my_database CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
-- 删除数据库
DROP DATABASE my_database;
导入
mysql -uroot -proot qj4 < qj4_import.sql
导出
-- 导出数据和表结构
mysqldump -uroot -proot qj4 > qj4_export.sql
-- 只导出表结构
mysqldump -uroot -proot -d qj4 > qj4_export.sql
-- 只导出数据
mysqldump -uroot -proot -t qj4 > qj4_export.sql

-- 导出特定表数据和结构
mysqldump -uroot -proot qj4 表名 > qj4_export_表名.sql
-- 只导出特定表结构
mysqldump -uroot -proot -d qj4 表名 > qj4_export_表名.sql
-- 只导出特定表数据
mysqldump -uroot -proot -t qj4 表名 > qj4_export_表名.sql
Java

JVM调优实战 - deyang - 博客园

- java命令,-m是输出传给main方法的参数,-v是输出启动JVM进程时传递给JVM的参数,-l是输出main方法所在类的完整路径或者JAR包的完成路径
jps -ml
jps -vl

- 显示这个进程的运行的java程序的信息
jinfo 进程号

- 显示内存每块区域占用的大小
jstat -gc 进程号
- 每 时间(ms)显示当前内存每块区域占用的大小
jstat -gc 进程号 时间
- 显示内存每块区域占用的百分比
jstat -gcutil 进程号 时间

- 显示进程号里所有的线程信息
jstack 进程号

-- jmap命令会STOP THE WORLD停止整个jvm内存情况保持不变。
-- 导致程序卡死(直接查看还是生成dump文件都会卡死),不能在线上使用啊!!!!
jmap
- 生成当前jvm所有对象的 创建数量 和 占用内存数量
jmap -histo 进程号
-- 显示前20行 结果是bytes为单位
jmap -histo 进程号 | head -20 
-- 生成内存情况转储文件20241117.hprof,用工具去分析
jmap -dump:format=b,file=20241117.hprof 进程号

jmap -dump:live,format=b,file=heap.hprof <PID>

-- 变成以MB为单位 $3/1024/1024
jmap -histo 进程号 | head -20 | awk '{ print($1, $2, $3, $3/1024/1024, $4) }'
-- 结果格式化 变成以MB为单位 $3/1024/1024
jmap -histo 进程号 | head -20 | awk '{ printf("%-10s %-10s %-10s %-10s %-10s\n", $1, $2, $3, $3/1024/1024, $4) }'

-- 手动触发full gc 别在生产环境使用!
jcmd <pid> GC.run
posted @ 2025-01-06 19:27  deyang  阅读(24)  评论(0)    收藏  举报