Linux完美学习笔记

文章目录

    • 1. 计算机硬件软件体系
      • 1.1. 冯·诺依曼体系结构
      • 1.2. 计算机硬件组成
      • 1.3. 硬盘的分类
      • 1.4. 顺序读写与随机读写
      • 1.5. 网络连接概念
      • 1.6. 网络连接模式
      • 1.7. 软件分类
      • 1.8. Linux分支
      • 1.9. Linux下载
    • 2. 虚拟化安装与配置
      • 2.1. 虚拟化技术
      • 2.2. 创建虚拟主机
      • 2.3. 安装操作系统
      • 2.4. 配置常见参数
        • 2.4.1. 配置网络参数
        • 2.4.2. 配置防火墙参数
        • 2.4.3. 安装软件限制
        • 2.4.4. 关机
      • 2.5. 虚拟机常见操作
      • 2.6. 修改克隆机配置
      • 2.7. 连接Linux服务器
    • ==3. Linux的命令==
      • 3.1. 命令学习法
      • 3.2. 常用的命令
      • 3.3.特殊字符
    • 4. Linux的文件系统
      • 4.1. 万事万物皆文件
      • 4.2. Linux文件目录
      • 4.3. Linux文件操作
        • ① cd
        • ② ll
        • ③ mkdir
        • ④ rmdir
        • ⑤ cp
        • ⑥ mv
        • ⑦ rm
        • ⑧ touch
        • ⑨ stat
        • ⑩ ln
      • 4.4. 读取文件信息
        • ① cat
        • ② tac
        • ③ more
        • ④ less
        • ⑤ head
        • ⑥ tail
        • ⑦ fing
      • 4.5. VI和VIM编辑器
        • 4.5.1. 打开文件
        • 4.5.2. 三种模式及其切换
        • 4.5.3. 一般指令模式
        • 4.5.4. 编辑模式
        • 4.5.5. 末行模式
        • 4.5.6. VIM编辑器
      • 4.6. 计算机间的数据传输
        • 4.6.1. Windows——Linux
        • 4.6.2. Linux——Linux
      • 4.7. 文件大小
      • 4.8. 文件压缩
        • 4.8.1. tar
        • 4.8.2. zip和unzip
    • 5.Linux的网络信息
      • 5.1. 主机名称
      • 5.2. DNS解析
      • 5.3. 网络相关命令
      • 5.4. 防火墙
      • 5.5. 加密算法
        • 5.5.1. 不可逆加密算法
        • 5.5.2. 对称加密算法
        • 5.5.3. 非对称加密算法
      • 5.6. 主机间的相互免密钥
      • 5.7. 主机名与Host校验
    • 6. 日期与时间
      • 6.1. 时间命令
      • 6.2. 日期自动同步
    • 7. 用户-组-权限
      • 7.1. 用户
      • 7.2. 组
      • 7.3. 权限
      • 7.4. 权限赋予
    • 8. 管道与重定向
      • 8.1. 管道
      • 8.2. 重定向
    • 9. Linux的系统进程
      • 9.1. 进程信息
      • 9.2. 后台进程
      • 9.3. 杀死进程
    • 10. Linux的软件安装
      • 10.1. 环境变量
      • 10.2. 软件安装
      • 10.3. RPM安装
      • 10.4. 压缩包解压安装
      • 10.5. yum安装
        • 10.5.1. yum的作用
        • 10.5.2. yum命令
        • 10.5.3. 更换yum源
      • 10.6. 安装MySQL数据库
    • 11. Linux的三剑客
      • 11.1. 普通剑客
      • 11.2. 剑客1号:grep
      • 11.3. 剑客2号:sed
      • 11.4. 剑客3号:awk

1. 计算机硬件软件体系

1.1. 冯·诺依曼体系结构

  • 计算机处理的数据和指令一律用二进制数表示
  • 顺序执行程序
  • 计算机硬件由运算器、控制器、存储器、输入设备和输出设备五大部分组成

1.2. 计算机硬件组成

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

1.3. 硬盘的分类

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

    • 固态硬盘通过闪存颗粒(固态电子存储芯片阵列)来存储数据

      Linux完美学习笔记_第2张图片
      • SLC ,每个存储单元仅能够存储1bit数据,速度快、寿命长、价格昂贵
      • MLC,每个存储单元仅能够存储2bit数据,速度较快、寿命较长、价格较贵
      • TLC ,每个存储单元仅能够存储3bit数据,速度一般、寿命一般、价格一般
    • 读写速度的区别

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

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

1.4. 顺序读写与随机读写

  • 机械硬盘一般随机读写,速度一般,但是用于顺序读写的话速度非常快

1.5. 网络连接概念

  • IP地址IPADDR

    • IP地址是一种逻辑地址,用来标识网络中一个个主机
      • IP地址=网络地址+主机地址
      • IP地址是一个32bit的数字串
  • 子网掩码NETMASK

    • 子网掩码用来判断任意两台计算机的IP地址是否在同一个子网中的根据
  • 默认网关GATEWAY

    • 网关的作用就是实现两个网络之间进行通讯与控制
  • 域名服务器DNS

    • DNS用来解析域名

    • C:\Windows\System32\drivers\etc\hosts

      • 去掉“只读”属性,在hosts文件中输入IP地址和对应的域名,电脑就会自动将域名解析到设置的IP地址

      • 将百度域名解析到知乎的IP地址:(域名劫持)
        180.153.100.156   www.baidu.com
        这时候ping www.baidu.com,就会解析到知乎的IP地址,但是现在的浏览器一般会进行判断
        

1.6. 网络连接模式

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

1.7. 软件分类

  • 应用软件

    • 应用软件要基于对应的系统软件
    • 不同的操作系统要安装不同的软件
  • 系统软件

    • 就是为了和硬件打交道
    • 屏蔽应用软件与硬件的差异
  • 系统软件的分类

    • 操作系统
      • Windows
        • 用户量全球最大
        • 收费、不开源,民用比较多
        • 各种软件比较齐全
      • GNU/Linux
        • GNU是一个开源软件组织,认为世界上所有的软件(包括应用和系统软件)都应该开源免费
        • 拖瓦兹·林纳斯——Linux内核
      • Mac OS
        • 只限定与某些苹果的品牌机
        • iOS自成一家

1.8. Linux分支

  • ReaHat

    • CentOS
      • 完全开源免费
      • 不要使用最新版的CentOS,可能有bug,不够稳定(版本年份用双不用单,单一般都是测试版)
      • 主要用于服务器版本
  • Debian

    • Ubuntu
      • 视窗界面良好的Linux系统
      • 一些主流的软件都支持Ubuntu系统
    Linux完美学习笔记_第3张图片

1.9. Linux下载

  • 官网
  • CentOS 7 2018年10月
  • CentOS-7_2018年10月-iso镜像
    • DVD版:家用版,正常安装使用,工作后可以使用
    • Everything版:包含所有组件
    • NetInsatll版:通过网络安装
    • Minimal版:包含具有功能系统所需的最少软件包,学习可以使用,这里我们选择这个版本就好了

2. 虚拟化安装与配置

2.1. 虚拟化技术

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

2.2. 创建虚拟主机

  • Linux完美学习笔记_第4张图片
  • Linux完美学习笔记_第5张图片

2.3. 安装操作系统

  • Linux完美学习笔记_第6张图片
  • CentOS7分区的简单配置

    • /boot:256M
    • swap:一般分配内存的两倍,2G
    • /:不用输入数值,默认剩下全部分配

2.4. 配置常见参数

2.4.1. 配置网络参数
  • 查看自己虚拟网卡地址

    • 编辑–>虚拟机网络编辑器–>vmnet8
  • 修改网络配置信息

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

    • vi编辑器简单使用
      操作文档
      光标位置
      dd 删除一行
      i 将文档变成可修改模式
      esc 退出编辑
      :wq 保存并退出
      
    • --修改
      ONBOOT=yes
      BOOTPROTO=static //静态网络IP dhcp 动态获取网络IP
      --添加
      IPADDR=192.168.58.100
      NETMASK=255.255.255.0
      GATEWAY=192.168.58.2
      DNS1=114.114.114.114
      删除------
      UUID
      
    • Linux完美学习笔记_第7张图片

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

    • ip addr(本机IP:192.168.222.100
    • systemctl restart network.service
    • ping www.baidu.com
    • ctrl+c终止执行命令
2.4.2. 配置防火墙参数
  • 保护本机的端口不被别人访问
  • 如果端口需要被别人访问到,需要添加端口的防火墙例外
  • 关闭防火墙
    • 本次开机状态下防火墙关闭
      • systemctl stop firewalld(本次服务内关闭防火墙)
    • 服务器重启后防火墙禁用
      • systemctl disable firewalld(今后都禁用防火墙服务)
  • 查看防火墙开启/关闭状态
    • systemctl status firewalld
2.4.3. 安装软件限制
  • 操作系统对未知软件的安装有可能拒绝或者警告,我们需要禁用这个功能
  • vi /etc/selinux/config
    • SELINUX=disabled
2.4.4. 关机
  • poweroff
    • 直接关闭机器,但是有可能当前虚拟机其他人在使用
  • halt
    • 直接拔掉电源
  • shutdown -h now
    • 马上关闭计算机,但是可以给其他用户发送信息
  • reboot
    • 重启虚拟机

2.5. 虚拟机常见操作

  • 拍摄快照
    • 记录当前虚拟机的状态
    • 拍摄快照的时候一定要关机
  • 转到
    • 回到某一个历史快照的节点
  • 克隆
    • 复制某一个历史快照节点
    • 克隆的方式
      • 链接克隆
        • 当前节点文件夹只存储差异性数据
        • 相同数据存放在原始节点上
        • 优点:节省硬盘空间 缺点:耦合性大
      • 完整克隆
        • 就是基于原始节点完全拷贝到新节点的文件夹中
        • 优点:耦合性抵 缺点:硬盘空间使用大
        • 推荐使用完整克隆
        • 复制这个文件,其他虚拟机打开其中的.vmx文件即可使用

2.6. 修改克隆机配置

  • 改网络配置(同上)
  • 改主机名
    • hostname 主机名
      • 本次启动中有效,重启虚拟机还是使用原来的名字
    • vi /etc/hostname
      • 修改完成后需要重启生效

2.7. 连接Linux服务器

  • putty download
  • Xshell:连接虚拟机——ssh IP地址
    • 负责向虚拟机输入命令
  • Xftp
    • 向虚拟机传输文件

3. Linux的命令

3.1. 命令学习法

  • Linux命令与参数之间必须用空格隔开
  • Linux命令是区分大小写的
  • 如果输入了错误的命令
    • 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
      • 内置命令的帮助文档
      • eg:help cd
    • man
      • 外部命令的帮助文档
      • 因为当前系统为Minima版,very basic没有man包
      • 需要手动安装man
        • yum install man man-pages -y
    • 将来工作中如果遇到生疏的命令,直接百度
      • 如果不是为了装X,完全没有必要查看命令手册
      • eg:man ping

3.2. 常用的命令

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

3.3.特殊字符

    • 如果文件的开始是.说明当前文件是一个隐藏文件
    • ·指向当前目录
    • ..指向当前目录的上级目录
  • $
    • 说明这是一个变量
    • - $PATH Linux的环境变量
  • *星号
    • 通配符
    • 当前用户的家目录
    • 每个用户的家目录是不同的
    • root用户家目录在系统根目录下
    • 其他用户的家目录:/home/用户名
  • 空格
    • Linux的命令与参数用空格隔开
  • /
    • 整个Linux的文件根目录
  • 命令的参数
    • 如果是单词,一般加--
    • 如果是字母或者缩写,一般加-

4. Linux的文件系统

  • 一级目录:/
    二级目录:/etc,/boot,/sbin,/usr,/opt
    三级目录:一般在三级目录才开始创建自己的目录
    ...
    
  • 如果磁盘空间不够用,可以挂载文件mount

  • Windows文件系统中,盘符的缺点是:在不同计算机中运行相同程序,可能出现路径错误。

4.1. 万事万物皆文件

  • 文件系统:

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

  • 在Linux中,文件的访问与Windows不同,Windows通过盘符进行访问

  • 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 2T
      mount /dev/disk3 /usr/upload/photo
      disk3 4T
      

4.2. Linux文件目录

二级目录查看命令:ll /

/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
  • 改变文件路径
② ll
  • 相当于ls -l --color=auto,ls
  • 显示出指定目录下所有的文件
  • 文件的类型
    • -:文件
    • d:目录,即文件夹
    • l:软链接,即快捷方式
③ mkdir
  • 创建文件目录

  • mkdir -p a/b/c/d/e/f会自动创建文件父目录

  • mkdir -p a{b,c,d}

    Linux完美学习笔记_第8张图片

  • mkdir -p a1/{b1,c1,d1}

    image-20220123204728064

④ rmdir
  • 只能删除空目录
⑤ cp
  • copy

  • 拷贝文件或者文件目录

  • cp 源==文件== 目标目录

    • cp abcd /opt
    • cp /opt/adcd
  • 拷贝==目录/文件夹==

    • cp -r 源目录 目标目录
    • 拷贝文件夹下所有的内容
⑥ mv
  • move

  • 剪切/移动文件或者目录

    • mv a1 /opt
  • 改文件名

    • mv 源文件名 新文件名
⑦ rm
  • remove

  • 删除文件

    • rm a.log:会跳出是否删除确认
    • rm -f a.log:强制删除不需要确认
  • 删除目录

    • rm -r aaa:删除目录必须加-r,会跳出确认提示
    • rm -rf aaa:强制删除目录,不需要确认
⑧ touch
  • 如没有这个文件,则创建文件
    • touch a
  • 如有这个文件,则将文件的三个时间修改为相同的时间
⑨ stat
  • 查看文件的状态
  • Inode当前文件在文件系统的唯一标识,类似于ID
  • 时间
    • access:访问时间
    • modify:修改文件内容时间
    • change:修改文件元数据信息时间
      • 文件大小、文件所有者、文件权限
      • 对于文件的描述信息
⑩ ln
  • link链接=快捷方式

  • 创建文件的链接

  • 软链接/符号链接

    • 软链接和原始文件不是同一个文件,可以通过Inode来判断
    • Linux完美学习笔记_第9张图片
  • 硬链接

    • 硬链接和原始文件使用文件系统中的同一个文件,可以通过Inode来判断

    • Linux完美学习笔记_第10张图片

    • 如果你害怕一个文件被别人误删除,你可以使用硬链接保护这个文件

      • 原理:

        stat一个文件,其link=1,链接数为1,即指向Inode的只有一个文件,当删除文件时,链接数变为0,Inode对应的文件也会删除。

        当为一个文件创建一个硬链接时,链接数变为2,即指向Inode的有两个文件,当删除原始文件时,链接数变为1,Inode对应的文件不会被删除,通过硬链接还可以访问之前的文件

        而为文件创建软链接时,其并不是直接指向源文件指向的Inode,而是指向另一个Inode,通过这个Inode指向源文件,再通过源文件去指向其Inode。所以如果删除源文件,通过软链接就无法找到源文件的Inode,也就无法查看其内容了。

4.4. 读取文件信息

① cat
  • 将整个文档加载到内存中,并进行一次性正序显示

  • 除非后面使用管道,传递数据

② tac
  • 将整个文档加载到内存中,并进行一次性按行逆序显示
③ more
  • 分页查看
    • 回车:下一行
    • 空格:下一页
    • b:back,往回退
    • q:退出
④ less
  • 相当于more,功能略为丰富
⑤ head
  • 从文章开始读取N行

  • 默认如果超过10行读取10行,否则读取现在行数

  • head -10 profile:查看profile的前十行

⑥ tail
  • 从文章末尾读取N行

  • tail -10 profile:查看profile的后十行

  • head -10 profile | tail -1:查看第十行

    • 利用管道只读取第N行
    • 管道的作用就相当于把前面的结果以参数的方式传递给后面的命令
  • 读取新增数据

    • ping www.baidu.com >>baidu

    • tail -F baidu

      • 如果F:
        • 会监听指定名字的文件(一般使用F)
        • 如果文件被删除后,重新创建就会重新监听新文件的数据变化,监听不受影响
    • tail -f baidu

      • 如果f:
        • 会监听指定Inode的文件数据变化
        • 但是当文件被删除后,即使重新创建,Inode也会发生变化,于是监听失败
⑦ fing
  • 查找指定的文件
  • find 路径 -name 文件名
    • find /etc -name a*a

4.5. VI和VIM编辑器

  • 记事本vi

  • notpad就是vim

4.5.1. 打开文件
  • 正常打开
    • vi profile
  • 打开文件,并将光标置于第8行
    • vi +8 profile
  • 打开最后一行
    • vi + profile
  • 打开指定搜索单词的位置
    • vi +/字符 profile
    • 按n查找下一个,按N查找上一个
      • vi +/if profile
4.5.2. 三种模式及其切换
  • 一般指令模式
    • 打开编辑器默认进入一般指令模式
    • 一般指令模式中,每一个按键都有其他的功能
      • dd删除一行
      • p粘贴
  • 编辑模式
    • 按esc回到一般指令模式
    • 进入编辑模式:
      • 按a 追加数据
      • 按i 在当前位置插入数据
      • 按o 在当前行后面开启一个新的输入行(下一行)
      • 按A 行尾
      • 按I 行首
      • 按O 上一行
    • 每一个按键按下什么,就像文本中数据输入什么
  • 末行(命令行)模式
    • 输入英文状态下的冒号进入命令行模式
    • 我们可以直接在VI中输入特定的命令
      • set nu:显示行号(set nonu不显示行号)
      • wq:保存并退出
    • 按下ESC回到一般指令模式
4.5.3. 一般指令模式
  • G:最后一行
  • gg:跳转到第一行
  • 数字gg:跳转到第数字行
  • w:跳转到下一个单词
  • 数字w:跳转到下数字个单词
  • dw:删除一个单词
  • 3dw:删除三个单词
  • u:回退到前面的操作,相当于ctrl+z
  • .:回退u执行的操作,相当于ctrl+y
  • yw:复制一个单词
  • 3yw:复制三个单词
  • yy:复制一行
  • 3yy:复制三行
  • p:粘贴剪贴板的内容
  • 2p:粘贴两遍剪贴板的内容
  • x:剪切一个字符
  • 3x:剪切三个字符
  • r:替换,然后输入一个字符替换
  • 3r:替换,然后输入一个字符替换三个字符
  • hjkl:上下左右
  • ZZ:按住shift不放,按两下z,即保存并退出
  • ctrl+s:锁屏
  • ctrl+q:解锁
4.5.4. 编辑模式
  • 按啥就是啥
4.5.5. 末行模式
  • w:保存
  • q:退出
    • 默认:修改文件内容如果没有保存无法退出
    • q!:不保存强制退出
    • 如果上次异常退出会保留同名隐藏文件,每次启动会给与提示
      • 如果确定当前文件没有问题,请删除隐藏文件
  • wq:保存并退出
  • set nu:设置行号
  • set nonu:设置无行号
  • /字符:在文件内容中查找字符,搜索指定的字符串
    • /libai:搜索字符串libai
    • n:查找下一个
    • N:查找上一个
  • s/p1/p2
    • 在当前行用p2替换第一个p1
      • s/libai/liqingzhao:将当前行的第一个yibai替换为liqingzhao
    • g 替换当前行所有,否则只替换当前行第一个
      • s/abc/lucky/g:将当前行所有的abd替换为lucky
    • 替换全文
      • g/libai/s//liqizhao/g
      • g/p1/s//p2/g:将全文所有的p1替换为p2
    • 查找指定行?
      • 3,8s/abc/lucky/g
4.5.6. VIM编辑器
  • Minimal版需要安装一下VIM编辑器
    • yum install vim -y
  • vim用法与vi类似
  • 如果不正确退出编辑器,Linux会自动保存文件的副本(文件还没修改时的副本),是一个隐藏文件
    • 第一种选择:使用原来的文件
    • 第二种选择:recover,替换
    • 如何不让它跳出选择的提示信息呢?
      • rm -rf .profile.swp(.文件名.swp)

4.6. 计算机间的数据传输

4.6.1. Windows——Linux
  • lrzsz
    • 需要手动安装
      • yum install lrzsz -y
    • rz上床
      • 将文件从Windows上传到Linux
      • 直接输入rz,弹出文件选择窗口,选择文件后即可上传
    • sz下载
      • 将文件从Linux下载到Windows
      • 输入sz 文件名
  • xftp
    • 较为通用的文件传输方式
    • 在XShell中点击新建文件传输,可以直接打开XFTP进行文件传输
    • Linux完美学习笔记_第11张图片
    • 选择两边的路径,将要传输的文件右击选择“传输”即可
4.6.2. Linux——Linux
  • scp 源数据地址(source) 目标数据地址(target)
  • 把自己的文件传给别人:
    • Linux完美学习笔记_第12张图片
  • 从别人那边把文件拿过来:
    • Linux完美学习笔记_第13张图片
  • 传输文件夹只要加上-r即可

4.7. 文件大小

  • 分区信息
    • df -h
  • 查看指定文件大小
    • du -h --max-depth=1 anaconda-ks.cfg
  • 查看指定文件目录大小
    • du -h --max-depth=1 /root
  • swap
    • 一个特殊分区,以硬盘代替内存,称为交换区
    • 当内存使用满的时候,可以将一部分数据写出到swap分区

4.8. 文件压缩

4.8.1. tar
  • 主要针对的文件是 .tar.gz
  • 解压缩
    • tar -zx(解压)v(过程)f(文件) xxx.tar.gz
    • tar -zxvf profile.tar.gz
  • 压缩
    • tar -zc(压缩)f(文件) xxx.tar.gz(压缩后的名字) xxx(源文件)
    • tar -zcf test.tar.gz test
    • 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域名劫持

    • Windows–>C:\Windows\System32\drivers\etc\hosts
    • 123.56.138.186www.baidu.com
    • 123.56.138.186www.taobao.com
  • 修改主机域名

    • vi /etc/hosts,将IP地址以及对应的名称输入即可
    • 将来我们需要把所有的虚拟机都配置hosts文件,例如可以使用ping 名称来代替ping IP地址
    • 192.168.31.101 bd1601
    • 192.168.31.102 bd1602

5.3. 网络相关命令

  • ifconfig
    • 查看当前网卡的配置信息
    • 这个命令属于net-tools中的一个命令,但是CentOS7中Minimal版并没有集成这个包
    • 所以使用的时候需要自己手动安装
      • yum install net-tools -y
    • 如果没有ifconfig,可以使用ip addr临时代替
  • netstat
    • 查看当前网络的状态信息
    • 一个机器默认有65535个端口[0,65535]
    • 这是一个逻辑的概念,将来我们需要使用程序监听指定的端口,等待别人的访问
    • 一个端口只能被一个程序所监听,端口已经被占用
    • netstat -anp,查看开启的端口
    • netstat -r,查看核心路由表 == route
  • ping
    • 查看与目标地址是否能够连通
  • telnet
    • 查看与目标IP的指定端口是否能够连通
    • yum install telnet -y
    • telnet 192.168.222.200 22
  • curl
    • restul风格,我们所有的资源在网络中都有唯一的定位
    • 那么我们可以通过这个唯一定位标识指定的资源
    • curl -X GET http://www.baidu.com

5.4. 防火墙

  • 防火墙技术是通过有机结合各类用于安全管理与筛选的软件和硬件设备,帮助计算机网络于其内、外网之间构建一道相对隔绝的保护屏障,以保护用户资料与信息安全性的一种技术

  • 在CentOS7+中,使用firewalld代替以前的 iptables;

    • #查看防火墙状态
      systemctl status firewalld.service
      
      #临时停止firewall
      systemctl stop firewalld.service	#开启换成start
      
      #禁止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. 加密算法

5.5.1. 不可逆加密算法
  • 可以通过数据计算加密后的结果,但是通过结果无法计算出加密数据
  • 应用场景
    • Hash算法常用在不可还原的密码存储、信息完整性校验
    • 文档、音视频文件、软件安装包等用MD5新老摘要对比是否一样(接收到的文件是否被修改)
    • 用户名或者密码加密后数据库存储(数据库大多数不会存储关键信息的名明文,就像很多登录功能的忘记密码不能找回,只能重置)
5.5.2. 对称加密算法
  • Symmetric Key Encryption
  • 代表性算法有:DES、3DES、Blowfish、IDEA、RC4、RC5、RC6和AES
  • 特点
    • 加密和解密使用相同的密钥
  • 优点
    • 生成密钥的算法公开、计算量小、加密速度快、加密效率高、密钥较短
  • 缺点
    • 对方共同的密钥,有一方密钥被窃取,双方都影响
    • 如果为每个客户都生成不同的密钥,则密钥数量巨大,密钥管理有压力
  • 应用场景
    • 登录信息用户名和密码加密、传输加密、指令加密
  • 案例
    • 原文:今晚八点操场见
    • 密钥:love
    • 算法:AES
    • 加密文:U2FsdGVkX1/NEBU6Z0HjlGL+BhCAabZD0ApyQU1MHAwXJIYPq4xkNDkV9by++ikr
5.5.3. 非对称加密算法
  • Asymmetric Key Encryption
  • 非对称加密算法需要一对密钥(两个密钥):
    • 公开密钥(publickey)和私有密钥(privatekey)(简称公钥、私钥)
    • 公开密钥与私有密钥生成时是一对的
    • 用公钥加密只能是对应的私钥解密,同理用私钥加密只能用对应的公钥解密
  • 代表性算法有:RSA、ECC、Diffie-Hellman、EI Gamal、DSA(数字签名用)
  • 优点:
    • 安全高(几乎很难破解)
  • 缺点
    • 加解密相对速度慢、密钥长、计算量大、效率低
  • 应用场景
    • HTTPS(SSL)证书里制作、CRS请求证书、金融通信加密、蓝牙等硬件信息加密配对传输、关键的登录信息验证。

5.6. 主机间的相互免密钥

  • 可以通过ssh命令免密钥连接到其他的主机
  • 相互免密钥
    • 生成密钥
      • ssh-keygen -t rsa -P ‘’ -f ~/.ssh/id_rsa
      • Linux完美学习笔记_第15张图片
    • 如果你想免密钥登录谁,只需要把自己的公钥传递给对方主机即可
      • 这个密钥要放在 ~/.ssh/authorized_keys
      • ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]
      • image-20220204132308014
    • 这时候再输入ssh命令就可以直接登录对方主机了
      • image-20220204132130602
  • 原理:

5.7. 主机名与Host校验

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

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

    • 修改/etc/ssh/ssh_config 文件的配置,以后则不会再出现此问题
    • 在原本的最后一行之后另起一行添加:
    StrictHostKeyChecking no
    UserKnownHostsFile /dev/null
    

6. 日期与时间

6.1. 时间命令

  • date
    • 查看当前系统时间
  • cal查看日历
    • cal 2022
  • 修改时间
    • 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
    • 客户端同步时间
      • ntpdate 192.168.222.100

7. 用户-组-权限

7.1. 用户

  • 新增用户
    • useradd luckyboy
    • 会创建同名的家目录
      • 家目录~:/home下同用户名的目录,eg——/home/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. 权限

  • 查看文件的权限
    • 三组权限,每组3个字母
      • r:读取权限 read
      • w:写入权限 write
      • x:执行权限 execute
      • -:没有权限
    • root:所属用户(属主)
    • root:所属的组(属组)
  • 权限的UGO模型
    • 三组权限(user用户, group组, other其他)
    • 属主的权限:属组的权限:其他的权限
    • 所以说:将来修改文件的权限,可以从 rwx 和UGO两个方面进行修改
  • 修改文件的权限
    • 修改文件所属 change owner
      • chown n1 /var/lucky1 #修改该目录的所属主为n1
      • chown n1:m1 /var/lucky2 #修改该目录的所属主为n1,所属组为m1
      • 修改文件夹时,让子目录迭代修改,否则只会赋予操作文件夹的权限,不会将该文件夹的子文件夹的权限赋予出去
        • chown -R n1:m1 school ##修改该目录及其所有子目录的所属主为n1,所属组为m1
      • chgrp m2 lucky3 #修改该目录的所属组为n1
        • 当用户的组被修改之后,需要重新登录才能获取新组的权限
    • 修改文件的rwx change
      • chmod o+w lucky4 #o其他用户+加上w写入权限
      • chmod ug+rw lucky4 #ug所属用户和所属组+加上rw读取和写入权限
      • chmod ugo-rw lucky4 #ugo所属用户、所属组和其他用户+减去rw读取和写入权限
      • (权限 rwx 以二进制形式分别对应数字 4 2 1。5=4+0+1 r-x)
        • chmod 664 lucky4 ——> (rw-rw-r–)

Linux完美学习笔记_第16张图片

7.4. 权限赋予

  • 我们可以将管理用的权限分配给普通用户
  • 文件位置在 vim /etc/sudoers
  • 但是这个文件为只读文件,默认是无法修改的,如需修改这个文件需要使用命令
    • visudo

    • 修改 Line 101:用户名 ALL=(root) 需要执行的命令文件位置

    • n1 ALL=(root) /sbin/useradd #可以使用useradd命令

    • n1 ALL=(root) /sbin/* #可以使用sbin下的所有命令

    • Linux完美学习笔记_第17张图片

8. 管道与重定向

8.1. 管道

  • 将前面命令的结果作为参数传递给后面的命令
  • eg:head -10 profile | tail -1 #查看第十行
  • grep
    • 强大的文本搜索工具
    • cat profile | grep if
    • ls / | grep ^t

8.2. 重定向

  • 改变数据输出的位置、方向
  • 0 in 1 out 2 err
    • ls / 1> lucky
    • ls / > lucky    #1为正确输出,可以省略不写
    • ls abcd 2>lucky #2为错误输出,比如错误的路径,不可省略
  • >:替换;>>:追加
    • 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:当前进程编号的父进程编号
  • 查找某一进程

    eg:
    ping www.baidu.com >> baidu
    ps -ef | grep baidu
    
  • ps -aux 查看进程的所有信息

    • 包括CPU使用率:%CPU%
    • 包括内存使用率:%MEM%
  • ps -aux --sort-pcpu 排序

  • top

    • 当前服务器内存使用率情况
  • Linux中所有进程都被实际化成文件

    • cd /proc

9.2. 后台进程

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

9.3. 杀死进程

  • 关闭一个进程:kill -9 进程编号

10. Linux的软件安装

10.1. 环境变量

  • 当我们执行一个命令的时候,默认从当前路径开始查找
  • 如果当前路径找不到对应的命令文件,从环境变量$PATH查找
    • echo $PATH:打印当前的系统变量
  • $PATH的配置文件在 /etc/profile
  • Windows路径与路径之间用 ; (分号)连接
  • Linux路径与路径之间用 : (冒号)连接
  • Linux每次修改完成之后,需要重新加载文件 source /etc/profile
  • 系统环境变量文件:cd /etc/profile
  • 用户环境变量文件:ll -a ——> /root/.bash_profile

10.2. 软件安装

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

10.3. RPM安装

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

    • Debin的可执行文件后缀名 deb
  • 通过RPM命令安装软件

    • rpm -ivh xxx.rpm
  • 可以查询软件

    • rpm -qa:查询所有安装的软件
    • 查询jdk的安装:rpm -qa | grep jdk
  • 卸载

    • rpm -e 文件名
      • 例如卸载jdk:
      • 首先查找jdk安装后对应的文件名:rpm -qa | grep jdk ——> jdk-17-17.0.2-ga.x86_64
      • 然后就可卸载了:rpm -e jdk-17-17.0.2-ga.x86_64
  • 需要手动配置 Java 的环境变量

    find / -name java
    '''
    /etc/alternatives/java
    /etc/pki/ca-trust/extracted/java
    /etc/pki/java
    /var/lib/alternatives/java
    /usr/bin/java
    /usr/java
    /usr/java/jdk-17.0.2/bin/java
    '''
    cd /usr/java
    ll
    '''
    total 0
    lrwxrwxrwx  1 root root  16 Feb  8 11:14 default -> /usr/java/latest
    drwxr-xr-x 10 root root 149 Feb  8 11:14 jdk-17.0.2
    lrwxrwxrwx  1 root root  20 Feb  8 11:14 latest -> /usr/java/jdk-17.0.2
    '''
    cd jdk-17.0.2 #ll后发现有bin、conf等目录,说明jdk就是安装在这里了
    
    vim /etc/profile
    export JAVA_HOME=/usr/java/jdk-17.0.2
    export PATH=$JAVA_HOME/bin:$PATH
    
    #最后重新加载配置文件即可:
    source /etc/profile
    

10.4. 压缩包解压安装

  • 解压文件

  • tar -zxvf apache-tomcat-8.5.75.tar.gz

  • cd /opt/apache-tomcat-8.5.75/
    cd ./bin/
    ./startup.sh #开启tomcat
    ps -ef | grep tomcat #查看tomcat进程信息
    '''
    root      13607      1 14 13:23 pts/0    00:00:03 /usr/java/jdk-17.0.2/bin/java -Djava.util.logging.config.file=/opt/apache-tomcat-8.5.75/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Dorg.apache.catalina.security.SecurityListener.UMASK=0027 -Dignore.endorsed.dirs= -classpath /opt/apache-tomcat-8.5.75/bin/bootstrap.jar:/opt/apache-tomcat-8.5.75/bin/tomcat-juli.jar -Dcatalina.base=/opt/apache-tomcat-8.5.75 -Dcatalina.home=/opt/apache-tomcat-8.5.75 -Djava.io.tmpdir=/opt/apache-tomcat-8.5.75/temp org.apache.catalina.startup.Bootstrap start
    root      13662   7051  0 13:24 pts/0    00:00:00 grep --color=auto tomcat
    '''
    
    ./shutdown.sh ##关闭tomcat
    
  • Linux完美学习笔记_第18张图片

  • 修改网页显示的页面内容:vim /opt/apache-tomcat-8.5.75/webapps/ROOT/index.jsp

10.5. yum安装

10.5.1. yum的作用
  • 可以帮我们管理RPM包
  • 可以帮我们安装软件
  • 如果软件有其他依赖,会帮我们安装依赖后再安装软件
  • 类似于Maven
10.5.2. yum命令
  • search 查询命令或者软件

    yum search ifconfig
    '''
    Loaded plugins: fastestmirror
    Loading mirror speeds from cached hostfile
     * base: mirrors.dgut.edu.cn
     * extras: mirrors.aliyun.com
     * updates: mirrors.aliyun.com
    ========= Matched: ifconfig ==========
    net-tools.x86_64 : Basic networking tools
    '''
    yum install net-tools -y
    
    ifconfig
    
  • info

    • 查看包的信息
    • eg:yum info net-tools
  • list / list jdk

    • 查询安装的rpm包,或者只查询某一周
    • yum list:查询所有安装的jdk包
    • yum list | grep jdk
10.5.3. 更换yum源
  • Linux的yum进行软件安装时,默认从本机IP地址就近寻找服务器进行下载,缺点是有的服务器不够稳定,因此以下将yum源直接长期更换为阿里云,以后下载资源就统一从阿里云进行下载。

  • ①首先安装 wget

    • yum install wget -y
  • ②将系统原始配置文件失效

    • mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
    • 原始配置文件:

    [root@CentOS7201810 etc]# cd /etc/yum.repos.d/
    [root@CentOS7201810 yum.repos.d]# ll
    total 32
    -rw-r–r--. 1 root root 1664 Nov 23 2018 CentOS-Base.repo
    -rw-r–r--. 1 root root 1309 Nov 23 2018 CentOS-CR.repo
    -rw-r–r--. 1 root root 649 Nov 23 2018 CentOS-Debuginfo.repo
    -rw-r–r--. 1 root root 314 Nov 23 2018 CentOS-fasttrack.repo
    -rw-r–r--. 1 root root 630 Nov 23 2018 CentOS-Media.repo
    -rw-r–r--. 1 root root 1331 Nov 23 2018 CentOS-Sources.repo
    -rw-r–r--. 1 root root 5701 Nov 23 2018 CentOS-Vault.repo

  • ③使用 wget 获取阿里 yum 源配置文件

    • wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo
    • wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
    • 这里一定要主要前面的CentOS中OS大写,后面的Centos中os是小写的!!!
  • ④清空以前 yum 源的缓存

    • yum clean all
  • ⑤获取阿里云的缓存

    • yum makecache
    • 如果获取阿里云缓存中有出现失败的情况,则重复 ④⑤ 步骤即可

10.6. 安装MySQL数据库

  • MySQL的下载地址

    • https://downloads.mysql.com/archives/community/
  • MySQL安装

    • 安装部分截图
    • Linux完美学习笔记_第19张图片
    • 更改密码部分截图
    • Linux完美学习笔记_第20张图片
    #---------安装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
    '''systemctl status mysqld 查看MySQL的运行状态'''
    
    #---------查找密码并登录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链接地址(因为这里MySQL只能默认本地登录,修改为其他主机也能登录)
    use mysql;
    update user set host='%' where user = 'root'; #'%'待变任意一个路径
    commit;
    exit;
    
    systemctl restart mysqld
    #---------使用Nacicat链接MySQL
    

    Linux完美学习笔记_第21张图片

    • 关闭MySQL服务:systemctl stop mysqld

11. Linux的三剑客

11.1. 普通剑客

  • cut

    • 用指定的规则来切分文本

    • cut -d ‘:’ -f1,2,3 passwd | grep school

    -d ':' 按照冒号切分

    -f1,2,3 按冒号切分后,取1、2、3列的内容

    passwd 要切分文本的文件名

    | grep school 查找passwd文件中’school’文本

    • eg:
  • sort

    • sort lucky

      • 对文本中的行进行排序
    • sort -t ‘:’ -k2 lucky

      • 对每一行的数据进行使用:切分,-k2按照第二列进行排序
      • eg:其排序按照字符串进行排序,先比较第一位,再比较第二位,如下图所示(bin:x:1​有些奇怪)
    • sort -t ’ ’ -k2 -r lucky

      • -r逆序
    • sort -t ’ ’ -k2 -n lucky

      • -n按照数值大小进行排序,如果有字母,字母在前
  • wc

    • 统计词的数量 word count
    • wc lucky
    • 4 15 79 lucky
      • -l line
      • -w word:以空格来分隔单词
      • -c char

11.2. 剑客1号:grep

  • 可以对文本进行搜索
    • 一般以管道形式进行查找
    • ps -ef | grep root
  • 同时搜索多个文件中内容
    • grep从文档中查询指定的数据,而find命令用来查找文件
    • grep adm passwd #从passwd文件中查找adm内容
    • grep school passwd lucky #从passwd文件和lucky文件中查找adm内容
  • -n显示匹配的行号
    • grep -n school passwd
  • -nvi显示不匹配的忽略大小写
    • grep -nvi school passwd --color=auto
  • -E使用正则表达式匹配
    • 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
  • 行的选择模式 sed 'XXX
    • 10 第十行
    • m,n -->第m行到第n行 [m,n]
    • m,+n -->第一行到第四行 [m,m+n]
    • m~n -->从m行开始,依次累加n行
    • m,$ -->从m开始到最后一行
    • /school/ -->匹配到school的行
    • /u1/,/u4/ -->从匹配u1到匹配u4
  • 增 a
    • sed ‘2a luckyisgood’ passwd #sed '2a 在passwd文件第二行的后面(append)追加luckyisgood
      • 这种方法只会将追加的信息打印出来,并不会直接追加到文件中
    • sed -i ‘2a luckyisgood’ passwd
      • -i 会直接将追加的信息保存到文件中,且不会打印出来
  • 删 d
    • sed ‘3,10d’ passwd #删除passwd文件的第3行到第10行
    • 整行替换 c
      • sed ‘3,20c hahaha’ passwd #将passwd文件的第3行到第20行替换为hahaha
      • sed ‘3~2c hehehe’ passwd #在passwd文件的第3行开始,~2每隔两行,将整行替换为hehehe
    • 字符替换 s
      • 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
    - awk -F ":" 'NR==1{print NR,$1}NR==2{print NR,$NF}' /etc/passwd
    

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