跳转到内容

常用命令

bash
//---------- 服务管理
// 服务状态|关闭服务|启动服务|重启服务
systemctl status|stop|start|restart xxx
// 重新加载服务
systemctl daemon-reload
// 是否已经加入自启动
systemctl is-enabled xxx
// 开启自启动服务
systemctl enable nacos.service


//---------- 防火墙管理
// 防火墙
firewall-cmd -h
firewall-cmd --zone=public --list-ports
firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --reload

// --------- 端口监听状况
netstat -tunlp
netstat -nultp |grep 8080
ifconfig # 所有网络接口属性
ethtool 网卡名 # 带宽
route -n # 路由表
netstat -antp # 所有已经建立的连接

// --------- 磁盘管理
fdisk -l
lsblk
// 查看系统磁盘空间
df -h

// 查看某一个文件夹下面所有文件的大小
du --max-depth=1 -h /mydata/nexus/data/log/


// --------- 复制到远程服务器
scp -r jdk-8u144-linux-x64.tar.gz root@192.168.1.150:/mnt/doc/package
// 下载
scp -r username@ip:remote_folder local_folder    //-r表示递归
// 复制文件夹到服务器上
scp -r local_folder remote_username@remote_ip:remote_folder
// 上传和下载,可以使用 filezilla 客户端

上传
scp -r local_folder username@ip:remote_folder
//或者
scp -r local_folder remote_ip:remote_folder
// --------- 实现 ssh 免密登陆
ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.1.150
ssh root@192.168.1.150

// 启动server

//示例
scp -r root@ip:/apps/local/nginx-1.8.0.tar.gz /Users/gary/Documents/

// --------- docker
docker logs -f -t --tail 100   529a4d9afd8e


// ---------- 文件查找
// 删除当前目录及子文件夹下面所有的target文件夹
find ./ -name -type d "target" -exec rm -rf '{}' +

// 删除当前目录及子文件夹内所有的以.iml结尾的文件
find ./ -name '*.iml' -exec rm -rf '{}' +



// 查看linux系统的最大的线程数
$ ulimit -a | grep user

// 查看Java进程的线程数
$ ps -eLf | grep java | wc -l

// 查看 test.log 中的kafka消息
$ grep "kafka" test.log | head -1 // 最近1条数据
$ grep "kafka" test.log | tail -1 // 最后1条数据

// 统计kafka消息
$ cat adx-feed.log | grep kafka | wc -l
grep "关键词" adx-log.log | wc -l

// 统计每个小时的kafka消息
$ cat adx-baiduUtils.log | grep kafka | awk -F " " '{print $2}' | awk -F ":" '{print $1}' | sort | uniq -c

// 统计15点的视频素材数
$ cat adx-baiduUtils.log | grep "2022-07-27 15:" | grep kafka | awk -F "videoList" '{print $2}' | awk -F "," '{print $1}' | sort | uniq -c | wc -l

// 统计某一整点的每分钟的请求异常个数
$  cat adx-feedJob.log | grep "2022-07-28 15:" | grep "errorMsg" | awk -F "2022-07-28 15:" '{print $2}' | awk -F ":" '{print $1}' | uniq -c

// 统计kafka消息中视频素材数量
$ cat adx-baiduUtils.log  | grep kafka  | awk -F "videoList" '{print $2}' | awk -F "," '{print $1}' | less  | sort | uniq -c | sort -k1 -nr | wc -l

// 统计一个文档中出现过kafka的消息
$ cat xxx.log | grep kafka | tail -100
$ cat xxx.log | grep kafka | head -100


// 截断
awk -F "字符串" '{print $N}' // $N 表示把日志文件截成多个小段后,获取的第n个字段(从1开始数)

// 去重
uniq -c

// 排序,按照大小,从大到小输出
sort -rn

//
grep kafka adx-dYFeedsJobByUseIDFAZHJob.log-2022-08-10 \
adx-dYFeedsJobByUseIDFAGoodJob.log-2022-08-10 \
adx-dYFeedsJobByUseIDFAQueueJob.log-2022-08-10 \
| awk -F "productName" '{print $2}' | awk -F "," '{print $1}' | sort | uniq -c | sort -rn | head -20



// 如果一不小心在一个master分支上写了代码,也执行到了commit上,但是并没有提交到远程分支上;此时可以执行 cherry-pick 操作,在idea中执行

// 以兆为单位查看文件大小
ll -lh log.log


[root@home ~]# uname -a
Linux home.centos 3.10.0-1160.76.1.el7.x86_64 #1 SMP Wed Aug 10 16:21:17 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux


// --------- 服务器基本信息
uname -a
hostname


总核数 = 物理CPU个数 X 每颗物理CPU的核数
总逻辑CPU数 = 物理CPU个数 X 每颗物理CPU的核数 X 超线程数

# 全部信息
cat /proc/cpuinfo

# 物理CPU个数
cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l

# 每个物理CPU中core的个数(即核数)
cat /proc/cpuinfo| grep "cpu cores"| uniq

# 逻辑CPU的个数
cat /proc/cpuinfo| grep "processor"| wc -l

getconf LONG_BIT # 计算机位数
env # 环境变量

cat /proc/meminfo # 内存
free -m # 空闲内存
1. 查看总内存情况使用命令`cat /proc/meminfo`即可。
2. 查看内存占用状态使用`free -m`(-m,单位是m,如果是-g,单位是g)。

# 定期清理日志: 1. 把命令日志备份到文件; 2. 清除 history

history > /mnt/d/centos/centos.log
history -c

查询日志的做法

  1. 在业务系统中复现问题,浏览器 f12 打开控制台,然后找到对应的接口
  2. 拿着接口 url 去找对应的日志文件,然后 vi 打开日志文件
  3. shift+g 直接到文档最后,在 vi 的命令模式下输入“/{要查找的 url}”进行查询
  4. 找到对应的线程名称,再次在 vi 的“命令模式”下输入“/{线程名称}”,然后使用 shift+n 向下查找,即可找到堆栈信息

make it come true