常用操作合集六

我正在参加「金石计划」

写在前面

在工作中,我们可能会遇到一些问题,然后通过自己得一顿操作,最终把问题解决了。

可能在一两天之内,我们还是会记得解决这些问题的方法,但是过了一段时间之后,基本上都忘光了。

所以这里,我们应该要养成一个良好的习惯,把每次遇到的问题,如何解决的,都记录下。下次再看文档,这样就想起来了。

<<千与千寻>>有些事情是不可能忘记的,只是一时想不起来

下面,就分享一下,我遇到的一些问题,和相关的解决方法。

可能以前也有分享过一篇,有兴趣的小伙伴,可以查看这里:常用操作合集一常用操作合集二常用操作合集三常用操作合集四常用操作合集五

1.linux磁盘读写慢排查

sh 复制代码
    #1.查看硬盘是否繁忙
    top
    #第三行,有个wa(io wait是cpu等待io完成时间百分比),这个值大于1,需要重点关注
    ​
    #2.找出占用硬盘带宽高的进程
    iotop
    #用于展示进程读写排行
    ​
    #3.查看进程读写哪些文件
    lsof -p xxx
    ​
    #4.检查硬盘是否存在坏道(-o /root/badblocks.log指定输出文件)
    badblocks -s -v /dev/sda
        输出:Pass completed, 37 bad blocks found. 表示硬盘存在37个坏块。
        
    #查看所有分区
    lsblk    

2.win快速进入bios设置界面

bash 复制代码
#重启进入bios界面
shutdown /r /fw /t 0
#定时重启电脑
shutdown /r /t 1000
​
/r:重启
/fw:下次启动转到固件界面
/t x: x秒后执行

33.cpu过高排查

sh 复制代码
    #1.通过top查看到cpu过高的进程pid
    top
    #例如通过top查看cpu过高的是1313
    ​
    #2.输出进程里面运行的线程
    ps H -eo pid,tid,%cpu | grep 1313
    #例如cpu过高的线程tid是1328,对应16进制是530
    ​
    #3.查看进程,nid
    jstack 1313
    #可以查看到nid=0x530线程,对应的代码

4.mysql索引失效原因

sh 复制代码
    1.索引列,使用函数或表达式,索引就失效。
        例如:select * from users where year(date_column)=2024;
        
    2.查询条件中数据类型和索引列的数据类型不匹配,会发生隐式类型转换,索引就失效。
        例如:select * from users where user_id='123'; //user_id是整数列,查询条件'123'是字符串
        
    3.当使用了or连接多个查询条件,其中一个查询条件索引失效,整个查询条件索引也就失效了。
        例如:select * from users where name='llsydn' or email='1091391667@qq.com'; //name有索引,email没索引
        
    4.对于复合索引,必须从最左列开始。
    ​
    5.使用like查询,%通配符在最左边,索引就失效。
        例如:select * from users where name like '%llsydn%'; 
        
    6.表数据量比较少;索引列选择性不高,即存在很多重复数据。   

5.docker,harbor默认路由网段修改

docker,默认使用172.17.0.0 docker0

harbor,默认使用172.18.0.0 br-fb480104eaae

blog.csdn.net/fly910905/a...

你一个docker不要用192.168.0.0/16。用个/24不就行了么,整个192.168.0.0你全用在docker身上不行的。

"bip": "192.168.0.1/24"

6.扫描服务器所有开发端口

sh 复制代码
    #安装nmap
    yum install nmap -y
    ​
    #扫描服务器端口
    nmap -p 1-65535 192.168.1.1

7.nacos配置是否会覆盖本地application.yml的配置?

结论:默认情况下,远程配置会覆盖本地配置(比如启动参数,比如本地配置)。

  • 1.如果,希望本地application.yml的配置覆盖nacos的配置?
properties 复制代码
spring.cloud.config.allow-override=true #(允许被覆盖)

该配置的含义是远程配置是否允许被本地属性覆盖 默认true

注:但这是不够的,尽管它开启了总开关,但是还有下面两个默认的小开关卡住了。

  • 2.如果,希望nacos的配置不覆盖本地application.yml的配置?
properties 复制代码
spring.cloud.config.override-none=true #(远程配置不覆盖任何本地配置)

该配置的含义是远程配置不覆盖本地配置(双重否定?太有才了)

true表示远程nacos配置不覆盖本地同名属性

false表示远程nacos配置覆盖本地同名属性 默认为false(远程配置同名属性覆盖本地配置同名属性)

  • 3.如果,希望nacos的配置不覆盖本地系统配置或参数?
properties 复制代码
spring.cloud.config.override-system-properties=false #(远程配置不覆盖系统属性与环境变量,但是会覆盖本地配置文件)

该配置的含义是远程是否覆盖系统配置 默认true

例如,如果希望在启动时可能通过环境变量或程序参数修改某个配置,需要将该属性在远程配置中设置为false。

例:

sh 复制代码
    java --jar xxx.jar --spring.profiles.active=dev

系统配置指通过命令行参数或环境变量方式 指定配置属性值

注意:这些属性参数值需要配置在远程配置文件中,配置在本地配置文件不生效

8.根据进程 PID 找到进程启动目录、二进制、日志位置等信息

sh 复制代码
    #查找进程pid
    ps -aux|grep jenkins
    ​
    #进入到进程目录
    cd /proc/2401 #(带上进程pid)

更多详情,可以参考这里:/proc/pid目录详解

9.定时写一个shell脚本,按日期切割nohup.out日志内容

sh 复制代码
#!/bin/bash
​
cd /opt/llsydn
​
# 设置切割文件的前缀和存放目录
NAME=$(basename $(basename "*.out")  .out)
PREFIX="/opt/llsydn/*.out"
DATE=$(date +%Y%m%d)
OUTPUT_DIR="/opt/llsydn/log"
LOGFILE="${OUTPUT_DIR}/${NAME}-${DATE}.log"
​
# 检查目录是否存在,不存在则创建
mkdir -p "$OUTPUT_DIR"
​
# 将nohup.out的当前内容追加到新的日志文件中
tail -n +1 *.out >> "$LOGFILE"
​
# 清空.out文件
> ${NAME}.out
​
# (可选)如果你希望保留一定天数的日志,可以添加删除旧日志的逻辑
# 例如,保留最近7天的日志
find "$OUTPUT_DIR" -name "${NAME}-*.log" -type f -mtime +7 -delete
sh 复制代码
echo "*/1 * * * * /opt/llsydn/logcut.sh" | crontab -

好了,以上就是我个人的实操了。可能有些不对,大家伙,轻点喷!!!

个人理解,可能也不够全面,班门弄斧了。

好了,今天就先到这里了!!!^_^

如果觉得有收获的,帮忙点赞、评论、收藏一下,再走呗!!!

相关推荐
一只叫煤球的猫5 小时前
写代码很6,面试秒变菜鸟?不卖课,面试官视角走心探讨
前端·后端·面试
bobz9656 小时前
tcp/ip 中的多路复用
后端
bobz9656 小时前
tls ingress 简单记录
后端
皮皮林5517 小时前
IDEA 源码阅读利器,你居然还不会?
java·intellij idea
你的人类朋友7 小时前
什么是OpenSSL
后端·安全·程序员
bobz9657 小时前
mcp 直接操作浏览器
后端
前端小张同学10 小时前
服务器部署 gitlab 占用空间太大怎么办,优化思路。
后端
databook10 小时前
Manim实现闪光轨迹特效
后端·python·动效
武子康10 小时前
大数据-98 Spark 从 DStream 到 Structured Streaming:Spark 实时计算的演进
大数据·后端·spark
该用户已不存在11 小时前
6个值得收藏的.NET ORM 框架
前端·后端·.net