Linux

网络

  • Centos8

    • 重新加载网络:nmcli c reload

      ## 配置见:https://www.cnblogs.com/ay-a/p/11828607.html
      TYPE=Ethernet
      PROXY_METHOD=none
      BROWSER_ONLY=no
      BOOTPROTO=static
      DEFROUTE=yes
      IPV4_FAILURE_FATAL=no
      IPV6INIT=yes
      IPV6_AUTOCONF=yes
      IPV6_DEFROUTE=yes
      IPV6_FAILURE_FATAL=no
      NAME=ens192
      UUID=2497d58c-c681-40ec-a86d-72f94c01abff
      DEVICE=ens192
      ONBOOT=yes
      IPADDR=10.0.0.214
      NETMASK=255.255.255.0
      PREFIX=24
      GATEWAY=10.0.0.1
      
  • 抓包

    参考:https://zhuanlan.zhihu.com/p/74812069

    # 抓取所有包,写到文件result.cap
    tcpdump -w result.cap
    
    tcpdump -nX 
    tcpdump tcp -s 0 port 9116 -w xxx.cap
    -- 指定网卡
    tcpdump -i eth0 port 3128 -w xxx.cap
    tcpdump -i eht0 host 128.1.80.110 -w xxx.cap
    # 抓取源地址
    tcpdump src host 192.168.1.100 -w result.cap
    # 抓取地址
    tcpdump host 192.168.1.100 -w result.cap
    # 抓取目的地址
    tcpdump dest host 192.168.1.100 -w result.cap
    # 抓取主机地址
    tcpdump -i eth0 -vnn host 192.168.1.100
    # 抓取包含192.168.1.0/24网段的数据包
    tcpdump -i eth0 -vnn net 192.168.1.0/24
    # 抓取网卡eth0上所有包含端口22的数据包
    tcpdump -i eth0 -vnn port 22
    
    # 抓取指定协议格式的数据包,协议格式可以是「udp,icmp,arp,ip」中的任何一种,例如以下命令:
    tcpdump udp  -i eth0 -vnn
    # 抓取经过 eth0 网卡的源 ip 是 192.168.1.100 数据包,src参数表示源。
    
    

文件

  • 查看文件inode df -ia

  • 查看文件名柄: lsof -i:port

  • sed

    // 去除bom 直接覆盖老文件
    sed -i '1s/^\xEF\xBB\xBF//' *.sql
    
  • 转换字符集

    -- mac 转换字符集
    find *.sql -exec sh -c "iconv -f utf-8 -t GBK {} > ./new/{}" \;
    
  • 清理文件

    -- 删除 ~/file/input/BERS/ 一年前{365}数据 {} 前后有空格
    find ~/file/input/BERS/ -name "*.zip" -mtime +365 -exec rm {} \;
    

其他

  • 查看端口占用 netstate -an | grep 9000

  • 查看端口进程: lsof -i:port

  • 定位 Java 进程和线程 top -H -p pid 、Mac: ps -M pid

    以前只是在 linux 机器上使用 top 命令。常用的快键键是:
    	p 键 - 按 cpu 使用率排序
    	m 键 - 按内存使用量排序
    这 2 个快捷键在 mac 上都不一样。对应的是,先输入 o,然后输入 cpu 则按 cpu 使用量排序,输入 rsize 则按内存使用量排序。
    如果记不清了,可以在 top 的界面上按 ?,在弹出的帮助界面中即可看到。
    
  • 再利用 jstack -l pid 导出线程栈

  • Linux下查看CPU使用率的命令 * vmstat 1 5 * sar -u 1 5 * mpstat 1 5 每1秒收集一次,共5次。 * iostat -c 1 2 * dstat -c 每秒cpu使用率情况获取 * dstat --top-cpu 最占cpu的进程获取

  • mpstat

    • mpstat -P ALL 2 #看每个cpu核心的详细 %user 在internal时间段里,用户态的CPU时间(%),不包含nice值为负进程 (usr/total)*100 %nice 在internal时间段里,nice值为负进程的CPU时间(%) (nice/total)*100 %sys 在internal时间段里,内核时间(%) (system/total)*100 %iowait 在internal时间段里,硬盘IO等待时间(%) (iowait/total)*100 %irq 在internal时间段里,硬中断时间(%) (irq/total)*100 %soft 在internal时间段里,软中断时间(%) (softirq/total)*100 %idle 在internal时间段里,CPU除去等待磁盘IO操作外的因为任何原因而空闲的时间闲置时间(%) (idle/total)*100
  • 时区:cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

shell

  • 脚本路径

    BASE_PATH=$(cd `dirname $0`; pwd)
    
  • start

    #!/bin/sh
    
    pwd
    BASEPATH=$(cd `dirname $0`;pwd)
    cd $BASEPATH
    echo currentPath:$BASEPATH
    pwd
    JAR_NAME=chss-rhwzh.jar
    echo start app $JAR_NAME
    export JAVA_OPT="-server -Xms1024m -Xmx2048m -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=512m"
    nohup java $JAVA_OPT -jar ${JAR_NAME}  > /dev/null 2>&1 &
    
  • stop

    • 指定jar
    jarName=chss-rhwzh.jar
    echo "jps -ml|grep ${jarName} | grep -v grep | awk '{print $1}'"
    LIVEPID=`jps -ml|grep ${jarName}  |grep -v grep | awk '{print $1}'`
    echo "PID ${LIVEPID}"
    if [ -z $LIVEPID ];then
        echo "pid is null"
    else
        echo $LIVEPID
        kill -9 $LIVEPID
    fi
    
    • 选择jar
    #!/bin/bash
    
    JAR_NAME=$1
    if [ -z "$JAR_NAME" ];then
      echo "JAR_NAME is empty, please input a jar name"
      exit 100
    fi
    BASE_PATH=$(cd `dirname $0`; pwd)
    echo $BASE_PATH
    echo "获取[$JAR_NAME]获取进程列表"
    
    # 获取进程列表
    P_LIST=`jps -l | grep $JAR_NAME`
    echo "$P_LIST"
    
    # 输出循环列表
    i=0
    echo "$P_LIST"| while read line
    do
      ((i++))
      echo "[$i] $line"
    done
    
    P_INDEX=1
    read -p "Please select INDEX of Progress[1]: " P_INDEX
    
    if [ "$P_INDEX" == "" ]; then
      P_INDEX=1
    fi
    
    i=0
    echo "$P_LIST"| while read line
    do
      ((i++))
      if [ "$i" == "$P_INDEX" ];then
            echo "kill [$i] $line"
            echo $line | awk '{print $1}' | xargs kill -9
      fi
    done
    

centos8切换yum源

  • CentOS 8 EOL如何切换源?在新窗口打开

    址http://mirrors.cloud.aliyuncs.com替换为http://mirrors.aliyun.com。、
    例如,yum源替换为http://mirrors.aliyun.com/centos-vault/8.5.2111/,epel源替换为http://mirrors.aliyun.com/epel-archive/8/。
    
    # 运行以下命令备份之前的repo文件。
    rename '.repo' '.repo.bak' /etc/yum.repos.d/*.repo
    
    # 运行以下命令下载最新的repo文件。
    wget http://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo -O /etc/yum.repos.d/Centos-vault-8.5.2111.repo
    wget http://mirrors.aliyun.com/repo/epel-archive-8.repo -O /etc/yum.repos.d/epel-archive-8.repo
    
    # 运行以下命令替换repo文件中的链接
    sed -i 's/http:\/\/mirrors.aliyun.com/url_tmp/g'  /etc/yum.repos.d/Centos-vault-8.5.2111.repo &&  sed -i 's/http:\/\/mirrors.aliyun.com/http:\/\/mirrors.aliyun.com/g' /etc/yum.repos.d/Centos-vault-8.5.2111.repo && sed -i 's/url_tmp/http:\/\/mirrors.aliyun.com/g' /etc/yum.repos.d/Centos-vault-8.5.2111.repo
    sed -i 's/http:\/\/mirrors.aliyun.com/http:\/\/mirrors.aliyun.com/g' /etc/yum.repos.d/epel-archive-8.repo
    
    # 运行以下命令重新创建缓存
    yum clean all && yum makecache
    

sshguard

https://developer.aliyun.com/article/1100605

压缩

zip test.zip test.txt  #添加压缩文件
zip test.zip test1.txt  #移动文件到压缩包
zip -d test.zip test.txt    #删除test.txt

zip -r test.zip ./*          #压缩当前全部文件到test.zip
zip test2.zip test2/*   #打包目录
zip test3.zip tests/* -x tests/ln.log  #压缩目录,除了tests/ln.log

zip -r test.zip ./* -P 123  #设置密码(明文设置密码不太安全)
zip -r test.zip ./* -e   #交互设置密码(安全)

#设置压缩比
#-0不压缩,-9最高压缩,默认为-6
zip test.zip test.txt -6

文件句柄

  • ulimit -a

    ···

    while true do

    lsof -p 19268 |wc -l

    sleep 10 done

    ···

  • lsof|awk '{print $2}'|sort|uniq -c|sort -nr|more

  • netstat -an | grep CLOSE_WAIT | grep 8092

  • netstat -ant|awk '/^tcp/ {++S[$NF]} END {for(a in S) print (a,S[a])}'

  • ps aef | grep pid

history

  • 显示时间 export HISTTIMEFORMAT='%F %T'
  • 显示记录数:HISTSIZE=200

linux时间差8小时

修改时区
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime 

VirtualBox 时间不同步
1. vboxmanage list vms 显示虚拟下所有机器
2. 关闭/开启同步
	关闭时间同步:vboxmanage guestproperty set <虚拟机名/虚拟机UUID> --timesync-set-stop
	打开时间同步:vboxmanage guestproperty set <虚拟机名/虚拟机UUID> --timesync-set-start

SSH 免密登录

Ssh 免官登录,允许用户远程登录机器、scp操作,不需要密码

参见:https://blog.csdn.net/BD_fuhong/article/details/103295240

生成密码参见网上:ssh-keygen

A免密操作B
在A上执行 ssh-copy-id -i ~/.ssh/id_rsa.pub user@B.B.B.B
在B的.ssh文件夹下回自动生成 authorized_keys文件

注意:
  sshd为了安全,对属主的目录和文件权限有所要求。如果权限不对,则ssh的免密码登陆不生效。
  用户目录权限为 755 或者 700,就是不能是77x。
  .ssh目录权限一般为755或者700。
  rsa_id.pub 及authorized_keys权限一般为644
  rsa_id权限必须为600
解决方案:
    chmod 700 /home/hadoop 

两个机器:A、B
允许A远程免密访问B
1. A执行ssh-keygen 一路驾车。执行完成后会有.ssh目录下生成id_rea.pub公钥文件
2. B 同理执行
3. A机器执行 ssh-copy-id -i ~/.ssh/id_rsa.pub user@B.B.B.B
4. 测试:scp A机器某文件 user@B.B.B.B:/home/xx
5. 执行完后,查看B相应目录是否有文件

防火墙

  • 开启关闭

    关闭防火墙: systemctl stop firewalld.service
    开启: systemctl start firewalld.service
    	 先用:systemctl unmask firewalld.service 
       然后:systemctl start firewalld.service
    开机运行:systemctl enable firewalld.
    关闭开机运行: systemctl disable firewalld.service
    
  • 查看防火墙状态 systemctl status firewalld 或 firewall-cmd --state

  • 添加、删除规则

    开启端口
    #(--permanent永久生效,没有此参数重启后失效)
    #注:可以是一个端口范围,如1000-2000/tcp
    firewall-cmd --zone=public --add-port=80/tcp --permanent   
    移除端口
    firewall-cmd --zone=public --remove-port=80/tcp --permanent
    firewall-cmd --permanent --remove-port=123/tcp
    
  • 查看端口

    • 查看端口列表: firewall-cmd --list-port
    • 查看端口: firewall-cmd --query-port=80/tcp
  • 刷新防火墙

重新加载防火墙 firewall-cmd --reload
上次更新:
贡献者: NOHI