3.linux之基础命令

一、sed的使用(不处理文件本身)



语法:sed option 'addresscommand' file
  1.1:address地址
    startline,endline:指定起始与结束行。eg:1,100
    使用模式正则表达式:/正则表达式/ 。eg:/^root/
    组合模式:/正则表达式/,/正则表达式/
    linenumber:指定的行。eg:$表最后一行 $-1:倒数第二行
    startline,+N:从指定行到向后N行
  1.2:command:命令
    d:删除符合条件的行,处理后显示模式里的行。eg:sed '/oot/d' /etc/fstab
    p:显示符合条件的行,符合条件的会显示二次。eg:sed '/^\//p' /etc/fstab /有特殊意义在中间要用转意符
    a \string:指定行后加新行内容为string。eg:sed '1a \#hello\n#hello /etc/fstab \n是换行符,这里在第一行后加二行
    i \string:指定行前新行内容为string
    r FILE:将指定的文件内容添加至符合条件的行处合并文件
    w FILE:将地址指定的范围的行另存在指定文件中
    s/pattern/string/修饰符:把pattern替换为string 修饰符:g全局替换 i:忽略大小写
  1.3:option选项
    -n:静默模式,不显示模式空间中的内容,只跟命令相关
    -i:直接修改原文件
    -e 'addresscommand' -e 'addresscommand':可同时执行多个脚本
    -f /path/to/file :这个文件里放的是'addresscommand',把后的文件用这个文件里的'addresscommand'来处理
    -r:表达使用扩展正则表达式
二、awk的使用



语法:awk [option] 'PATIERN {action}' file1 file2..... PATIERN:被模式匹配的行
    {action}---实际上是{动作+行中的切片}---生成新的显示格式 {print $1}
区别:sed是以行为单位,只显示这行删除新加等不改变格式
   awk把行按分隔符把行的字符切开处理,所以awk有内置变量$1 $2.... 其中$0表整行
    awk的其它内置变量,都用{}引用:
      FS RS OFS(输入分隔符) ORS NR FNR NF(最后一个值) ARGV ARGC FILENAME ENVIRON
      直接引用:{print NF}
      赋值:{OFS="#"}
选项:
  -F:以谁为分隔符

模式:
  (1)BEGIN:特殊模式,后不跟FILE在动作里直接有值 END:特殊模式,结束前运行一次
  (2)/正则表达式/
  (3)表达式(判断赋值操作符)
      awk -F: '$3>=500 {print $1,$3}' /etc/password
  (4)#,#:匹配范围
  (5)Empty(空模式不写):匹配任意输入行
动作action:
  (1)printf:自定义显示格式
  (2)print:逐个显示出来
  (3)表达式
  (4)控制语句
  (5)复合语句
  (6)输入/出语句
awk中的使用数组
  netstat -tan | awk '/^tcp/{STATE[$NF]++}END{for (S in STATE) {print S,STATE[S]}}'
  netstat -anp
    tcp A
    tcp B
    tcp A
    tcp B
    tcp A
    tcp B

  STATE[$NF]----awk声明变量时第一次引用初始值为0,NF为2,$NF为最后一行的值
  STATE[A]=0第一次引用初始值为0
  STATE[B]=0
  STATE[A]++:---表这个值每次加1
  STATE是一个数组,S表循环这个数组里的每个值
  打印出来的是数组里的值与这个值的计数


三、grep的使用



选项:
-v:不包含的字段
-i 不区分大小写,即不区分:aA
-w 按照单词 进行匹配(括号外的意思是老师讲的,但我总感觉这样理解起来有点疑惑,然后课下详细询问了一下老师-w选项的意义
然后自己总结了一下感觉好象应该叫做:全字符精确匹配/完全匹配)
-n 显示行号
-o 显示grep执行过程 grep正则把每次匹配到的内容显示出来

四、vim的使用



 常用:文件非正常退出报错:o:只读打开 E:开始编辑 R:恢复此前编辑过内容 D:把此前编辑内容山删除 Q:退出中止 A:退出直接把文件删除
    只要有.swp的文件用VI打开都会有警告,手动删除 rm -rf .原文件.swp
  2.1:编辑模式
    2.1.1:退出关闭文件:ZZ(大写ZZ)
    2.1.2:进入输入模式
      i:光标所在字符的前面。转为输入模式
      a:光标所在字符的后面。转为输入模式
      o:当前光标所在行的下方,新建一行
      I:光标所在行的行首
      A:光标所在行的行尾
      O:光标所在行的下方
    2.1.3:ESC转为编辑模式
    2.1.4:进入末行模式--键入shift+:
    2.1.5:移动光标
        字符移动:h:向左 l:向右 j:向下 k:向上 数字+h/l/j/k
        单词移动:w:移至下一个单词的词首 e:跳至当前或下一个单词的词尾 b:跳至当前或前一个单词的词道 数字+w/e/b
        行内跳转:0:跳到行首 $:绝对行尾
        行间跳转:数字+G 跳转至第#行(首行0+G 尾行$+G)
        翻屏操作:ctrl+f:向下翻一屏 ctrl+b:向下翻一屏 ctrl+d:向下翻半屏 ctrl+u:向上翻屏
        删除命令d:d结合跳转命令使用可以命令跳转多少
        d$:从光标处开始到行尾
        d0:从光标处开始到行首
        dw:一个单词一个单词的删除,3dw:三个单词删除
        dd:删除光标所在行,#dd:删除#行
        粘贴命令:p 如果删除或复制为整行内容,则粘贴至光标所在行的下方,如果复制或删除的内容为非整行,则粘贴至光标所在字符的后面
        P:如果删除或复制为整行内容,则粘贴至光标所在行的上,如果复制或删除的内容为非整行,则粘贴至光标所在字符的前面
        复制命令:y
        撤消编辑操作:u 撤消前一次的编辑操作 连续u:撤消此前的n次操作最多撤50次 #u 撤几次 ctrl+r:表还原一次
        重复编辑操作:. 重复一次这样的操作,多点几次就是重复几次
        查找:/pattern 根据模式从首部向尾部查找,点N/n表查找下一个
        ?pattern 从当前光标所在行到文件首行找

  2.2:输入模式
  2.3:末行模式
    2.3.1:操作
      删除:start,endd 1,8d删除1-8行 .,+5d:当前行到后5行
        .:表当前行
        $:最后一行
      查找并替换:
        .,$s/he/HE/g
      另一个文件内容填充在当前文件中
        r /path/to/file
      跟shell交互
        ! command--enter跳到shell再enter回到vi界面
      显示或取消行号
        set nu / set nonu--只对当前vi有效要长期有期要改vi配置文件
      是否区分大小写
        set ic / set noic(忽略/不忽略)
      是否自动缩进
        set ai /set noai (自动缩进/不缩进)
      语法高亮
        syntax on/syntax off(语法高亮/不高亮)

    2.3.2:关闭文件
        wq:保存退出
        x:保存退出
        w!:强行保存
        q:退出
        q!:不保存退出

三、常用命令



3、chroot:切换根
  这个根目录下必须有一个bash,有个登录界面。eg:chroot /opt/dss 注:/opt/dss下必须移一个/bin/bash,与它依赖的库ldd bash
4、ldd command:程序所依赖的库文件有哪些 eg:ldd ls
5、逻辑卷问题,先缩减一个卷再增加一个卷的(对ext2/3/4文件系统)
  (1)先缩减:
      umount /dev/mapper/vg_storage18671-lv_pic /pic (注:vg_storage18671是vg的名字 lv_pic是lvs的名字,/dev/mapper是默认的)
      e2fsck -f /dev/mapper/vg_storage18671-lv_pic(强行检查文件系统)
      resize2fs /dev/mapper/vg_storage18671-lv_pic 50G (先逻辑卷减到)
      lvreduce -L 50G /dev/mapper/vg_storage18671-lv_pic (再物理卷减到)
      mount /dev/mapper/vg_storage18671-lv_pic /pic
  (2)再添加
      lvextend -L +50G /dev/mapper/vg_storage18671-lv_pic
      e2fsck -f /dev/mapper/vg_storage18671-lv_pic
      resize2fs /dev/mapper/vg_storage18671-lv_pic 66.11G(原的加50G是总数据)
      fsck:检查并修复Linux文件系统
        -t 文件系统:指定文件系统类型(不能指错)
        -a 自动修复
        -f 强制检查
        df -h 看下
  (3)查看文件系统类型
      /etc/fstab 或命令 blkid看下
      /dev/sdb1(可以用卷标也可以用UUID,用blkid查) /media ext3 defaults 0(多长时间对此文件系统做一次完全备份,0表不备份1为一天    一次) 0(文件系统检测次序,只有根为1开机文件系统检查一次,除了根其它可以同时为2也可以为0不检)
      tmpfs devpts sysfs proc:都是伪文件系统用于实现特殊功能但要挂载
      LABEL=swap-sda3 swap swap defaults 0 0


  (4)完整创建逻辑卷的命令
      fdisk /dev/sda---做个20G分区
      partprobe /dev/sda
      pvcreate /dev/sda5
      vgcreate vg_storage18671 /dev/sda5
      lvcreate -L 20G -n lv_opt vg_storage18671
      mke2fs -j /dev/mapper/vg_storage18671-lv_opt---格式化
      mke2dfs -j -L MYDATA -b 1024 -m 3 /dev/sda
      在/etc/fstab里挂载
      /dev/mapper/vg_storage18671-lv_opt /opt ext3 defaults 0 0
      mount -a
  (5)创建分区
      fdisk /dev/sda
        n---创一个新分区
        p---主分区
          1--编号
          回车第一个柱面开始
          +20G---给多大 wq:保存退出
          e---扩展分区
            4----编号
            回车---默认起始柱面
            回车---默认结束柱面最大
            有扩展分区后才用n可以看到逻辑分区l,在扩展分区上做很多逻辑分区
        t-----查看并调整分区类型(82为swap类型)
        有时磁盘分好后内存里没有同步要手动写内存里:partprobe /dev/sda 看成不成功:cat /proc/partitions
      格式化:
        查看当前内核能支持哪些文件系统:cat /proc/filesystems
        mkfs -t FSTYPE 分区
          filesystem label:分区名用于引用这个分区
          多少inode
          多少blocks
          5%的块会能超级管理员当磁盘满时管理员还有空间来修复
          block size=4096:块大小
          maximumfilesystem blocks=5000080最大文件系统块
          15block groups-15个块组
          32768 block pergroup:一个块组多少块
          16352 inodes pergroup:每组有多少个inodes
          superblock backups stored on blocks--备份哪些磁盘块上
        -b BLOCK_SISE:指定块大小默认4096,可取1024 2048 4096
        -L LABEL:指定分区卷标,以后可以指卷标来挂载不然下次开机会分区重新找设备名称/dev/sdb1变为/dev/sdb2
          mke2fs -L MYDATA /dev/sda2
        -m #:指定预留给超级员用户的块数百分比
        -i #:用于指定为多少字节的空间创建一个Inode,默认为8192,这里给出的数应为块大小的2^n 1倍4096,2倍8192
        -N #:指定innode个数
        -F:强制创建文件系统,默认如果文件系统挂载是不能创建的
        -E:用于指定额外文件系统属性

  (6)其它相关命令
    blkid 分区:查看磁盘设备的一些属性信息,
      UUID:统一全局标识符是一个随机数
      TYPE: ext2
    e2label 分区:查看定义的卷标,若未定义就是空
    tune2fs 选项 分区:调整文件系统属性
      -j:不损害原有数据ext2升ext3
      -L:修改卷标名
      -m:预留百分比
        调整其预留百分比为3% tune2fs -m 3 -L DATA /dev/sdb5
      -r:预留块数据
      -o:设备定默认挂载选项
        acl:是文件访问权限控制,在/etc/fstab有个挂载选项default---指的就是acl,mount挂载时用的选项属性
      -c:指定挂载次数达几次后自检0:表关闭此功能
      -i:挂载使用多少天后自检
      -l:显示超级块信息
    dumpe2fs:显示文件属性信息
      -h:只显示超级块
    fsck:检查并修复文件系统(支持所有文件每系统:默认是ext2)
      -t:文件系统类型
      -a:自动修复
      -f:强制检查

    centos7:

      解决 blk_update_request: I/O error, dev fd0, sector 0 错误

                            方式1:

                            通过在关闭软驱模块来解决错误提示:/etc/modprobe.d/modprobe.conf

                                  blacklist floppy

                          方式2:1.首先检测下坏掉

                                              badblocks -s -v -o /root/bb.log /dev/sda  将结果保存到bb.log

                                              smartctl -a   /dev/sda3 (快速检测硬盘坏道,看read,write 后面有没有errors)

                                                   安装smartctl:yum -y install smartmontools

                                       2. 逻辑坏道修复方法

                                              badblocks -s -w /dev/sda END START (END代表需要修复的扇区末端,START代表需要修复的扇区起始端)

                                              fsck -a /dev/sda


  (7)挂载命令mount
      mount 设备 挂载点(设备用/dev/xx---是物理上理解的)
      mount [options] [-o options]--挂载文件系统的功能选项 设备 挂载点
      [option]
        -a :挂载/etc/fstab 文件中的所定义的所有文件系统
        -n:挂载后的信息不保存到/etc/mtab
        -t 文件系统类型,若不使用此项,mount会调用blkid命令看该分区上的文件系统类型
        -r:只读挂载(一般是光盘类,挂载后里的二进制不能执行)
        -w:读写挂载(默认)
      [-o option]:指定文件系统启用属性
        async:异步写入(进程保存文件时,先保存在内存再到磁盘是异步)
        atime:启用更新一次改一次
        defaults:默认
          rw swd dev(反nodev) exec(noexec) auto nounser async
            特殊权限 当前分区上 允许该分区具有
              有设备文件, 执行二进制文件执行权限
              是否启用 (挂U盘时可关闭)
        netdev:挂载其它网络文件系统挂不上会自动跳过的选项
        owner:允许普通用户挂载这个设备文件系统
        remount:重新挂载当前文件系统
          ro:只读
          rw:读写
        sync:同步写入
        loop:挂载本地回环设备
        重新挂为只读:mount -o remount,ro /dev/sda5 /media(也可不写挂载点)
        重新挂为同步写入:mount -o remout,sync /dev/sda5
    umount 卸载
      查看谁正在访问:fuser -v /mnt/test
    fuser:验正进程正在使用文件与套接字
      -v :查看某文件也可以是目录
      -k:把正在访问的那个进程结束掉
      fuser -km /mnt/test:把在这个挂载点上的进程都关闭
  (8)swap
      fdisk分区时调整类型为82
      mkswap 设备分区
      swapon 设备分区:启用交换分区
      swapoff 设备分区:关闭分区
      swapon -a:启用所有定义在/etc/fstab文件中的交换分区
      注:从内存上看
        page out:内存放在磁盘中
        page in:从磁盘取到内存
      从磁盘上看
        swap in:取回来
        swap out:放出去
  free :查看以字节为单位的物理内存与交换分区使用情况
      -m:以m为单位
    注2:创建交换分区的文件系统有特殊的命令
      mkswap /dev/sdb5
        -L LABEL:可指定卷标
      挂载交换分区,挂载方式也特殊
        swapon /dev/sdb5 :启动交换分区
        swapoff /dev/sda8:关闭分区
      例:dd if=/etc/inittab of=/root/
        dd if=/dev/zero of=/var/swapfile bs=1M count=256
        mkswap /var/swapfile
        swapon /var/swapfile

  (9)dd命令
    dd可用做本地回环设备的创建(不是用dd做成的文件有固定格式,而是dd可复制任何格式的文件生成对应格式的文件,后可加对应扩展名)
    dd if=数据来源 of=数据存储目标 bs=字节 count=以字节为单位复制几个(其中数据存储目标可当硬件使用,光盘内容可直接挂载使用,吐零要格式化挂载)
    eg1:备份MBR
      dd if=/dev/sda of=/mnt/usb/mbr.backup bs=512 count=1 --把sda上的MBR复制下来
      还原:dd if=/mnt/usb/mbr.backup of=/dev/sda bs=512 count=1
    eg2:做磁盘镜像
      dd if=/mnt/cdrom of=/root/rhel5.iso bs=512 count=1(这个复制的是镜像文件可当镜像使用加了.iso的扩展名,可挂载)
      mount -o loop /root/rhel5.iso /media/cdrom
    eg3:做swap分区
      dd if=/dev/zero of=/var/swapfile bs=1M count=256
      mkswap /var/swapfile
      swapon /var/swapfile
  (10)GPT分区的命令
      GPT没有分区限制最多可分128个主分区
      命令如下:
        parted---进入交互式30
        (parted)select /dev/sdb-----找到对应的磁盘
        (parted)mklabel gpt----先为gpt分区
        (parted)mkpart---分区
          分区名称?[]?/dev/sdb1
          文件系统类型?[ext2]?------默认类型,后面格式化时要格式化成ext4
          起始点?1-----要写实际大小的如为2000M,从0开始会有问题
          结果点?2000
        (parted)print---查看做的分区,前提要用select /dev/sdb进对应的盘才能看到对应分区
        (parted)rm 1--删除哪号磁盘
        以上是一步步分区
        如下一步到位(parted)mkpart /dev/sdb2 2000 3000----创建大小为1000M的分区
        (parted)quit---保存退出
        从命令行查看时不能用fdisk 这个命令看不到要用parted来查看,这时再把这个分区格式化
  (11)raid的命令做法:
    raid原理:
    0:条带,性能好无冗余能力空间利用100%,二块盘分大块来存不再是以前的小块,所以速度快
    1:镜像,空间利用率为50%,至少二块盘
    5:空间利用率(n-1)/n 至少三块盘,存二个其中一个为校验
    10:先镜像后条带,空间率用为50% 至少四块盘
    01:先条带后镜像
  jbod技术目的实现将多个小盘组合成大盘来用,在hadoop中建设使用jbod,因hadoop自身有HDFS在文件系统级别任何一个盘坏了数据不丢失,因HDFS是分布式文件系统自身会保存数据副本
    mdadm
    1.创建模式
      -C
        -l:级别
        -n:设备个数
        -a {yes|no} :自动为其创建设备文件
        -c:指定chunk大小,默认为64K(大小为2^n倍)
        -x:指定空闲盘个数
        eg:创建2G的RAID0
      mdadm -C /dev/md0 -a yes -l 0 -n 2 /dev/sda /dev/sdb
      cat /proc/mdstat--当前系统所有启用的raid设备
      mksf -t ext4 /dev/md0
      mount /dev/md0 /mnt
      eg:创建raid1
        mdadm -C /dev/md1 -a yes -l 1 -n 2 /dev/sda /dev/sdb
    2.管理模式可模拟一个磁盘损坏
      -f --fail --set-faulty
      查看raid使用状态:mdadm -D/--detail /dev/md1
      现把sdb模拟环了
        mdadm -f /dev/sdb
        mdadm --detail /dev/sdb
        mdadm /dev/md1 -r/--remove /dev/sdb---把坏盘移走现加块盘
        mdadm /dev/md1 -a /dev/sdc,此盘大小与原来的盘一样大小
    3.停止阵列
        mdadm -s/--stop /dev/md1
        cat /proc/mdstat
        rm /dev/md1
        要重新装载盘 mdadm -A /dev/md1 /dev/sda /dev/sdb
        要重新装载盘不想指出盘: mdadm -D -scan 扫描一个所有阵列的情况
            mdadm -D -scan > /etc/mdadm.conf

    4.由于md1中的盘坏一个文件能正常访问所以发现一个哪个盘坏了要监控
      watch -n # ‘COMMON'
      eg:watch -n 2 'cat /proc/mdstat'
  (12)lvm的命令做法
    PV的做法
      1.创建PVS
        pvcreate /dev/sda /dev/sdb--创建一个PV
      2.查看pv
        pvs
        pvdisplay:查看详细信息,也可显示一个pv的信息 pvdisplay /dev/sdb
      3.pvscan:扫描当前系统一共有多少个pv
    VG的做法
      1.创建VG
        vgcreate 卷组名 物理卷
          -s :指定PE大小,默认4M
        vgcreate myvg /dev/sda /dev/sdb
      2.查看vg
        vgs:查看当前系统的VG
        vgdisplay myvg:查看
        注:当VG上已创建LV而且存在数据了不能随便删除没他LV可以删除VG
        vgremove myvg---删除卷组
        pvmore /dev/sdb--直接跟要移走的设备数据会移到其它盘
        vgreduce myvg /dev/sdb---从哪个vg里移走哪个盘
        pvremove /dev/sda ----把sda删除
        pvcreate /dev/sdc--再加一个盘
        vgextend myvg /dev/sdc
    LV的做法
      -L:指定大小
      -n:指定卷组名字
      lvcreate -L 50M -n testlv myvg(50不能整除8M会向外扩展一些,结果为56M)
      lvdisplay /dev/myvg/testly 查看某个lv信息(/dev/卷组/逻辑卷)
      查看fstab里的路径/dev/mapper/myvg_testlv ---路径跟/dev/myvg/testlv不完全一致,实际/dev/myvg指向/dev/mapper/myvg_testlv
      再未挂载的情况下移除LV
        lnremove /dev/mapper/myvg-testlv


  6、与用户登录相关命令
    who:看登录用户有哪些
    w:登录用户干什么事
    whoami:显示当前登录的用户是谁
    last:显示/var/log/wtmp文件,显示用户登录历史
    lastb:显示/var/log/btmp文件,用户错误尝试登录
    lastlog:显示每个用户最近一次登录信息
    basename:取路径基名,不能取目录
  7、与用户添加删除相关命令
    useradd:添加用户
         -r:添加系统用户
         -m -k:创建家目录(把/etc/skel/*:shell的环境配置文件复制到家目录中去)
    userdel:删除用户
    usermod:修改用户帐号属性
    id 用户:查看其它用户的帐号属性,后不加用户查

  8、时间相关
    GMT是美国时间CST是北京时间,如何把GMT改为CST
    mv /etc/localtime /etc/localtime.bak
    cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
    data -s '2019-12-05 19:36:05'
    hwclock -s :改为硬时钟
    hwclock -w:改为系统时钟
  9、网络相关命令

                安装网络相关命令:yum -y install net-tools
    (1)ifconfig:显示当前主机处于活动状态网络信息
        -a:显示所有连接及非活动连接
          用别名配置:
            命令:ifconfig eth0:0 IP netmask 掩码
            配置文件:/etc/sysconfig/..../eth0:0
                  DEVICE=etho0:0
      红帽5的网络服务:/etc/init.d/network
      红帽6的网络服务:/etc/init.d/NetwordManager(不支持桥接虚拟化等,克隆的虚拟主机一般eth0不启动,一般启用的是eth1网卡,
       想让它变为0改/etc/udev/rules.d/70-persistent-net.rule,禁用NetwordManager)

                 加虚拟网关:ifconfig eth0:0 192.168.1.1 up

                                      ifconfig eth0:0 down---双网卡通不了,可以在一个网卡上配二个IP

                 立即生效:

            [root@server ~]$ ifconfig eth0:0 192.168.1.101 broadcast 192.168.1.255 netmask 255.255.255.0 up
            [root@server ~]$ route add -host 192.168.1.101 dev eth0:0

                配置:vi /etc/network/interfaces

                           auto eth0:0

       iface eth0:0 inet static

                         address 192.168.10.10

                         netmask 255.255.255.0


配置2(主用):
         [root@server ~]$ cd /etc/sysconfig/network-scripts
         [root@server network-scripts]$ vi ifcfg-eth0:0
           DEVICE=eth0:0
           ONBOOT=yes
           BOOTPROTO=static
           IPADDR=192.168.1.101
           NETMASK=255.255.255.0                  

    (2)添加网关
      route:查本地路由表
        add
          -host:添加主机路由
          -net:添加网络路由
          -net 0.0.0.0:添加默认路由
        del:删除路由条目
          -host:删除主机路由
          -net:删除网络路由
          -n:以数字显式本地路由
      eg:route add -net|-host IP/掩码 gw 网关
        route del -net IP/掩码 [gw 网关]

                           添加普通路由:

                                route add -net 192.168.71.0/24 gw 192.168.71.1(必须加掩码)

                                ip route add 192.168.30.0/24 via 192.168.30.254 dev enp1s0

                          添加默认路由:

                                     route add default gw 192.168.0.1(通过这个网关到任何未知网段)

                                     route add default gw 192.168.0.1 dev enp4s0(指定给哪个网卡加默认路由)

                           删除默认路由:

                                  route del default(不指定网卡)

                       route del default dev enp4s0(指定网卡)

                           网关的内外网配置:

          外网:配置加ip  子网掩码  网关   默认路由

                                    内网:配置加ip  子网掩码  网关(当ping不通内网时,可把子网掩码与网关去掉即可)

                           指定网卡Ping操作:          

                   网卡1: ping -I 192.168.12.83 www.baidu.com(-I指定网卡IP)
网卡2:ping -I 192.168.1.126 www.baidu.com

                           traceroute 用来检测发出数据包的主机到目标主机之间所经过的网关数量的工具(https://www.cnblogs.com/peida/archive/2013/03/07/2947326.html)

                                   traceroute IP/域名 ----linux系统

                                   tracert   IP/域名 -----windows系统 

                         ethtool 网口名eth1:查看当前网络接口的连接状态             

 

                          arp -a :查本地设备存的IP与MAC的对接关系,路由表

          
      路由表字段说明
       Destination(目标地址) Gateway(网关) Germask(状态) Flags
       192.168.10.0 * U(处于启动状态,没有G(表网关)只能本地通信不能外网通信)
        10.0.0.0 192.168.0.10 UG(有网关能与外网通信)
      配置永久的路由信息
      /etc/sysconfig/network-scripts/route-ethX--通过哪个网卡来配路由,只要不是本地主机的报文一般都会通过本地网卡出去与其它主机通信

                           一个网卡一个配置

      法1 :目标(主机 网络/掩码-10.0.0.0/8) via 网关
          192.168.10.0/24 via 10.10.10.254
          目的网络 自己默认网关
      法2:可以添加多条
          ADDRESS0=目标地址
          NETMASK0=掩码
          GATEWAY0=下一跳
          ADDRESS1=目标地址
          NETMASK1=掩码
          GATEWAY1=下一跳

             (3)ip用法:https://www.cnblogs.com/ginvip/p/6367803.html

                 设置Ip地址:ip addr add 192.168.1.125/24 dev enp2s0

                 查看Ip地址:ip addr show enp2s0

                 删除Ip地址:ip addr del 192.168.0.193/24 dev enp2s0

                 列出路由表:ip route show

                 查Ip上的包从哪个路由来的:ip route get 10.42.0.47

                 修改默认路由:ip route add default via 192.168.0.196

                 添加路由:ip route add 172.16.1.0/24 via 172.16.10.2 dev eth0

                 统计路由数据:ip -s link

                 查看ARP条目:ip neighbour

                 激活与停止网络接口:ip link set ppp0 down   ip link set ppp0 up

                 centos7路由配置文件:vi /etc/sysconfig/network-scripts/route-enp0s3

                 查看ip:  ip  addr

                注:IP、子网掩码及网段换算

       192.168.2.1(十进制)---11000000,10101000.00000010.00000000

                       255.255.255.0(十进制)---11111111.11111111.11111111.00000000

                                  每位二进制相乘---11000000.10101000.000000010.00000000----192.168.2.0

                        255=11111111

         254=11111110

                        253=11111101

                        252=11111100

                        251=11111011

                        250=11111010(向后退1)

                         十六进制:0       1       2       3       4         5        6       7       8       9           a         b           c          d           e           f (1放十位个位全写一边,

                                                                                                                                                                                                                    2放十位个位全写一边)

                          十进制:   0       1       2       3       4         5        6       7          8        9      10      11          12        13         14         15

                          二进制:   0        1    10      11     100    101     110    111   1000  1001  1010   1011      1100    1101     1110      1111       

                                            二进制的0  1到头再向前1放十位制上,十位完后,1放百位


    (4)网络配置文件了解
        1.网络总配置文件
          /etc/sysconfig/network
        2.网络各网卡的分配置
          /etc/sysconfig/network-script/ifcfg-eth0
          DEVICE=eth0----关联设备
          BOOTPROTO=static(静态地址)|none(静态地址)|dhcp(动态)|bootp(动态)
          IPADDP=ip
          NETMASK=掩码
          GATEWAY=默认网关(不能设备路由条目,有专门的配置文      件/etc/sysconfig/network-script/route-eth0)
          ONBOOT=yes(是否自动激活接口)
          HWADDR=MAC地址可略-----红6里可在/etc/udev/rule.d/70-persistent-      net.rules里可以看到网卡与mac地址的绑定关系
          USERCTL={yes|no}:是否允许普通用户控制此接口
          PEERDN={yes|no}:是否接受DHCP服务器指定的DNS地址

                           3.centos7的静态地址                      

          TYPE="Ethernet"
          PROXY_METHOD="none"
          BROWSER_ONLY="no"
          BOOTPROTO="static" # 使用静态IP地址,默认为dhcp
          IPADDR="192.168.241.100" # 设置的静态IP地址
          NETMASK="255.255.255.0" # 子网掩码
          GATEWAY="192.168.241.2" # 网关地址
          DNS1="192.168.241.2" # DNS服务器
          DEFROUTE="yes"#默认路由,改为no这个网卡就不会生成默认路由
          IPV4_FAILURE_FATAL="no"
          IPV6INIT="yes"
          IPV6_AUTOCONF="yes"
          IPV6_DEFROUTE="yes"
          IPV6_FAILURE_FATAL="no"
          IPV6_ADDR_GEN_MODE="stable-privacy"
          NAME="ens33"
          UUID="95b614cd-79b0-4755-b08d-99f1cca7271b"
          DEVICE="ens33"
          ONBOOT="yes"

                         (4)抓包命令

                                  1. command & : 后台运行,你关掉终端会停止运行    

                                  2. nohup command & : 后台运行,你关掉终端也会继续运)

                                  抓全包:tcpdump -i any -s 0 -w test.pcap(-s:包大小,-i 哪个网卡)  port端口  host(IP)

                                                 tcpdump -i any -s 0 host 192.168.0.1 -w test.pcap

                                  抓取报文后隔指定时间保存一次:

                                         tcpdump -i eth3 -s0 -G 60 -Z root -w %Y_%m%d_%H%M_%S.pcap         

                                               -G选项 后面接时间 单位为秒 本例中的时间为60秒

                                 抓取报文后达到指定的在小保存一次

                                        tcpdump -i eth3 -s0 -C 1 -Z root -w jiangsuyinhang.pcap

                                        -i 指定网卡名称

                                       这里的-s0 表示每个报文的大小是接收到的指定大小,如果没有这个选项,

                                                   则超过比如1500字节的报文,就会被切除1500字节以外的部分

                                       -C(大写) 表示每当文件达到指定大小时进行重新保存一个新文件,单位是MB

                                       -Z(大写) 表示下面的新文件也是用root权限来执行的,如果用-c时必须配合-Z(大写z).

                                       -w(小写) 后面跟具体的文件名称

                                   注:每一帧里都包含了帧头、TCP包头、http包头、data(都是字节)


    3.DNS配置只有一种
      (1)/etc/resolv.conf(远程配置)---注:如果网络配置PEERDN是启用的,那DHCP能修改这个文件的内容
        namesever IP----指定DNS的地址,可以通过它向DNS服务去找域名对应的IP
      (2)本地DNS
        /etc/hosts
        目标主机IP 主机域名 别名
        10.35.122.2 dahuatech
    总结:主机名---先到/etc/hosts找----DNS缓存----到/etc/resolv.conf里找DNS服务器找对应的IP

             4.双网卡转发问题与路由问题

      (1)双网卡转化

                                a.在Centos6上允许ip转发只需要在 /etc/sysctl.conf里加入

                                         net.ipv4.ip_forward = 1 

                                          即可(reboot或用sysctl -p立即生效)

                               b. 可在Centos7里这样是远远不够的

                                        cat /etc/sysctl.conf

                                     System default settings live in /usr/lib/sysctl.d/00-system.conf. To override those settings, enter new settings here, or in an /etc/sysctl.d/.conf file For more                                                            information, see sysctl.conf(5) and sysctl.d(5).so, you should add into the file

                                       /usr/lib/sysctl.d/50-default.conf

                                      也就是说,只需要再在 /usr/lib/sysctl.d/50-default.conf 文件里加入

                                       net.ipv4.ip_forward = 1就可以了

                              c.双网卡地址转发

             iptables -t nat -I PREROUTING -i eth1 -d 172.16.5.100 -p   tcp --dport 9527 -j  DNAT --to-destination  10.1.1.173:9527
从eth1去向172.16.5.100:9527的流都通过10.0.0.173:9527转发出去,目标转发(在prerouting链上)
iptables -t nat -I POSTROUTING   -d  10.1.1.173 -p  tcp  --dport   9527  -j SNAT   --to   10.1.1.207
从10.1.1.173:9527来的流都能通过10.1.1.207发进来,(在postrouting链上)---eth1是192的地址,
这里要开启ip_forward网关转发功能,才能把eth1的
流给到另一个网卡进行分配
(2)路由
a.centos6:
1.临时生效
2.永久生效
b.centos7:
1.临时生效
                   网卡配置里的默认路由一个开启一个关闭,通外网的开启,另一个关闭可手动加上路由
查看默认路由个数:ip route show
               default via 192.168.2.1 dev enp3s0 proto static metric 100
default via 192.168.71.1 dev enp4s0 proto static metric 101(二个默认的一般是网卡启动时都开了,要手动删一个)
  172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1
192.168.2.0/24 dev enp3s0 proto kernel scope link src 192.168.2.179 metric 100
另一个手动加静态路由会手动加
route add -net 192.168.71.0/24 gw 192.168.71.1
或: ip route add 192.168.30.0/24 via 192.168.30.254 dev enp1s0
              2.永久生效
                    vi /etc/sysconfig/network-scripts/route-enp0s3//若没有手动加
                       10.15.150.0/24 via 192.168.150.253 dev enp0s3
10.25.250.0/24 via 192.168.150.253 dev enp0s3

 

  10、程序安装相关的命名
      (1)rpm:管理软件包,卸载、查询等
        1.安装
          rpm -i /path/to/rpm:安装时指定包名
            -h:以#显示安装进度
            -v:详细信息
          rpm -ivh /path/to/rpm包:是安装下载在本地的rpm包
            --nodeps:忽略依赖关系
            --force:强行安装
            --replacepkgs:重装替换原有安装
            --oldpackage:降级安装
            --test:不装只测试能不能装上
        2.查询
            -q 包名:不指路径,查看包是否安装
            -qa:查所有安装的包
            -qi:指定是说明信息
            -ql:指定包生成的文件列表
            -qf:指定文件是哪个rpm包生成的
            -qc:包的配置文件
            -qd:包的帮助文件
            -q --scripts:包包含的脚本(装前 装后 卸载前 卸载后)
          -qpi:查看未安装包的信息
        3.升级
          -Uvh 路径:升级
          -Fvh 路径:有就升级没有就退出
        4.卸载
          -e rpm包:卸载(不能被别的包依赖)
          --nodeps:强制卸载
        5.检验来源合法性及软件完整性
          -K
        6.检验
          -v
    (2)createrepo:创建repodata(yum元)
    (3)yum [选项] 子命令 软件名
      子命令:
        install:安装
          -y:自动安装yes
          --nogpgcheck:检查本地rpm包的合法性
        list:支持glob--通配
          参数 all:所有的包
          available:所有可用的
          installed:显示已安装的
          updata:可用升级的
          clean:清缓存
          packages:清rpm包
          headers:查询信息
          metadata:元数据安装
          dbcache:rpm包安装
          all:所有
          repolist:列出所有仓库(仓库id)
          all:全部rope
          enabled:显示使用仓库(默认)
          disabled:显示没有使用的仓库
          updata:升级(仓库里的新版本)
          updata-to:升级指定版本
          remove/erase:卸载
          info=rpm -qi详细信息
          provides/whatprovides:指定文件是由哪个rpm生成的
          grouplist:所有组列表
          groupinfo:组信息
          groupinstall:组安装后的信息
          search:查找
          localinstall:本地rpm安装
          --nogpgcheck:不用查安全性
    (4)rpm与yum的关系
      rpm是把配置文件、库文件、二进制文件与其它文件打包再安装对应指定目录下生成数据库/var/lib/rpm记录这些信息可用于卸载
      yum的工作原理
      4.1yum客户端+/etc/yum.conf与配置文件/etc/yum.repos.d/x.repo(指定yum源地址包含ftp上、http上、本地的rpm包等在.repo里看)
      4.2:yum安装软件包时在yum仓库下载到本地再调用rpm来安装,安装前yum会根据rpm包属性解决依赖关系,再把这些包下下来安装
      4.3:yum仓库=yum元(包括依赖关系等)+rpm包
      yum元数据文件手动创建用createrepo(为某仓库目录创建createrepo /mnt/cdrom/server)----每个yum仓库都有repodata目录,里面放的文件有,primary.xml.gz filelists.xml.gz other.xml.gz repomd.xml comps_rhel5_server_core.xml
      4.4:yum仓库与yum客户端的连接
      直接用安装光盘/dev/cdrom,可直接挂载---配置成yum仓库就是本地yum仓库(进cdrom后内有SERVER VT Cluster等目录内都会有个repodate的目录),客户端安装时看用            repodata文件再下载rpm包
      注:红5的yum仓库的rpm包与repodata目录在一个仓库里,可直接使用,把SERVER直接当成仓库路径
        红6 rpm包都放在cdrom/Packages目录里,repodata是单放的,要配置仓库里可以把它们链接到一起去或把它们父目录当做仓库路径
        eg:红5直接用server当做仓库(/mnt/cdrom/server/{repodata与rpm包})
          红6可直接用/mnt/cdrom做为仓库
      4.5:yum仓库的配置文件--互联网上的可以直接在网上下
          eg:红6:http://mirrors.aliyun.com/repo/Centos-6.repo---里面配好了仓库
            红7: http://mirrors.aliyun.com/repo/Centos-7.repo
            红5:http://mirrors.aliyun.com/repo/Centos-5.repo
        /etc/yum.repos.d/*.repo
          []---ID自己起名
          name---描述信息
          baseusl=file:///mnt/cdrom/server (ftp:// http://)
          enabled=1|0 启用或禁用
          gpgcheck=0|1:是否使用gpg来验证合法
          gpgkey=公钥位置

                   4.6 安装相关命令

                         安装netstat:yum -y install net-tools

                         安装sz  rz :   yum -y install lrzsz

                         安装lsb_release:yum install lsb//查看系统版本

                                                      lsb_release  -a

                  4.7 如何查命令依赖哪个工具包

       yum search ifconfig

                 

           4.8 安装gcc编译器

                       yum -y install gcc gcc-c++ kernel-devel

 


  11、手动调整优先级
    (1)实时优先级(1-99)
        chrt
          -p:指定优先级
          -f:调FIFO类别
          -r:调RR类别
          chrt -p # [-f -r] pid
          chrt -p # command
    (2)静态(100-139)(用户能调大自己的nice值)
        nice(-20-19)
        nice -n NI commnd
        nice -p # pid
  12、进程相关命令
    pstree:显示当前系统的所有进程
    pgrep 进程名:显示进程的进程号
      -u 属主 进程名:以用户为属主的进程
    pidof:根据程序名称,查找相关进程PID
    kill
      -l:显示所有信号
        1:让进程不用重启就可读配置文件
        2:中断一个进程
        9:杀死进程
  15:终止一个进程:默认
      eg:kill -9 PID
        killall -9 进程名:杀死所有这个进程名的进程
        bg:让后台作业继续在后台进行
        jobs:查看后台所有作业及作业号
        fg:把后台作业调到前台来
        vmstat:系统状态查看命令
        proc memory(内存) swap io system cpu
        r b swpd free buff cache si so bi bo in cs us
        运行信息 阻塞长度 swpd 空闲 进来 出去 中断数 进程切换次数
          vmstat #:每隔多长时间显示一次
          vmstat # #:每隔多长时间显示一次,显示几次
        uptime:跟top的第一行显示一样
  13、访问权限控制
      visudo:打开的是/etc/sudoers文件同vi
      sudo:
        -k:不管有未超出5分钟都回车输入密码
        -l:列出当前用户以哪个身份执行哪些文件
  14、系统相关
      chroot:根切换---exit退出
      ldd 进程:显示共享库依赖
      shutdown -r now:系统重启
      grub-md5-crypt:生成系统密钥
      runlevel:显示当前级别
      who -r :显示当前级别
  15.压缩,解压命令
  (1)gzip /path/to/somefile--压缩完成后会删原文件
      gunzip /path/to/somefile.gz--解压完成会删除压缩文件
      gzip -# /path/to/somefile---指定压缩比默认为6
      zcat /path/to/somefile.gz 不解压情况查看文件内容
  (2)bzip2 /path/to/somefile,比gzip更大压缩比的压缩工具
     bunzip2 /path/to/somefile.bz2
     bzcat:不解压查看文件
  (3)xz /path/to/somefile
    unxz :解压
    xzcat:不解压查看文件
    xzdec:解压当前屏幕上来
  (4)zip:可压缩目录
    zip test.zip test/*
    zip test.zip file1 file2..
    unzip FILE.zip
   (5)tar 归档工具不压缩也不删除原数据
    -c 创建归档文件
    -f:扣件的归档文件后必跟参数 FILE.tar
    -x:展开归档
    tar -zcvf :即归档又压缩调用gzip
      -zxvf:先解压再展开调用gzip
      -jcvf:归档并压缩--bzip2
      -jxvf
      -Jcvf:调用xz
      -Jxvf:调用xz
   (6)cpio:归档
  16.文件与目录root都无权限删除
    chattr -R +a /opt/activeMQ
    chattr [-RV][-v<版本编号>][+/-/=<属性>][文件或目录...]
        -R 递归处理,将指定目录下的所有文件及子目录一并处理。

        -v<版本编号> 设置文件或目录版本。

        -V 显示指令执行过程。

        +<属性> 开启文件或目录的该项属性。

        -<属性> 关闭文件或目录的该项属性。

        =<属性> 指定文件或目录的该项属性。
          a:让文件或目录仅供附加用途。
          b:不更新文件或目录的最后存取时间。
          c:将文件或目录压缩后存放。
          d:将文件或目录排除在倾倒操作之外。
          i:不得任意更动文件或目录。
          s:保密性删除文件或目录。
          S:即时更新文件或目录。
          u:预防意外删除。
        例:chattr +i /etc/resolv.conf lsattr /etc/resolv.conf

  17.linux关机

            shutdown

            init 0

       18.系统日志

    dmesg命令-->用来显示开机信息, kernel会将开机信息存储在ring buffer中。开机时来不及查看信息,可利用dmesg来查看。开机信息亦保存在/var/log/dmesg

                

     19.定时任务

  linux里定时任务的配置文件在:/var/spool/cron里

       写定时任务:

            每1分钟执行一次myCommand:* * * * * myCommand

    每小时的第3和第15分钟执行:3,15 * * * * myCommand

  20.查看硬件CPU内核 内存大小 磁盘大小

    cpu核数:cat /proc/cpuinfo | grep 'process' | sort | uniq | wc -l

    内存总容量: cat /proc/meminfo

    硬盘容量:df -hl       

    

 

 

 

 

 

                

posted @ 2021-03-25 17:42  xiong_Dana  阅读(136)  评论(0编辑  收藏  举报