linux

Linux

1. 计算机硬件软件体系

1.1. 冯诺依曼体系结构

  • 计算机处理的数据和指令一律用二进制数表示

  • 顺序执行程序

  • 计算机硬件由运算器、控制器、存储器、输入设备和输出设备五大部分组成

  • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传linux_第1张图片

1.2.计算机硬件组成

  • 输入设备
    • 输入设备用来将人们熟悉的信息形式转换为机器能够识别的信息形式
    • 常见的有键盘,鼠标等
  • 输出设备
    • 输出设备可以将机器运算结果转换为人们熟悉的信息形式
    • 打印机输出,显示器输出等
  • 存储器
    • 存储器用来存放数据和程序
    • RAM(random access memory)即随机存储 内存:
    • 速度快,容量小
    • 掉电易失
    • 逻辑IO
    • ROM(Read-Onboy Memory)即只读内存 硬盘:
      • 容量大,速度相对较慢
      • 长久保存
      • 物理IO
  • CPU(中央处理器)
    • 控制器
      • 控制器主要用来控制和指挥程序和数据的输入运行,以及处理运算结果
    • 运算器
      • 运算器主要运行算数运算和逻辑运算,并将中间结果暂存到运算器中
      • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传linux_第2张图片

1.3. 硬盘的分类

  • 硬盘按照存储介质的不同可以分为如下两种

    • 机械硬盘(Hard Disk Driver, HDD)

      • 机械硬盘采用磁性碟片来存储数据
      • 用显微镜把盘片放大,会看见盘片表面凹凸不平,凸起的地方被磁化,凹的地方是没有 被磁化
      • 凸起的地方代表数字1(磁化为1),凹的地方代表数字0。
      • 硬盘可以以二进制来存储表示文字、图片等信息。
      • 硬盘可以根据转速来判断硬盘的好坏 7200转/分 100-200M/s
      • linux_第3张图片
    • 固态硬盘(Solid State Disk, SSD)

      • 固态硬盘通过闪存颗粒(固态电子存储芯片阵列)来存储数据
      • linux_第4张图片
  • 读写速度的区别

    • 固态硬盘的读取速度普遍可以达到400M/s,写入速度也可以达到130M/s以上
    • 其读写速度是普通机械硬盘的3-5倍。
  • 机械硬盘的数据读写

    • 主流的硬盘半机械半电子硬盘(机械硬盘)
      • 硬盘的转速(转速越快读取越快)
      • 寻道时间
      • 数据传输时间
      • linux_第5张图片

1.4. 顺序读写与随机读写

linux_第6张图片

1.5. 网络连接概念

  • IP地址IPADDR
    • IP地址是一种逻辑地址,用来标识网络中一个个主机
      • IP地址=网络地址+主机地址
      • IP地址是一个 4 * 8bit(1字节)由 0/1 组成的数字串(IP4协议)
  • 子网掩码NETMASK
    • 子网掩码只有一个功能,就是将IP地址划分为网络地址和主机地址两部分。
    • 子网掩码用来判断任意两台计算机的IP地址是否在同一个子网中的根据
      • A 192.168.7.111 B 192.168.8.222
      • 255.255.0.0
  • 默认网关GATEWAY
    • 连接两个不同的网络的设备都可以叫网关设备;网关的作用就是实现两个网络之间进行通讯与控制。
    • 网关地址就是网关设备的IP地址
  • 域名服务器DNS
    • DNS是域名服务器,用来解析域名的(域名和IP之间的解析)。
    • 如果没有这东西,登陆某个网站时就必须输入该网站的IP地址,有了DNS就可以直接输入网址。
    • C:\Windows\System32\drivers\etc\hosts
  • linux_第7张图片

1.6. 网络连接模式

  • host-onboy(主机模式)
    • 在某些特殊的网络调试环境中,要求将真实环境和虚拟环境隔离开,这时你就可采用host-onboy模式。
    • 在host-onboy模式中,所有的虚拟系统是可以相互通信的,但虚拟系统和真实的网络是被隔离开的。
    • 在host-onboy模式下,虚拟系统的TCP/IP配置信息都是由VMnet1(host-onboy)虚拟网络的 DHCP服务器来动态分配的
  • bridged(桥接模式)
    • VMWare虚拟出来的操作系统就像是局域网中的一台独立的主机,它可以访问网内任何一台机 器。
    • 使用桥接模式的虚拟系统和宿主机器的关系,就像连接在同一个Hub上的两台电脑。
    • 当前主机IP 为 192.168.8.100 虚拟机 192.168.8.xxx
      • 学习期间为了防止IP冲突,所以不选择这种模式
  • NAT(网络地址转换模式)
    • 使用NAT模式,就是让虚拟系统借助NAT(网络地址转换)功能,通过宿主机器所在的网络来访问公网。
    • NAT模式下的虚拟系统的TCP/IP配置信息是由VMnet8(NAT)虚拟网络的DHCP服务器提供的
    • 虚拟系统也就无法和本局域网中的其他真实主机进行通讯

linux_第8张图片

1.7. 软件分类

  • 应用软件
    • 就是为了实现某些业务功能
    • 应用软件要基于对应的系统软件
      • 不同的操作系统要安装不同的软件
  • 系统软件
    • 就是为了和硬件打交道
    • 屏蔽应用软件与硬件的差异
  • 系统软件的分类
    • Window
      • 用户量全球最大
      • 收费,不开源,民用较多
      • 各种软件比较齐全
    • Mac
      • 只限定于某些苹果的品牌机
      • ios–自成一家
    • GNU/Linux
    • GNU是一个开源软件组织,世界上所有的软件都应该开源免费
      • GNU Is Not Unix
      • GCC++
      • 托瓦兹 林纳斯 Linus – Linux(Linux is not unix)
      • Logo是企鹅

1.8. Linux分支

  • RedHat(收费)

    • CentOS
      • 完全开源免费
      • 不要使用最新版的CentOS
    • 主要用于服务器版本
  • linux_第9张图片

  • Debain(免费)

    • Ubuntu
      • 视窗界面良好的Linux系统
      • 一些主流的软件都支持Ubuntu系统
      • linux_第10张图片

linux_第11张图片

1.9. Linux下载

linux_第12张图片

  • 官网
    • https://linux.org
  • 下载页面
    • https://linux.org/pages/download/
  • CentOS7.6下载地址
    • http://vault.centos.org/7.6.1810/
  • 镜像的分类
    • everything
      • This image contains the complete set of packages for CentOS Linux 7. It can be used for installing or populating a local mirror.
    • minimal
      • The aim of this image is to install a very basic CentOS 6.5 system with the minimum of packages needed to have a functional system.
    • netinstall
      • This is the network install and rescue image.
  • 操作系统的位数
    • 优先选择64位,将来安装软件有更好兼容性

2. 虚拟机安装与配置

2.1. 虚拟化技术

  • 可以更好的利用计算机闲置的资源
  • 我们可以在计算机中虚拟出多台虚拟机帮助我们执行程序或者业务
  • 虚拟机的各种组成理论上和真实主机是一样的
  • 如果要使用这种技术只需要安装对应的软件即可
    • Virtualbox
    • VirtualMachine
  • 安装软件

2.2. 创建虚拟主机

2.3. 安装操作系统

VMware 安装 Centos7 超详细过程:https://www.runoob.com/w3cnote/vmware-install-centos7.html

2.4. 配置常见参数

2.4.1. 网络
  • 查看自己虚拟网卡地址

    • 编辑–>虚拟机网络编辑器–>vmnet8
    • linux_第13张图片
  • 修改网络配置信息

    • vi编辑器简单使用

      • 操作文档
      • 光标位置
      • dd 删除一行
      • i 将文档变成可修改模式
      • esc 退出编辑
      • :wq 保存并退出
    • 修改网络信息

      • vi /etc/sysconfig/network-scripts/ifcfg-ens33

      • --修改
        ONBOOT=yes
        BOOTPROTO=static //静态网络IP dhcp 动态获取网络IP
        --添加
        IPADDR=192.168.164.100
        NETMASK=255.255.255.0
        GATEWAY=192.168.58.2
        DNS1=114.114.114.114
        删除------
        UUID
        
      • linux_第14张图片

  • 重启网卡重新加载配置文件

  • ip addr

  • systemctl restart network.service

  • ping www.baidu.com

  • ctrl+c 终止命令的执行

2.4.2. 防火墙
  • 保护本机的端口不被别人访问
  • 如果端口需要被别人访问到,需要添加端口的防火墙例外
  • 关闭防火墙
    • 本次开机状态下防火墙关闭
      • systemctl stop firewalld (本次服务内关闭防火墙)
    • 服务器重启后防火墙禁用
      • systemctl disable firewalld(禁用防火墙服务)
    • 在这里插入图片描述

2.4.3. 软件安装限制

  • 操作系统对未知软件的安装有可能拒绝或者警告,我们需要禁用这个功能
  • vi /etc/selinux/config
    • SELINUX=disabled
    • linux_第15张图片

2.4.4. 关机

  • 关机
    • halt
      • 直接拔掉电源
    • poweroff
      • 直接关闭机器,但是有可能当前虚拟机其他人在使用
    • shutdown -h now
      • 马上关闭计算机 ,但是可以给其他用户发送消息
    • reboot
      • 重启虚拟机

2.5. 快照与克隆

  • 拍摄快照---->相当于存档

    • 记录当前虚拟机的状态
    • 拍摄快照的时候一定要关机
    • 点击当前虚拟机---->快照---->快照管理器
    • linux_第16张图片
  • 转到

    • 回到某一个历史快照的节点
    • linux_第17张图片
  • 克隆

    • 复制某一个历史快照节点

    • 克隆的方式

      • 链接克隆
        • 当前节点文件夹只存储差异性数据
        • 相同数据存放在原始节点上
        • 优点:节省硬盘空间 缺点:耦合性大
      • 完整克隆
        • 就是基于原始节点完全拷贝到新节点的文件夹中
        • 优点:耦合性抵
        • 缺点:硬盘空间使用大---->推荐使用完整克隆
      • linux_第18张图片

2.6. 修改克隆机配置

2.6.1. 网络信息
  • 修改网络信息

    • vi /etc/sysconfig/network-scripts/ifcfg-ens33

    • 修改ip
      IPADDR=192.168.164.101
      
    • systemctl restart network.service

参考2.4.1的修改网络信息

2.6.2. 主机名
  • vi /etc/hostname

    • 修改完成后需要重启生效
  • hostname bd16

    • 本次启动中有效,重启虚拟机还是使用原来的名字

2.7. 连接Linux服务器

  • Xshell
    • 负责向虚拟机输入命令
  • XFtp
    • 如则向虚拟机传输文件

3. Linux的命令

3.1. 命令学习法

  • Linux命令与参数之间必须用空格隔开
  • Linux命令是区分大小写的
  • 如果输入了错误的命令
    • -bash: abcd: command not found
    • 命令敲错了
    • 命令未安装
  • type 命令的类型
    • cd is a shell builtin
    • ping is /bin/ping
    • ll is aliased to `ls -l --color=auto’
    • for is a shell keyword
  • 命令的帮助文档
    • help
      • 内置命令的帮助文档
    • man
      • 外部命令的帮助文档
      • 因为当前系统为minimal的,very basic 没有man包
      • 需要手动安装man
        • yum install man man-pages -y
    • 将来工作中如果遇到生疏的命令,直接百度
      • 如果不是为了装C,完全没必要查看命令手册

3.2. 常用的命令

  • whereis 查询命令文件的位置
  • file 查看文件的类型
  • who 查看当前在线的用户
  • whoami 我是谁
  • pwd 我在那
  • uname -a 查看内核信息
  • echo 类似于 sout ,打印语句
  • clear 清屏
  • history 历史

3.3. 特殊字符

  • .点:

    • 如果文件的开始是.说明当前文件是一个隐藏文件
    • . 指向当前目录
    • ..指向当前目录的上级目录
  • $

    • 说明这是一个变量
      • $PATH Linux的环境变量
  • *

    • 通配符
  • ~

    • 当前用户的家目录
    • 每个用户的家目录是不同的
    • root用户家目录在系统根目录下
    • 其他用户的家目录在/home/用户名为家目录
  • 空格

    • Linux的命令与参数用空格隔开
  • /

    • 整个Linux的文件根目录
  • 命令的参数

    • 如果是单词 一般加 --
    • 如果是字母或者缩写 一般加 -
  • 修改Xshell字体颜色

    • PS1='\[\e[36;40m\][\u@\h \W]\[\e[0m\]\\$ '
      echo "PS1='\[\e[36;40m\][\u@\h \W]\[\e[0m\]\\$ '" >> ~/.bashrc
      source ~/.bashrc
      

4. Linux的文件系统

4.1. 万事万物皆文件

  • 文件系统:

    • 操作系统如何管理文件,内部定义了一些规则或者定义
  • 所以在Linux中所有的东西都是以文件的方式进行操作

  • 在Linux中,文件的访问不和Window的一样。window依靠的是通过盘符进行访问

  • Linux维护着一个树状结构的文件模型

    • 只有一个根节点 ,他的名字叫做 /
    • 一个节点上可以有多个子节点
  • 查找文件的方式

    • 相对路径
      • 以当前路径为基准点,查找其他资源
      • vi ../etc/sysconfig/network
    • 绝对路径
      • 以根目录为基准点,查找其他资源
      • vi /etc/sysconfig/network-scripts/ifcfg-ens33
    • 日常使用中,只要找到路径即可,但是如果是一些配置文件,尽量写绝对路径 可以随意的挂载磁盘
  • 可以随意的挂载磁盘

    • mount /dev/disk1 /usr/download
      disk1 1T
      mount /dev/disk2 /usr/upload
      disk2 100T
      mount /dev/disk3 /usr/upload/photo
      disk3 1P
      

4.2. Linux二级文件目录

  • linux_第19张图片

  • /bin:
    bin是Binary的缩写, 这个目录存放着最经常使用的命令。
    
    /boot:
    这里存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件。
    
    /dev :
    dev是Device(设备)的缩写, 该目录下存放的是Linux的外部设备,在Linux中访问设备的方式和访问文件的方式是相同的。
    
    /etc:
    这个目录用来存放所有的系统管理所需要的配置文件和子目录。
    
    /home:
    用户的主目录,在Linux中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的。
    
    /lib:
    这个目录里存放着系统最基本的动态连接共享库,其作用类似于Windows里的DLL文件。几乎所有的应用程序都需要用到这些共享库。
    
    /lost+found:
    这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件。
    
    /media:
    linux 系统会自动识别一些设备,例如U盘、光驱等等,当识别后,linux会把识别的设备挂载到这个目录下。
    
    /mnt:
    系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在/mnt/上,然后进入该目录就可以查看光驱里的内容了。
    
    /opt:
    这是给主机额外安装软件所摆放的目录。比如你安装一个ORACLE数据库则就可以放到这个目录下。默认是空的。
    
    /proc:
    这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。
    这个目录的内容不在硬盘上而是在内存里,我们也可以直接修改里面的某些文件,
    比如可以通过下面的命令来屏蔽主机的ping命令,使别人无法ping你的机器:
    echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
    
    /root:
    该目录为系统管理员,也称作超级权限者的用户主目录。
    
    /sbin:
    s就是Super User的意思,这里存放的是系统管理员使用的系统管理程序。
    
    /selinux:
    这个目录是Redhat/CentOS所特有的目录,Selinux是一个安全机制,类似于windows的防火墙,但
    是这套机制比较复杂,这个目录就是存放selinux相关的文件的。
    
    /srv:
    该目录存放一些服务启动之后需要提取的数据。
    
    /sys:
    这是linux2.6内核的一个很大的变化。该目录下安装了2.6内核中新出现的一个文件系统 sysfs 。
    sysfs文件系统集成了下面3种文件系统的信息:针对进程信息的proc文件系统、针对设备的devfs文件
    系统以及针对伪终端的devpts文件系统。该文件系统是内核设备树的一个直观反映。
    当一个内核对象被创建的时候,对应的文件和目录也在内核对象子系统中被创建。
    
    /tmp:
    这个目录是用来存放一些临时文件的。
    
    /usr:
    这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于windows下的program files目录。
    
    /usr/bin:
    系统用户使用的应用程序。
    
    /usr/sbin:
    超级用户使用的比较高级的管理程序和系统守护程序。
    
    /usr/src:
    内核源代码默认的放置目录。
    
    /var:
    这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。
    
    /run:
    是一个临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删掉或清除。如果你的系统上有 /var/run 目录,应该让它指向 run。
    

4.3. Linux的文件操作

  • cd
    • 改变当前工作目录
  • ls ll
    • 显示出指定目录下所有的文件
    • 文件的类型
      • -普通文件
      • d文件夹
      • l软连接
    • -rw-r–r–. 1 root root 3384 Nov 11 23:51 install.log.syslog
  • mkdir
    • 创建文件目录
    • mkdir -p a/b/c/d/e/f 会自动创建文件父目录
    • mkdir -p lucky/{1234}ls 一次可以创建多个子目录
  • rmdir
    • 删除空文件夹
      • rmdir: failed to remove ‘a1’: Directory not empty
      • rmdir: failed to remove ‘baidu’: Not a directory
    • 可以安全的删除文件目录
  • cp
    • 拷贝文件或者文件目录
    • cp 源文件 目标目录
      • cp abcd /opt
      • cp /opt/abcd ./
    • 拷贝文件夹
      • cp -r lucky /opt
      • 拷贝文件夹下所有的内容
      • cp: omitting directory ‘/root/a1’
  • mv
    • 移动文件或者文件夹
      • mv a1 /opt
      • mv abc /opt
    • 修改文件名称
      • mv a abcd
  • rm
    • 删除文件
      • rm install.log
      • rm -f install.log
    • 删除文件夹
      • rm -r abcd
      • rm -rf /* 谨慎使用,从删库到跑路(将根目录删除)
  • touch
    • 如果没有就创建一个文件
    • 如果该文件已经存在,修改文件的三个时间,将三个时间改为当前时间
  • stat
    • 查看文件的状态
    • Inode 当前文件在文件系统的唯一标识,类似于ID
    • 时间
      • access 访问时间
      • modify 修改文件内容时间
      • change 修改文件元数据信息时间
        • 文件大小 ,文件所有者 ,文件权限
        • 对于文件的描述信息
  • ln
    • 创建文件的链接
    • 软(符号)连接
      • ln -s lucky01 sl
      • 软连接和原始文件不是同一个文件
        • lucky1 131085
        • sl 131074
      • rm -rf lucky1
    • 硬链接
      • ln lucky02 hl
      • 硬链接和原始文件使用文件系统中的同一个文件
      • 如果你害怕一个文件被别人误删,你可以使用硬链接保护这个文件
    • 软硬链接在链接文件的时候,推荐使用文件的绝对路径,否则有可能会出现问题

4.4. 读取文件信息

  • cat
    • 将整个文档加载到内存中,并进行一次性显示
    • 除非后面使用管道,传递数据
  • tac
    • 将整个文档加载到内存中,并进行一次性按行逆序显示
  • more less
    • 分页查看文档内容
    • 快捷键
      • 回车 下一行
      • 空格 下一页
      • b 回退
      • q 退出
  • head
    • 从文章开始读取N行
    • 默认如果超过10行读取10行,否则读取现在行数
    • head -5 profile
  • tail
    • 从文章末尾读取N行
    • head -3 profile | tail -1
      • 利用管道只读取第N行
      • 管道的作用就相当于把前面的结果以参数的方式传递给后面的命令
    • 读取新增数据
      • ping www.baidu.com >>baidu
      • tail -F baidu
      • 如果f:
        • 它会监听指定inode的文件数据变化,但是当文件被删除后
        • 即使创新创建,inode也会发生变化,于是监听失败
      • 如果F
        • 他会监听指定名字的文件,如果文件被删除后,重新创建
        • 他会重新监听新文件的数据变化,监听不受影响
  • find
    • 查找指定的文件
    • find 要查找的范围 -name 名字
    • find /etc -name profile

4.5. VI和VIM编辑器

linux_第20张图片

4.5.1. 打开文件
  • 正常打开
    • vi profile
  • 打开文件,并将光标置于第8行
    • vi +8 profile
  • 打开最后一行
    • vi + profile
    • 按n查找下一个,按N查找上一个
  • 打开指定搜索单词的位置
    • vi +/if profile
4.5.2. 三种模式
  • 编辑模式
    • 编辑模式中,每一个按键都有其他的功能
  • 输入模式
    • 每一个按键按下什么,就像文本中数据输入什么
  • 末行(命令行)模式
    • 我们可以直接在VI中输入特定的命令
4.5.3. 三种模式切换

linux_第21张图片

  • 编辑模式–>输入模式
    • i 在当前位置插入数据
    • a追加数据
    • o在当前行后面开启一个新的输入行
    • I 行首
    • A 行尾
    • O 上一行
  • 输入模式–>编辑模式
    • 按下ESC
  • 编辑模式–>末行模式
    • :
  • 末行模式–>编辑模式
    • 按下ESC
4.5.4. 编辑模式
  • G最后一行
  • gg 跳转到第一行
  • 数字gg 跳转到第数字行
  • w 下个单词
  • 数字w
  • dw 删除一个单词
  • 3dw 删除三个单词
  • dd 删除一行
  • 3dd 删除三行
  • u回退到前面的操作
  • .回退u执行的操作
  • yw 复制一个单词
  • 3yw 复制三个单词
  • yy 复制一行
  • 3yy复制三行
  • p粘贴
  • 6p 粘贴6次
  • x 剪切
  • 3x 剪切三个字符
  • r 替换,然后输入一个字符替换
  • 3r 替换三个
  • hjkl 方向键
  • ZZ 保存并退出
  • ctrl+s 锁屏
  • ctrl+q 解锁
4.5.5. 输入模式
  • 没得讲。按啥是啥
4.5.6. 末行模式
  • set nu 设置行号
  • set nonu 取消行号
  • w 保存
  • q 退出
  • wq 保存并退出
  • q!强制退出,但是不保存
  • 如果上次异常退出会保留同名隐藏文件,每次启动会给与提示
    • 如果确定当前文件没问题,请删除隐藏文件
  • /pattern
    • 搜索指定的字符串
    • /usr n向下查找 N逆向查找
  • s/p1/p2/g
    • 替换字符串
    • g 替换当前行所有 否则只替换当前行第一个
      • s/abc/lucky/g 查找指定行
    • 3,8s/abc/lucky/g
    • 替换全文
      • g/abc/s//lucky/g

注:vim安装指令: yum intstall vim -y

linux_第22张图片

4.6. 计算机间的数据传输

4.6.1. Window–Linux
  • lrzsz
    • 需要手动安装
      • yum install lrzsz -y
    • rz
      • 将文件从window上传到Linux
    • sz
      • 文件 将文件从Linux传输到Window
    • xftp
      • 较为通用的文件传输方式
4.6.2. Linux–Linux

4.7. 文件大小

  • 分区信息
    • df -h
  • 指定文件目录大小
    • du -h --max-depth=1 apache-tomcat-7.0.61
  • swap
    • 一个特殊分区,以硬盘代替内存
    • 当内存使用满的时候,可以将一部分数据写出到swap分区

###4.8. 文件压缩

4.8.1. tar
  • 主要针对的文件是 lucky.tar.gz
  • 解压缩
    • tar -zx(解压)v(过程)f(文件) lucky.tar.gz
  • 压缩
    • tar -zc(压缩)f(文件) tomcat.tar.gz(压缩后的名字) apache-tomcat-7.0.61(源文件)
    • tar -zxf tomcat.tar.gz -C /opt/
      • -C 指定解压缩的文件目录
4.8.2. zip和unzip
  • 安装

    • yum install zip unzip -y
  • 压缩

    • zip -r tomcat.zip apache-tomcat-7.0.61
  • 解压缩

    • unzip tomcat.zip

5.Linux的网络信息

5.1. 主机名称

  • 临时修改
    • hostname school
  • 长久修改
    • vi /etc/hostname

5.2. DNS解析

  • 域名解析服务
  • 可以将域名转换为IP地址
  • DNS域名劫持
    • window --> C:\Windows\System32\drivers\etc\hosts
    • 123.56.138.186 www.baidu.com
    • 123.56.138.186 www.taodao.com
  • 修改主机域名
    • vi /etc/hosts
    • 将来我们需要把所有的虚拟机都配置hosts文件
    • 192.168.31.101 bd1601
    • 192.168.31.102 bd1602

5.3. 网络相关命令

  • yum install net-tools -y

  • ifconfig

    • 查看当前网卡的配置信息
    • 这个命令属于 net-tools中的一个命令,但是Centos7中minimal版并没有集成这个包
    • 所以7的时候需要自己手动安装
    • 如果没有ifconfig ,可以使用ip addr 临时代替
  • netstat

    • 查看当前网络的状态信息
    • 一个机器默认有65536个端口号[0,65535]
    • 这是一个逻辑的概念,将来我们需要使用程序监听指定的端口,等待别人的访问
    • 一个端口只能被一个程序所监听, 端口已经被占用
    • netstat -anp
    • netstat -r 核心路由表 == route
  • ping

    • 查看与目标IP地址是否能够连通
  • telnet

    • 查看与目标IP的指定端口是否能够连通
    • yum install telnet -y
    • telnet 192.168.31.44 22
  • curl

    • restful 我们所有的资源在网络上中都有唯一的定位
    • 那么我们可以通过这个唯一定位标识指定的资源
    • http://localhost:8080/lucky/user.action/666
    • curl -X GET http://www.baidu.com

5.4. 防火墙

  • 防火墙技术是通过有机结合各类用于安全管理与筛选的软件和硬件设备,帮助计算机网络于其内、 外网之间构建一道相对隔绝的保护屏障,以保护用户资料与信息安全性的一种技术
  • 在centOS7+中 使用firewalld代替以前的 iptables ;
#查看防火墙状态
systemctl status firewalld.service

#临时停止firewall
systemctl stop firewalld.service

#开启firewall
systemctl start firewalld.service

#禁止firewall开机启动
systemctl disable firewalld.service

firewall-cmd --state ##查看防火墙状态,是否是running
firewall-cmd --reload ##重新载入配置,比如添加规则之后,需要执行此命令
firewall-cmd --get-zones ##列出支持的zone
firewall-cmd --get-services ##列出支持的服务,在列表中的服务是放行的
firewall-cmd --query-service ftp ##查看ftp服务是否支持,返回yes或者no
firewall-cmd --add-service=ftp ##临时开放ftp服务
firewall-cmd --add-service=ftp --permanent ##永久开放ftp服务
firewall-cmd --remove-service=ftp --permanent ##永久移除ftp服务
firewall-cmd --add-port=80/tcp --permanent ##永久添加80端口
  • 开启一个端口的正确操作
# 添加
firewall-cmd --zone=public --add-port=80/tcp --permanent
#重新载入
firewall-cmd --reload
#查看
firewall-cmd --zone=public --query-port=80/tcp
#删除
firewall-cmd --zone=public --remove-port=80/tcp --permanent

5.5. 加密算法

linux_第23张图片

5.5.1. 不可逆加密算法

linux_第24张图片

  • 可以通过数据计算加密后的结果,但是通过结果无法计算出加密数据
  • 应用场景
    • Hash算法常用在不可还原的密码存储、信息完整性校验。
    • 文档、音视频文件、软件安装包等用新老摘要对比是否一样(接收到的文件是否被修改)
    • 用户名或者密码加密后数据库存储(数据库大多数不会存储关键信息的明文,就像很多登录功 能的忘记密码不能找回,只能重置)
  • 案例
    • 123456
    • e10adc3949ba59abbe56e057f20f883e
    • md5(md5(123456))----->md5(654321)
5.5.2. 对称加密算法

linux_第25张图片

  • Symmetric Key Encryption
  • 代表性算法叫做 DES、3DES、Blowfish、IDEA、RC4、RC5、RC6和AES
  • 特点
    • 加密和解密使用相同的秘钥
  • 优点
    • 生成密钥的算法公开、计算量小、加密速度快、加密效率高、密钥较短
  • 缺点
    • 双方共同的密钥,有一方密钥被窃取,双方都影响
    • 如果为每个客户都生成不同密钥,则密钥数量巨大,密钥管理有压力
  • 应用场景
    • 登录信息用户名和密码加密、传输加密、指令加密
  • 案例:
    • 原文:今晚八点学校小树林见
    • 密钥: love
    • 7gjM6FhIc89ACoel+jJ3VM26XGAdSlaHTj5NYg4VkKA=
5.5.3. 非对称加密算法

linux_第26张图片

  • Asymmetric Key Encryption

  • 非对称加密算法需要一对密钥(两个密钥):

    • 公开密钥(publickey)和私有密钥(privatekey)(简称公钥,私钥)。
    • 公开密钥与私有密钥生成时是一对
    • 用公钥加密只能是对应的私钥解密,同理用私钥加密只能用对应的公钥解密。
  • 代表性算法叫做 RSA、ECC、Diffie-Hellman、El Gamal、DSA(数字签名用)

  • 优点:

    • 安全高(几乎很难破解)
  • 缺点

    • 加解密相对速度慢、密钥长、计算量大、效率低
  • 应用场景

    • HTTPS(ssl)证书里制作、CRS请求证书、金融通信加密、蓝牙等硬件信息加密配对传输、关键 的登录信息验证。
  • http://tool.chacuo.net/cryptrsaprikey

    • -----BEGIN PUBLIC KEY-----
      MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDjlHREYDiL9p5bAPBsMCy+UIaH
      e4MAm7djkuHYW3aGQLgG9Rc1CSRaFeNXBw+llDsnIgBPgoUI4S8N2m87n25zJ5jH
      7pEyWoZsAeTgpqJ6fzfciRpGHsawZ+AxVs0PeIvBMVIIZfpP4tIK5WVau7mVt0gy
      /bU+PtX35wVymIKy7QIDAQAB
      -----END PUBLIC KEY-----
      
    • -----BEGIN PRIVATE KEY-----
      MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBAOOUdERgOIv2nlsA
      8GwwLL5Qhod7gwCbt2OS4dhbdoZAuAb1FzUJJFoV41cHD6WUOyciAE+ChQjhLw3a
      bzufbnMnmMfukTJahmwB5OCmonp/N9yJGkYexrBn4DFWzQ94i8ExUghl+k/i0grl
      ZVq7uZW3SDL9tT4+1ffnBXKYgrLtAgMBAAECgYBOkrvNu7bqQ/yKiPl5MOzRzHWW
      I0OomxqnC1hkXbe/RGsFI+ueSQi+/Z2fN3XkghgmO6wFx5ds6GpZixgqarIz8z/Z
      AixGVx7BgUgAzIZ4OOsm7uLpPs7WEVLWn1I4/59HxnzWX85ShBsfJc4tFb566Bc2
      /5SaBurNXlOURFFs9QJBAPUL/qCWZ5JljXEtlLqaumEY54WT6+dJpL0j2bsmvktk
      CkMpzqCKy8ymiFPa5FyZDRsZfLQBoHWv7SVKD0wOFMcCQQDtwJcAsOrxWApQ19tr
      9wrrv0QB0XPkJjOL85x/I+6Q6CMd2YQs8ze2ex+J45VWtADQYi2VixgmtI9pNmW7
      eJ6rAkAe2s/I8KdB67+PjKm5hVoKd9RPIX0GtmMj3avAwPQdEg+ovU7jMBbRQfbQ
      eDNg5XSdAOyOzdWie/BkTZr3fJ5pAkEAr9OVGOK97ZxRjboyGRNMfVXdOwRV4YorJ
      5j9URkZ5gNrcVY/uixuX4TEvAte3MrbOP03MLmL+imlQAdxD4h/zHwJBANY0vxVf
      8tzwPdXcNWK8ZCqmWLR8sDTrzRdwNejBraYb00yEngGy1uALsDNevXtzrRkh8dzV
      QI5y+RliuFYWd14=
      -----END PRIVATE KEY-----
      
    • IpaC8/W8s3UL9wDuz8pRUA3bG3jE0Ch0MqCiVd3LXHBXSDRVckvD20cUEnBkiG0N85NfY6rv
      M0iyb4fNkic4BhmLQg6AsV4L8LEIptSwPJwlVqJprqh7MHN+R9y/PekSmpZYAxitTaFFfgJP
      DhGYl45TmWLj2vhGoOQy/INK9boy=
      
    • 今晚八点学校小树林见
      

5.6. 主机间的相互免秘钥

  • 可以通过ssh命令免秘钥连接到其他的主机

  • 如果是第一次建立连接,需要输入yes

    • 在 ~/.ssh/known_hosts 文件记录了以前访问地址(ip hostname)的信息
    • 在访问地址的时候如果没有收录到known_hosts文件中,就需要输入yes
    • 如果以前收录到known_hosts中,直接输入密码即可
  • 需要输入密码

    • 生成秘钥

      • ssh-keygen -t rsa -P ‘’ -f ~/.ssh/id_rsa
      • linux_第27张图片
    • 查看公钥

      • cat ~/.ssh/id_rsa.pub
      • linux_第28张图片
    • 如果你想免秘钥登录谁,只需要把自己的公钥传递给对方主机即可

    • 这个秘钥要放在 ~/.ssh/authorized_keys

    • 查看公钥

      • cat ~/.ssh/authorized_keys
      • linux_第30张图片
  • 相互面秘钥工作流程

  • linux_第31张图片

5.7. 主机名与Host校验

linux_第32张图片

  • 错误原因:
  • Cannot determine realm for numeric host
  • 解决方案1–本次
  • 解决方案2–所有
    • 修改vi /etc/ssh/ssh_config文件的配置,以后则不会再出现此问题
    • 最后面添加:
    • StrictHostKeyChecking no
    • UserKnownHostsFile /dev/null

6. 日期与时间

6.1. 时间命令

  • 查看时区
    • ll /etc/localtime
      • /etc/localtime -> …/usr/share/zoneinfo/America/Los_Angeles
    • ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
  • date
    • 查看当前系统时间
  • cal 查看日历
    • cal 2020
  • 修改时间
    • date -s 11:11:11
    • date -s 2019-11-11
    • date -s ‘2019-11-11 11:11:11’

6.2. 日期自动同步

  • 自动同步时间

    • yum install ntp -y
    • ntpdate cn.ntp.org.cn
  • 本地搭建NTP服务

    • 开启本地NTP服务器

    • service ntpd start

    • vi /etc/ntp.conf

    • #========权限控制============
      restrict default kod nomodify notrap nopeer noquery 拒绝IPV4用户
      restrict -6 default kod nomodify notrap nopeer noquery 拒绝IPV6用户
      restrict 210.72.145.44 授权国家授时中心服务器访问本地NTP
      restrict 133.100.11.8 授权133.100.11.8访问本地NTP
      restrict 127.0.0.1
      restrict -6 ::1
      restrict 192.168.188.2 mask 255.255.255.0 nomodify 本地网段授权访问
      #=========源服务器===========
      server cn.ntp.org.cn prefer 指定上级更新时间服务器,优先使用这个地址
      #=========差异分析===========
      driftfile /var/lib/ntp/drift
      keys /etc/ntp/keys
      

    ``

  • 客户端同步时间

    • ntpdate 192.168.188.100

7.用户-组-权限

7.1. 用户

  • 新增用户
    • useradd luckyboy
    • 会创建同名的组和家目录
  • 设置密码
    • passwd luckyboy
  • 删除用户
    • userdel -r luckyboy
    • 级联删除家目录和组
  • 修改用户信息
    • usermod -l luckyss luckyls 修改用户名
      • 家目录和组名称是不会被修改的
    • usermod -L luckyss 锁定用户名
    • usermod -U luckyss 解锁用户名
  • 常用文件
    • cat /etc/shadow
      • 用户名和密码
    • cat /etc/passwd
      • 用户名,编号,组编号,家目录,命令,目录
      • 6.5系统0-499 普通 500+
      • 7.6系统0-999 普通 1000+
  • 切换账户
    • su luckyboy

7.2. 组

  • 创建组
    • groupadd lucky
  • 删除组
    • groupdel lucky
  • 修改组名字
    • groupmod -n school lucky
  • 查看用户对应的组
    • groups
    • groups schoolboy
      • 当我们创建用户的时候,会默认创建一个同名的主组
  • 修改用户的组
    • usermod -g lucky schoolboy (主组)
    • usermod -G lucky schoolls (附属组)

7.3. 权限

  • linux_第33张图片

  • 查看文件的权限

    • drw-r-xr-x 9 n1 m1 4096 Nov 13 00:30 apache-tomcat-7.0.61
    • 三组权限,每组3个字母
      • r :读取权限
      • w :写入权限
      • x :执行权限
      • -:没有权限
    • root :所属用户(属主)
    • root:所属的组(属组)
  • 权限的UGO模型

    • 三组权限
    • 属主的权限:属组的权限:其他的权限
    • 所有说:将来修改文件的权限 可以从rwx和ugo两个方面进行修改
  • 修改文件的权限

    • 修改文件所属
      • chown n1 /var/lucky1
      • chown n1:m1 /var/lucky2
      • 修改文件夹时,让子目录迭代修改
        • chown -R n1:m1 school
      • chgrp m2 lucky3
        • 当用户的组被修改之后,需要重新登录才能获取新组的权限
    • 修改文件的rwx
      • chmod o+w lucky4
      • chmod ug+rw lucky4
      • chmod ugo-rw lucky4
      • (权限RWX分别对应数字 4 2 1 5= 4+0+1 r-x)
        • chmod 664 lucky4 ->(rw- rw-r–)

linux_第34张图片

7.4. 权限赋予

  • 我们可以将管理用的权限分配给普通用户
  • 文件位置在 vim /etc/sudoers
  • 但是修改这个文件需要使用命令
    • visudo
    • 修改 Line 99
    • n1 ALL=(root) /sbin/useradd
    • n1 ALL=(root) /sbin/*
  • 如何使用
    • su n1 sudo
    • chkconfig iptables off

8. 管道与重定向

8.1. 管道

  • 将前面命令的结果作为参数传递给后面的命令
  • grep
    • 强大的文本搜索工具
    • cat profile | grep if
    • ls / | grep ^t

8.2. 重定向

  • 改变数据输出的位置,方向
  • 0 in 1 out 2 err
    • ls / 1> lucky 标准输出
    • ls / > lucky 标准输出
    • ls abcd 2>lucky 错误输出
  • 替换 >> 追加
    • ls / 1>> lucky
    • ls / 1> lucky
  • 结合使用
    • ls /etc /abc > lucky 2>&1
    • ls /etc /abc >> lucky 2>&1
  • 信息黑洞
    • ls /etc /abc >> /dev/null 2>&1

9. Linux的系统进程

9.1. 进程信息

  • ps -ef
    • UID PID PPID C STIME TTY TIME CMD
    • UID 所属用户
    • PID 当前进程编号
    • PPID 当前进程编号的父进程编号
  • ps -ef | grep redis
  • ps -aux
    • 所有信息
  • ps -aux --sort -pcpu
  • top
    • 当前服务器内存使用率

9.2. 后台进程

  • 只需要在命令的后面添加一个 & 符号
    • ping www.baidu.com >> baidu &
  • jobs -l
    • 可以查看当前的后台进程
    • 但是只有当前用户界面可以获取到
  • nohup 可以防止后台进程被挂起
    • nohup ping www.baidu.com >> baidu 2>&1 &

9.3. 杀死进程

  • kill -9 17599

10. Linux的软件安装

10.1. 环境变量

当我们执行一个命令的时候,默认从当前路径开始查找

如果当前路径找不到对应的命令文件,从环境变量

$PATH查找 $PATH的配置文件在 /etc/profile

window 路径与路径之间用;(分号)连接

Linux路径与路径之间用:(冒号)连接

Linux每次修改完成之后,需要重新加载文件 source /etc/profile

10.2. 软件的安装方式

  • 解压就可以使用
  • 使用安装包安装(window-exe Linux-rpm)
    • 自己下载安装包
    • 使用统一的软件帮助我们安装
  • 通过源码安装

10.3. RPM安装

  • RedHat Package Manager,它属于红帽的一种包管理方式

  • 通过RPM命令安装软件

    • rpm -ivh jdk-7u67-linux-x64.rpm
  • 可以查询软件

    • rpm -qa | grep jdk
    • rpm -q jdk
  • 卸载

    • rpm -e jdk-1.7.0_67-fcs.x86_64
  • 需要手动配置Java的环境变量

    • vim /etc/profile

    • export JAVA_HOME=/usr/java/jdk1.7.0_67
      export PATH=$JAVA_HOME/bin:$PATH
      
    • 重新加载配置文件

      • source /etc/profile

10.4. 压缩包解压安装

  • 解压文件

    • tar -zxf apache-tomcat-7.0.61.tar.gz
  • 拷贝到/opt/school目录下

    • mv -zxf apache-tomcat-7.0.61 /opt
    • mkdir -p /opt/lucky
    • cp -r apache-tomcat-7.0.61 /opt/school
  • 启动tomcat

    • cd /opt/school/apache-tomcat-7.0.61/bin/
    • ./startup.sh
  • 查看是否安装

    • ps -ef | grep tomcat
    • linux_第35张图片
  • 在浏览器中输入http://192.168.164.100:8080/ —>自己的IP端口号

    • linux_第36张图片

注:如果访问不到查看防火墙是否关闭

10.5. YUM安装

10.5.1. yum的作用
  • 可以帮我们管理RPM包
  • 可以帮我们安装软件,
  • 如果软件有其他依赖,会帮我们安装依赖后在安装软件
  • 类似于Maven
10.5.2. yum命令
  • search 查询命令或者软件
  • info
    • 查看包的信息
  • list / list jdk
    • 查询安装的rpm包,或者只查询某一周
10.5.3. 更换yum源

切换阿里云的下载源

  • 进入yum的文件夹
    • cd /etc/yum.repos.d/
  • 删除yum文件夹所有yum源
    • rm -rf /etc/yum.repos.d/*.repo
  • 利用wget下载阿里云repo文件
    • wget http://mirrors.aliyun.com/repo/Centos-7.repo
  • 执行yum源更新命令
    • yum clean all ----> 清空以前yum源的缓存
    • yum makecache ---->获取阿里云的缓存
  • 下载wget
    • yum install wget -y

10.6. 安装Mysql数据库

  • Mysql的下载地址

    • https://downloads.mysql.com/archives/community/

    • linux_第37张图片

    • linux_第38张图片

  • #----------安装Mysql依赖【perl net-tools】
    yum install perl net-tools -y
    #----------卸载mariadb
    rpm -qa | grep mariadb
    rpm -e --nodeps mariadb-libs-5.5.60-1.el7_5.x86_64
    #----------安装mysql
    tar -xvf mysql-8.0.18-1.el7.x86_64.rpm-bundle.tar
    rpm -ivh mysql-community-common-8.0.18-1.el7.x86_64.rpm
    rpm -ivh mysql-community-libs-8.0.18-1.el7.x86_64.rpm
    rpm -ivh mysql-community-client-8.0.18-1.el7.x86_64.rpm
    rpm -ivh mysql-community-server-8.0.18-1.el7.x86_64.rpm
    #----------启动mysql
    systemctl start mysqld
    #----------查找密码并登陆Mysql
    cat /var/log/mysqld.log | grep password
    mysql -u root -p
    #----------修改Mysql密码 8.0版本输入命令:
    set global validate_password.policy=LOW;#降低密码校验权限
    set global validate_password.length=6;#密码长度
    #更改加密方式
    ALTER USER 'root'@'localhost' IDENTIFIED BY '123456' PASSWORD EXPIRE NEVER;
    #更新用户密码
    ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
    #刷新权限
    FLUSH PRIVILEGES;
    #----------修改Mysql密码 5.7版本输入命令:
    set global validate_password_policy=LOW;
    set global validate_password_length=6
    alter user root@localhost identified by '123456';
    #----------修改Mysql链接地址
    use mysql;
    update user set host='%' where user = 'root';
    commit;
    exit;
    systemctl restart mysqld;
    #----------使用Navicat连接Mysql
    

11. Linux的三剑客

11.1. 普通剑客

  • cut
    • 用指定的规则来切分文本
    • cut -d’:’ -f1,2,3 passwd | grep school
  • sort
    • sort lucky
      • 对文本中的行进行排序
    • sort -t’ ’ -k2 lucky
      • 对每一行的数据进行切分,按照第二列进行排序
    • sort -t’ ’ -k2 -r lucky
      • 逆序
    • sort -t’ ’ -k2 -n lucky
      • 按照数值大小进行排序,如果有字母,字母在前
  • wc
    • 统计单词的数量
    • wc lucky
    • 4 15 79 lucky
      • -l line
      • -w word 以空格来分割单词
      • -c char

11.2. 剑客1号:grep

  • 可以对文本进行搜索
  • 同时搜索多个文件
    • 从文档中查询指定的数据
    • grep adm passwd
    • grep school passwd lucky
  • 显示匹配的行号
    • grep -n school passwd
  • 显示不匹配的忽略大小写
    • grep -nvi root passwd --color=auto
  • 使用正则表达式匹配
    • grep -E “[1-9]+” passwd --color=auto

11.3. 剑客2号:sed

  • sed 是Stream Editor(字符流编辑器)的缩写,简称流编辑器
  • Sed软件从文件或管道中读取一行,处理一行,输出一行;再读取一行,再处理一行,再输出一 行…
  • 一次一行的设计使得sed软件性能很高
  • vi命令打开文件是一次性将文件加载到内存
  • 了解即可
    • https://www.cnblogs.com/chensiqiqi/p/6382080.html
  • 行的选择模式
    • 10 第十行
    • m,n --> 第m行到第n行 [m,n]
    • m,+n–>第一行到第四行 [m,m+n]
    • m~n–>从m行开始,依次累加n
    • m,$ -->从m开始到最后一行
    • /school/ -->匹配到school的行
    • /u1/,/u4/–>从匹配u1到匹配u4
    • sed ‘2a luckyisgood’ passwd
    • sed ‘2i luckyisgood’ passwd
      • 打印到控制台
    • sed -i ‘2a luckyisgood’ passwd
      • 直接修改到文件
    • sed ‘3,10d’ passwd
    • 整行替换
      • sed ‘3,20c hahaha’ passwd
      • sed ‘3~1c hehehe’ passwd
    • 字符替换
      • sed ‘1,5s/root/lucky/g’ passwd
      • sed ‘1,5s#/#-#g’ passwd

11.4. 剑客3号:awk

  • 它不是一个剑客,它是一门语言
  • 了解即可
    • https://www.cnblogs.com/chensiqiqi/p/6481647.html
  • 模式与动作
    • awk -F “:” ‘NR>=2&&NR<=6’ /etc/passwd
    • awk -F “:” ‘{print NR,$1}’ /etc/passwd
    • awk -F “:” ‘NR>=2&&NR<=6 {print NR,$1}’ /etc/passwd

你可能感兴趣的:(linux,linux,运维,服务器)