网络、io命令手册重编(2021版)

2022-06-26 14:09:03 浏览数 (1)

网络

代码语言:javascript复制
rz                                                                    # 通过ssh上传小文件
sz                                                                    # 通过ssh下载小文件
ifconfig eth0 down                                                    # 禁用网卡
ifconfig eth0 up                                                      # 启用网卡
ifup eth0:0                                                           # 启用网卡
mii-tool em1                                                          # 查看网线是否连接
traceroute www.baidu.com                                              # 测试跳数
vi /etc/resolv.conf                                                   # 设置DNS  nameserver IP 定义DNS服务器的IP地址
nslookup www.moon.com                                                 # 解析域名IP
dig -x www.baidu.com                                                  # 解析域名IP
dig  trace -t A domainname                                            # 跟踪dns
dig  short txt hacker.wp.dg.cx                                        # 通过 DNS 来读取 Wikipedia 的hacker词条
host -t txt hacker.wp.dg.cx                                           # 通过 DNS 来读取 Wikipedia 的hacker词条
lynx                                                                  # 文本上网
wget -P path -O name url                                              # 下载  包名:wgetrc   -q 安静 -c 续传
dhclient eth1                                                         # 自动获取IP
mtr -r www.baidu.com                                                  # 测试网络链路节点响应时间 # trace ping 结合
ipcalc -m "$ip" -p "$num"                                             # 根据IP和主机最大数计算掩码
curl -I www.baidu.com                                                 # 查看网页http头
curl -s www.baidu.com                                                 # 不显示进度
queryperf -d list -s DNS_IP -l 2                                      # BIND自带DNS压力测试  [list 文件格式:www.turku.fi A]
telnet ip port                                                        # 测试端口是否开放,有些服务可直接输入命令得到返回状态
echo "show " |nc $ip $port                                            # 适用于telnet一类登录得到命令返回
nc -l -p port                                                         # 监听指定端口
nc -nv -z 10.10.10.11 1080 |grep succeeded                            # 检查主机端口是否开放
curl -o /dev/null -s -m 10 --connect-timeout 10 -w %{http_code} $URL  # 检查页面状态
curl -X POST -d "user=xuesong&pwd=123" http://www.abc.cn/Result       # 提交POST请求
curl -s http://20140507.ip138.com/ic.asp                              # 通过IP138取本机出口外网IP
curl http://IP/ -H "X-Forwarded-For: ip" -H "Host: www.ttlsa.com"     # 连到指定IP的响应主机,HTTPserver只看 Host字段
ifconfig eth0:0 192.168.1.221 netmask 255.255.255.0                   # 增加逻辑IP地址
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all                      # 禁ping
net rpc shutdown -I IP_ADDRESS -U username%password                   # 远程关掉一台WINDOWS机器
wget --random-wait -r -p -e robots=off -U Mozilla www.example.com     # 递归方式下载整个网站
sshpass -p "$pwd" rsync -avzP /dir  user@$IP:/dir/                    # 指定密码避免交互同步目录
rsync -avzP --delete /dir/ user@$IP:/dir/                             # 无差同步目录 可以快速清空大目录,末尾带/同步目录
rsync -avzP -e "ssh -p 22 -e -o StrictHostKeyChecking=no" /dir user@$IP:/dir         # 指定ssh参数同步

抓包{

    -i eth1                             # 只抓经过接口eth1的包
    -t                                  # 不显示时间戳
    -s 0                                # 抓取数据包时默认抓取长度为68字节。加上-S 0 后可以抓到完整的数据包
    -c 100                              # 只抓取100个数据包
    dst port ! 22                       # 不抓取目标端口是22的数据包
    tcpdump tcp port 22                 # 抓包
    tcpdump -n -vv udp port 53          # 抓udp的dns包 并显示ip
    tcpdump port 10001 -A -s0           # 完整显示ascii数据包
    tcpdump -i any  host x.x.x.x -s 0 -w /tmp/cap.pcap   # 对端ip
    tcpdump -i any -s 0 host 172.20.81.107 or host 172.16.3.72 -C 50 -W 5 -w /tmp/20190122ng.cap

}


一次短链接失败故障定位{

    # php和python程序调用接口,通过阿里云slb,到后端nginx,偶尔超时,后端nginx无请求,怀疑没到nginx,但通过检查,无法与nginx建立tcp链接
    ss -nl |grep :80  # 查看 accept 队列值,短连接应该大一点
    watch -n 1 'nstat -z -t 1 | grep -e TcpActiveOpens -e TcpExtListenOverflows -e TcpAttemptFails -e TcpPassiveOpen -e TcpExtTCPSynRetrans -e TcpRetransSegs  -e TcpOutSegs -e TcpInSegs'

    TcpAttemptFails         TCP建立链接失败,包括前后端
    TcpExtTCPSynRetrans     TCP向后端建立链接失败


    # nginx 和内核都需要调整才生效,程序监听端口,需要加socket参数
    listen 10.87.128.29:51528 default_server backlog=4096;


    https://m.aliyun.com/yunqi/articles/118472?spm=5176.8091938.0.0.11e86ccF4oOeZ
}

网卡流量查看{

    watch more /proc/net/dev    # 实时监控流量文件系统 累计值
    iptraf                      # 网卡流量查看工具
    nethogs -d 5 eth0 eth1      # 按进程实时统计网络流量 epel源nethogs
    iftop -i eth0 -n -P         # 实时流量监控

    sar {
        -n参数有6个不同的开关: DEV | EDEV | NFS | NFSD | SOCK | ALL
        DEV显示网络接口信息
        EDEV显示关于网络错误的统计数据
        NFS统计活动的NFS客户端的信息
        NFSD统计NFS服务器的信息
        SOCK显示套 接字信息
        ALL显示所有5个开关

        sar -n DEV 1 10

        rxpck/s   # 每秒钟接收的数据包
        txpck/s   # 每秒钟发送的数据包
        rxbyt/s   # 每秒钟接收的字节数
        txbyt/s   # 每秒钟发送的字节数
        rxcmp/s   # 每秒钟接收的压缩数据包
        txcmp/s   # 每秒钟发送的压缩数据包
        rxmcst/s  # 每秒钟接收的多播数据包

    }

}

netstat{

    # 几十万并发的情况下netstat会没有响应,建议使用 ss 命令
    -a     # 显示所有连接中的Socket
    -t     # 显示TCP连接
    -u     # 显示UDP连接
    -n     # 显示所有已建立的有效连接
    netstat -anlp           # 查看链接
    netstat -tnlp           # 只查看tcp监听端口
    netstat -r              # 查看路由表
}

ss{

    # netstat是遍历/proc下面每个PID目录,ss直接读/proc/net下面的统计信息。所以ss执行的时候消耗资源以及消耗的时间都比netstat少很多
    ss -s                          # 列出当前socket详细信息
    ss -l                          # 显示本地打开的所有端口
    ss -tnlp                       # 显示每个进程具体打开的socket
    ss -ant                        # 显示所有TCP socket
    ss -u -a                       # 显示所有UDP Socekt
    ss dst 192.168.119.113         # 匹配远程地址
    ss dst 192.168.119.113:http    # 匹配远程地址和端口号
    ss dst 192.168.119.113:3844    # 匹配远程地址和端口号
    ss src 192.168.119.103:16021   # 匹配本地地址和端口号
    ss -o state established '( dport = :smtp or sport = :smtp )'        # 显示所有已建立的SMTP连接
    ss -o state established '( dport = :http or sport = :http )'        # 显示所有已建立的HTTP连接
    ss -x src /tmp/.X11-unix/*         # 找出所有连接X服务器的进程

}

并发数查看{

    netstat -n | awk '/^tcp/ {  S[$NF]} END {for(a in S) print a, S[a]}'
    SYN_RECV     # 正在等待处理的请求
    ESTABLISHED  # 正常数据传输状态,既当前并发数
    TIME_WAIT    # 处理完毕,等待超时结束的请求
    CLOSE_WAIT   # 客户端异常关闭,没有完成4次挥手  如大量可能存在攻击行为

}

ssh{

    ssh -p 22 user@192.168.1.209                            # 从linux ssh登录另一台linux
    ssh -p 22 root@192.168.1.209 CMD                        # 利用ssh操作远程主机
    scp -P 22 file root@ip:/dir                             # 把本地文件拷贝到远程主机
    scp -l 100000  file root@ip:/dir                        # 传输文件到远程,限制速度100M
    sshpass -p 'pwd' ssh -n root@$IP "echo hello"           # 指定密码远程操作
    ssh -o StrictHostKeyChecking=no $IP                     # ssh连接不提示yes
    ssh -t "su -"                                           # 指定伪终端 客户端以交互模式工作
    scp root@192.168.1.209:/RemoteDir /localDir             # 把远程指定文件拷贝到本地
    pscp -h host.ip /a.sh /opt/sbin/                        # 批量传输文件
    ssh -N -L2001:remotehost:80 user@somemachine            # 用SSH创建端口转发通道
    ssh -t host_A ssh host_B                                # 嵌套使用SSH
    ssh -t -p 22 $user@$Ip /bin/su - root -c {$Cmd};        # 远程su执行命令 Cmd=""/sbin/ifconfig eth0""
    ssh-keygen -t rsa                                       # 生成密钥
    ssh-copy-id -i xuesong@10.10.10.133                     # 传送key
    vi $HOME/.ssh/authorized_keys                           # 公钥存放位置
    sshfs name@server:/path/to/folder /path/to/mount/point  # 通过ssh挂载远程主机上的文件夹
    fusermount -u /path/to/mount/point                      # 卸载ssh挂载的目录
    ssh user@host cat /path/to/remotefile | diff /path/to/localfile -                # 用DIFF对比远程文件跟本地文件
    su - user -c "ssh user@192.168.1.1 "echo -e aa |mail -s test mail@163.com""    # 切换用户登录远程发送邮件
    pssh -h ip.txt -i uptime                                # 批量执行ssh yum install pssh

    SSH反向连接{

        # 外网A要控制内网B

        ssh -NfR 1234:localhost:2223 user1@123.123.123.123 -p22    # 将A主机的1234端口和B主机的2223端口绑定,相当于远程端口映射
        ss -ant   # 这时在A主机上sshd会listen本地1234端口
        # LISTEN     0    128    127.0.0.1:1234       *:*
        ssh localhost -p1234    # 在A主机连接本地1234端口

    }
}

网卡配置文件{

    vi /etc/sysconfig/network-scripts/ifcfg-eth0

    DEVICE=eth0
    BOOTPROTO=none
    BROADCAST=192.168.1.255
    HWADDR=00:0C:29:3F:E1:EA
    IPADDR=192.168.1.55
    NETMASK=255.255.255.0
    NETWORK=192.168.1.0
    ONBOOT=yes
    TYPE=Ethernet
    GATEWAY=192.168.1.1
    #ARPCHECK=no     # 进制arp检查

}

route {

    route                           # 查看路由表
    route add default  gw 192.168.1.1  dev eth0                        # 添加默认路由
    route add -net 172.16.0.0 netmask 255.255.0.0 gw 10.39.111.254     # 添加静态路由网关
    route del -net 172.16.0.0 netmask 255.255.0.0 gw 10.39.111.254     # 删除静态路由网关

}

静态路由{

    vim /etc/sysconfig/static-routes
    any net 192.168.12.0/24 gw 192.168.0.254
    any net 192.168.13.0/24 gw 192.168.0.254

}

解决ssh链接慢{

    sed -i 's/GSSAPIAuthentication yes/GSSAPIAuthentication no/' /etc/ssh/sshd_config
    sed -i '/#UseDNS yes/aUseDNS no' /etc/ssh/sshd_config
    /etc/init.d/sshd reload

}

nmap{

    nmap -PT 192.168.1.1-111             # 先ping在扫描主机开放端口
    nmap -O 192.168.1.1                  # 扫描出系统内核版本
    nmap -sV 192.168.1.1-111             # 扫描端口的软件版本
    nmap -sS 192.168.1.1-111             # 半开扫描(通常不会记录日志)
    nmap -P0 192.168.1.1-111             # 不ping直接扫描
    nmap -d 192.168.1.1-111              # 详细信息
    nmap -D 192.168.1.1-111              # 无法找出真正扫描主机(隐藏IP)
    nmap -p 20-30,139,60000-             # 端口范围  表示:扫描20到30号端口,139号端口以及所有大于60000的端口
    nmap -P0 -sV -O -v 192.168.30.251    # 组合扫描(不ping、软件版本、内核版本、详细信息)

    # 不支持windows的扫描(可用于判断是否是windows)
    nmap -sF 192.168.1.1-111
    nmap -sX 192.168.1.1-111
    nmap -sN 192.168.1.1-111

}

流量切分线路{

    # 程序判断进入IP线路,设置服务器路由规则控制返回
    vi /etc/iproute2/rt_tables
    #添加一条策略
    252   bgp2  #注意策略的序号顺序
    ip route add default via 第二个出口上线IP(非默认网关) dev eth1 table bgp2
    ip route add from 本机第二个ip table bgp2
    #查看
    ip route list table 252
    ip rule list
    #成功后将语句添加开机启动

}

snmp{

    snmptranslate .1.3.6.1.2.1.1.3.0    # 查看映射关系
        DISMAN-EVENT-MIB::sysUpTimeInstance
    snmpdf -v 1 -c public localhost                            # SNMP监视远程主机的磁盘空间
    snmpnetstat -v 2c -c public -a 192.168.6.53                # SNMP获取指定IP的所有开放端口状态
    snmpwalk -v 2c -c public 10.152.14.117 .1.3.6.1.2.1.1.3.0  # SNMP获取主机启动时间
    # MIB安装(ubuntu)
    # sudo apt-get install snmp-mibs-downloader
    # sudo download-mibs
    snmpwalk -v 2c -c public 10.152.14.117 sysUpTimeInstance   # SNMP通过MIB库获取主机启动时间

}

TC流量控制{

    # 针对ip段下载速率控制
    tc qdisc del dev eth0 root handle 1:                                                              # 删除控制1:
    tc qdisc add dev eth0 root handle 1: htb r2q 1                                                    # 添加控制1:
    tc class add dev eth0 parent 1: classid 1:1 htb rate 12mbit ceil 15mbit                           # 设置速率
    tc filter add dev eth0 parent 1: protocol ip prio 16 u32 match ip dst 10.10.10.1/24 flowid 1:1    # 指定ip段控制规则

    # 检查命令
    tc -s -d qdisc show dev eth0
    tc class show dev eth0
    tc filter show dev eth0

    限制上传下载{

        tc qdisc del dev tun0 root
        tc qdisc add dev tun0 root handle 2:0 htb
        tc class add dev tun0 parent 2:1 classid 2:10 htb rate 30kbps
        tc class add dev tun0 parent 2:2 classid 2:11 htb rate 30kbps
        tc qdisc add dev tun0 parent 2:10 handle 1: sfq perturb 1
        tc filter add dev tun0 protocol ip parent 2:0 u32 match ip dst 10.18.0.0/24 flowid 2:10
        tc filter add dev tun0 parent ffff: protocol ip u32 match ip src 10.18.0.0/24 police rate 30kbps burst 10k drop flowid 2:11


        tc qdisc del dev tun0 root                                     # 删除原有策略
        tc qdisc add dev tun0 root handle 2:0 htb                      # 定义最顶层(根)队列规则,并指定 default 类别编号,为网络接口 eth1 绑定一个队列,类型为 htb,并指定了一个 handle 句柄 2:0 用于标识它下面的子类
        tc class add dev tun0 parent 2:1 classid 2:10 htb rate 30kbps  # 设置一个规则速度是30kbps
        tc class add dev tun0 parent 2:2 classid 2:11 htb rate 30kbps
        tc qdisc add dev tun0 parent 2:10 handle 1: sfq perturb 1      # 调用随机公平算法
        tc filter add dev tun0 protocol ip parent 2:0 u32 match ip dst 10.18.0.0/24 flowid 2:10  # 规则2:10应用在目标地址上,即下载
        tc filter add dev tun0 parent ffff: protocol ip u32 match ip src 10.18.0.0/24 police rate 30kbps burst 10k drop flowid 2:11 # 上传限速

    }

}

磁盘

代码语言:javascript复制
df -Ph                                          # 查看硬盘容量
df -T                                           # 查看磁盘分区格式
df -i                                           # 查看inode节点   如果inode用满后无法创建文件
du -h dir                                       # 检测目录下所有文件大小
du -sh *                                        # 显示当前目录中子目录的大小
mount -l                                        # 查看分区挂载情况
fdisk -l                                        # 查看磁盘分区状态
fdisk /dev/hda3                                 # 分区
mkfs -t ext4  /dev/hda3                         # 格式化分区
fsck -y /dev/sda6                               # 对文件系统修复
lsof |grep delete                               # 释放进程占用磁盘空间  列出进程后,查看文件是否存在,不存在则kill掉此进程
tmpwatch -afv 10   /tmp                         # 删除10小时内未使用的文件  勿在重要目录使用
cat /proc/filesystems                           # 查看当前系统支持文件系统
mount -o remount,rw /                           # 修改只读文件系统为读写
iotop                                           # 进程占用磁盘IO情况   yum install iotop
smartctl -H /dev/sda                            # 检测硬盘状态  # yum install smartmontools
smartctl -i /dev/sda                            # 检测硬盘信息
smartctl -a /dev/sda                            # 检测所有信息
e2label /dev/sda5                               # 查看卷标
e2label /dev/sda5 new-label                     # 创建卷标
ntfslabel -v /dev/sda8 new-label                # NTFS添加卷标
tune2fs -j /dev/sda                             # ext2分区转ext3分区
tune2fs -l /dev/sda                             # 查看文件系统信息
mke2fs -b 2048 /dev/sda5                        # 指定索引块大小
dumpe2fs -h /dev/sda5                           # 查看超级块的信息
mount -t iso9660 /dev/dvd  /mnt                 # 挂载光驱
mount -t ntfs-3g /dev/sdc1 /media/yidong        # 挂载ntfs硬盘
mount -t nfs 10.0.0.3:/opt/images/  /data/img   # 挂载nfs 需要重载 /etc/init.d/nfs reload  重启需要先启动 portmap 服务
mount -o loop  /software/rhel4.6.iso   /mnt/    # 挂载镜像文件

磁盘IO性能检测{

    iostat -x 1 10

    % user       # 显示了在用户级(应用程序)执行时生成的 CPU 使用率百分比。
    % system     # 显示了在系统级(内核)执行时生成的 CPU 使用率百分比。
    % idle       # 显示了在 CPU 空闲并且系统没有未完成的磁盘 I/O 请求时的时间百分比。
    % iowait     # 显示了 CPU 空闲期间系统有未完成的磁盘 I/O 请求时的时间百分比。

    rrqm/s       # 每秒进行 merge 的读操作数目。即 delta(rmerge)/s
    wrqm/s       # 每秒进行 merge 的写操作数目。即 delta(wmerge)/s
    r/s          # 每秒完成的读 I/O 设备次数。即 delta(rio)/s
    w/s          # 每秒完成的写 I/O 设备次数。即 delta(wio)/s
    rsec/s       # 每秒读扇区数。即 delta(rsect)/s
    wsec/s       # 每秒写扇区数。即 delta(wsect)/s
    rkB/s        # 每秒读K字节数。是 rsect/s 的一半,因为每扇区大小为512字节。(需要计算)
    wkB/s        # 每秒写K字节数。是 wsect/s 的一半。(需要计算)
    avgrq-sz     # 平均每次设备I/O操作的数据大小 (扇区)。delta(rsect wsect)/delta(rio wio)
    avgqu-sz     # 平均I/O队列长度。即 delta(aveq)/s/1000 (因为aveq的单位为毫秒)。
    await        # 平均每次设备I/O操作的等待时间 (毫秒)。即 delta(ruse wuse)/delta(rio wio)
    svctm        # 平均每次设备I/O操作的服务时间 (毫秒)。即 delta(use)/delta(rio wio)
    %util        # 一秒中有百分之多少的时间用于 I/O 操作,或者说一秒中有多少时间 I/O 队列是非空的。即 delta(use)/s/1000 (因为use的单位为毫秒)

    IO性能衡量标准{

        1、 如果 %util 接近 100%,说明产生的I/O请求太多,I/O系统已经满负荷,该磁盘可能存在瓶颈。
        2、 idle 小于70% IO压力就较大了,一般读取速度有较多的wait.
        3、 同时可以结合 vmstat 查看查看b参数(等待资源的进程数)和wa参数(IO等待所占用的CPU时间的百分比,高过30%时IO压力高)
        4、 svctm 一般要小于 await (因为同时等待的请求的等待时间被重复计算了),svctm 的大小一般和磁盘性能有关,CPU/内存的负荷也会对其有影响,请求过多也会间接导致 svctm 的增加. await 的大小一般取决于服务时间(svctm) 以及 I/O 队列的长度和 I/O 请求的发出模式. 如果 svctm 比较接近 await,说明 I/O 几乎没有等待时间;如果 await 远大于 svctm,说明 I/O 队列太长,应用得到的响应时间变慢,如果响应时间超过了用户可以容许的范围,这时可以考虑更换更快的磁盘,调整内核 elevator 算法,优化应用,或者升级 CPU
        5、 队列长度(avgqu-sz)也可作为衡量系统 I/O 负荷的指标,但由于 avgqu-sz 是按照单位时间的平均值,所以不能反映瞬间的 I/O 洪水。

    }

}

iotop{

    # 监视进程磁盘I/O

    yum install iotop

    -o        # 只显示有io操作的进程
    -b        # 批量显示,无交互,主要用作记录到文件。
    -n NUM    # 显示NUM次,主要用于非交互式模式。
    -d SEC    # 间隔SEC秒显示一次。
    -p PID    # 监控的进程pid。
    -u USER   # 监控的进程用户。

    # 左右箭头:改变排序方式,默认是按IO排序。
    r         # 改变排序顺序。
    o         # 只显示有IO输出的进程。
    p         # 进程/线程的显示方式的切换。
    a         # 显示累积使用量。
    q         # 退出。

}

创建swap文件方法{

    dd if=/dev/zero of=/swap bs=1024 count=4096000            # 创建一个足够大的文件
    # count的值等于1024 x 你想要的文件大小, 4096000是4G
    mkswap /swap                      # 把这个文件变成swap文件
    swapon /swap                      # 启用这个swap文件
    /swap swap swap defaults 0 0      # 在每次开机的时候自动加载swap文件, 需要在 /etc/fstab 文件中增加一行
    cat /proc/swaps                   # 查看swap
    swapoff -a                        # 关闭swap
    swapon -a                         # 开启swap

}

新硬盘挂载{

    fdisk /dev/sdc
    p    #  打印分区
    d    #  删除分区
    n    #  创建分区,(一块硬盘最多4个主分区,扩展占一个主分区位置。p主分区 e扩展)
    w    #  保存退出
    mkfs.ext4 -L 卷标  /dev/sdc1            # 格式化相应分区
    mount /dev/sdc1  /mnt                  # 挂载
    vi /etc/fstab                          # 添加开机挂载分区
    LABEL=/data            /data                   ext4    defaults        1 2      # 用卷标挂载
    /dev/sdb1              /data4                  ext4    defaults        1 2      # 用真实分区挂载
    /dev/sdb2              /data4                  ext4    noatime,defaults        1 2

    第一个数字"1"该选项被"dump"命令使用来检查一个文件系统应该以多快频率进行转储,若不需要转储就设置该字段为0
    第二个数字"2"该字段被fsck命令用来决定在启动时需要被扫描的文件系统的顺序,根文件系统"/"对应该字段的值应该为1,其他文件系统应该为2。若该文件系统无需在启动时扫描则设置该字段为0
    当以 noatime 选项加载(mount)文件系统时,对文件的读取不会更新文件属性中的atime信息。设置noatime的重要性是消除了文件系统对文件的写操作,文件只是简单地被系统读取。由于写操作相对读来说要更消耗系统资源,所以这样设置可以明显提高服务器的性能.wtime信息仍然有效,任何时候文件被写,该信息仍被更新。

    mount -a    # 自动加载 fstab 文件挂载,避免配置错误,系统无法重启

}

大磁盘2T和16T分区{

    parted /dev/sdb                # 针对磁盘分区
    (parted) mklabel gpt           # 设置为 gpt
    (parted) print
    (parted) mkpart  primary 0KB 22.0TB        # 指定分区大小
    Is this still acceptable to you?
    Yes/No? Yes
    Ignore/Cancel? Ignore
    (parted) print
    Model: LSI MR9271-8i (scsi)
    Disk /dev/sdb: 22.0TB
    Sector size (logical/physical): 512B/512B
    Partition Table: gpt
    Number  Start   End     Size    File system  Name     Flags
     1      17.4kB  22.0TB  22.0TB               primary
    (parted) quit

    mkfs.ext4 /dev/sdb1        # e2fsprogs升级后支持大于16T硬盘

    # 大于16T的单个分区ext4格式化报错,需要升级e2fsprogs
    Size of device /dev/sdb1 too big to be expressed in 32 bits using a blocksize of 4096.

    yum -y install xfsprogs
    mkfs.xfs -f /dev/sdb1              # 大于16T单个分区也可以使用XFS分区,但inode占用很大,对大量的小文件支持不太好

}

阿里云扩容磁盘{

    # 进入ECS 本实例磁盘,勾选在线扩容, 选择扩容磁盘
    yum install cloud-utils-growpart
    yum install xfsprogs
    df -h    # 查看目前分区大小
    fdisk -l # 查看磁盘设备
    growpart /dev/vda 1         # 扩容分区 如果没有分区,默认整块,不需要执行
    resize2fs /dev/vda1         # 扩容文件系统 ext4文件系统 
    xfs_growfs /dev/vda1        # 扩容文件系统 xfs文件系统
    df -h                       # 再查看分区大小,是否扩容

}

raid原理与区别{

    raid0至少2块硬盘.吞吐量大,性能好,同时读写,但损坏一个就完蛋
    raid1至少2块硬盘.相当镜像,一个存储,一个备份.安全性比较高.但是性能比0弱
    raid5至少3块硬盘.分别存储校验信息和数据,坏了一个根据校验信息能恢复
    raid6至少4块硬盘.两个独立的奇偶系统,可坏两块磁盘,写性能非常差

}

用户

代码语言:javascript复制
users                                      # 显示所有的登录用户
groups                                     # 列出当前用户和他所属的组
who -q                                     # 显示所有的登录用户
groupadd                                   # 添加组
useradd user                               # 建立用户
passwd username                            # 修改密码
userdel -r                                 # 删除帐号及家目录
chown -R user:group                        # 修改目录拥有者(R递归)
chown y.li:mysql                          # 修改所有者用户中包含点"."
umask                                      # 设置用户文件和目录的文件创建缺省屏蔽值
chgrp                                      # 修改用户组
finger                                     # 查找用户显示信息
echo "xuesong" | passwd user --stdin       # 非交互修改密码
useradd -g www -M  -s /sbin/nologin  www   # 指定组并不允许登录的用户,nologin允许使用服务
useradd -g www -M  -s /bin/false  www      # 指定组并不允许登录的用户,false最为严格
useradd -d /data/song -g song song         # 创建用户并指定家目录和组
usermod -l newuser olduser                 # 修改用户名
usermod -g user group                      # 修改用户所属组
usermod -d dir -m user                     # 修改用户家目录
usermod -G group user                      # 将用户添加到附加组
gpasswd -d user group                      # 从组中删除用户
su - user -c " #cmd1; "                    # 切换用户执行

恢复密码{

    # 即进入单用户模式: 在linux出现grub后,在安装的系统上面按"e",然后出现grub的配置文件,按键盘移动光标到第二行"Ker……",再按"e",然后在这一行的结尾加上:空格 single或者空格1回车,然后按"b"重启,就进入了"单用户模式"
}

特殊权限{

    s或 S (SUID):对应数值4
    s或 S (SGID):对应数值2
    t或 T :对应数值1
    大S:代表拥有root权限,但是没有执行权限
    小s:拥有特权且拥有执行权限,这个文件可以访问系统任何root用户可以访问的资源
    T或T(Sticky):/tmp和 /var/tmp目录供所有用户暂时存取文件,亦即每位用户皆拥有完整的权限进入该目录,去浏览、删除和移动文件

}

0 人点赞