环境准备

  • 文档阅读

    https://man.linuxde.net/

  • Centos 连接用户信息

    1
    2
    login: root
    passwd: root
  • 系统版本查看

    1
    cat /etc/redhat-release
  • 基本权限符

    1
    2
    3
    4
    5
    # 超级用户提示符

    $ 普通用户提示符

    ~ 当前所在家目录

主机名修改

  • 查看主机名

    1
    hostname
  • centos7 主机名文件方式修改

    1
    2
    3
    4
    5
    6
    7
    8
    9
    # centos 信息查看
    cat /etc/redhat-release
    显示: CentOS Linux release 7.9.2009 (Core)

    # [root@xxxxxx] -> 修改 xxxx 的名称
    vim /etc/hostname

    # 重启
    reboot
  • 命令行修改(推荐)

    1
    2
    # root 用户
    hostnamectl set-hostname "coder-itl"
    主机名修改
  • 域名解析

    可以通过主机名找到对应计算机的IP 地址,这就是主机名映射(域名解析)

关闭防火墙

  • 临时关闭防火墙

    1
    2
    3
    4
    # 检查防火墙状态
    systemctl status firewalld
    # 关闭防火墙
    systemctl stop firewalld
  • 永久关闭防火墙

    1
    systemctl disable firewalld  
  • 关闭selinux

    1
    2
    vim /etc/selinux/config
    # disable

关机与重启

  • 关机指令

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    # 扣除电池式关机
    halt 0

    # 按下关机键式关机(不关心正在运行的任务)
    poweroff

    # 定时关闭
    shutdown -h now (立即关机)
    shutdown -h 10 (定时关机: 10)

  • 重启

    1
    reboot

ISO镜像源

  • Centos7 镜像文件下载地址

    http://mirrors.aliyun.com/centos/7/isos/x86_64/

    1
    2
    3
    4
    5
    6
    7
    8
    # 镜像文件信息解释
    CentOS-7.0-x86_64-DVD-1503-01.iso 标准安装版,一般下载这个就可以了(推荐)
    CentOS-7.0-x86_64-NetInstall-1503-01.iso 网络安装镜像(从网络安装或者救援系统)
    CentOS-7.0-x86_64-Everything-1503-01.iso 对完整版安装盘的软件进行补充,集成所有软件。(包含centos7的一套完整的软件包,可以用来安装系统或者填充本地镜像)
    CentOS-7.0-x86_64-GnomeLive-1503-01.iso GNOME桌面版
    CentOS-7.0-x86_64-KdeLive-1503-01.iso KDE桌面版
    CentOS-7.0-x86_64-livecd-1503-01.iso 光盘上运行的系统,类拟于winpe
    CentOS-7.0-x86_64-minimal-1503-01.iso 精简版,自带的软件最少
  • 镜像源下载

    所有镜像下载列表:http://isoredirect.centos.org/centos/7

    163 镜像源下载: http://mirrors.163.com/centos/7.9.2009/isos/x86_64/CentOS-7-x86_64-DVD-2207-02.iso

软件镜像源

  • 镜像源地址

    • 阿里镜像源: https://developer.aliyun.com/mirror/

    • 网易镜像源: https://mirrors.163.com/

    • 更换阿里云源

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      # 注意权限问题
      yum install -y wget
      mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bk
      cd /etc/yum.repos.d
      wget -nc http://mirrors.aliyun.com/repo/Centos-7.repo
      mv Centos-7.repo CentOS-Base.repo
      # 全部清除
      yum clean all
      # 更新列表
      yum list
      # 缓存yum包信息到本机,提高搜索速度
      yum makecache
      # 更新 yum
      yum update -y
  • 软件包安装

    • Centos7 默认未安装重要的包

      软件包名 包含的核心命令
      psmisc 含有killall 、pstree 等命令
      net-tools 含有netstat,ifconfig,route,arp 等命令
      properties-completion
      properties-completion-extras
      tab 补全功能工具包
      vim-enhanced vim 编辑器工具包
      • 运维常用包安装

        1
        2
        yum install -y tree nmap dos2unix lrzsz nc lsof wget tcpdump htop iftop iotop sysstat nethogs psmisc  vim-enhanced
        properties-completion properties-completion-extras net-tools

SSH 远程

  • 端口占用查看

    1
    yum install -y nmap
    查看所有开放使用的端口
  • 检测端口号占用问题

    1
    2
    3
    4
    5
    # netstat -> net-tools 安装后使用
    yum install -y net-tools
    # 查看指定端口信息
    netstat -anp|grep 端口号
    lsof -i:端口号
    检测端口号占用 PID
    0.0.0.0:22

    如图,可以看到当前系统的8080 端口被程序(进程号5928)占用了

    0.0.0.0:22,表示所有IP 都可以访问22 端口

    无输出,表示该端口处于空闲状态
  • SSH 修改配置文件

    1
    2
    3
    4
    5
    6
    7
    8
    vim /etc/ssh/ssh_config 
    # 过滤
    esc: /Port 修改端口号【2209】
    # 重启服务
    service sshd restart
    # 验证连接
    1. 连接方式一: ssh -l用户名 ip -p端口号
    2. ssh 用户名@ip:port 【ip: 使用内网自定义ip可用于连接】
    ssh

设置默认登录用户为 Root

  • 设置默认登录用户为 Root

    • 如果安装过程中为设置root 用户,修改root 用户密码

      1
      2
      # 重置 root 用户密码,根据提示输入当前账户的密码和 root 的新密码两次
      sudo passwd root
    • 切换为root 用户

      1
      2
      su -
      # 输入 root 用户密码
    • 设置默认登录用户为root

      1
      2
      # 编辑自定义文件
      vim /etc/gdm/custom.conf
      • [daemon] 加入两行

        1
        2
        3
        4
        5
        6
        [daemon]
        AutomaticLoginEnable=True
        AutomaticLogin=root
        [security]
        ...
        # 保存退出
      • 重启

        1
        reboot
  • 提升普通用户为root 权限

    • 要将用户添加到sudoers 文件中,请以root 用户身份执行以下步骤
    1
    2
    3
    4
    # 切换 root 用户
    su - root
    # 使用 root 用户执行如下
    sudo visudo
    • 在文件的底部添加以下行,其中 coderitl 是要添加到sudoers 文件中的用户名,添加后保存退出

      1
      coderitl  ALL=(ALL:ALL) ALL

Linux 命令

  1. 创建目录

    1
    mkdir -p [目录名] (-p递归创建)
  2. 删除目录

    1
    rm -rf 【目录名】  【-r 删除目录   -f 强制】
  3. 复制

    1
    2
    3
    4
    5
    6
    cp [选项] [原文件或目录] [目标目录]

    -r 复制目录
    -p 连带文件属性复制
    -d 若源文件是链接文件,则复制链接属性
    -a == -pdr
  4. 重命名

    1
    2
    mv [在移动的基础上进行重命名]
    cp xx xx
  5. 文件搜索命令

    • find 名令基础使用

    • grep 命令

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      grep 【选项】 字符串 文件名

      选项:

      -i 忽略大小写

      -v 排除指定字符串

      grep "size" 文件名(xxx)(在xxx 中查找 size 相关的字符串 )

      grep -v "size" 文件名(xxx)(在 xxx 中不查找 size 相关的字符串 )
    • find grep 的区别

      1
      2
      3
      find 命令: 在系统当中搜索费和条件的文件名,如果需要匹配,使用通配符匹配,通配符是完全匹配

      grep 命令: 在文件当中搜索符合条件的字符串,如果需要匹配,使用正则表达式进行匹配,正则表达式包含匹配
  6. 帮助命令

    1
    2
    3
    man 

    help

常见目录

  • linux 常用目录

    1
    2
    3
    4
    5
    6
    7
    8
    9
    + / 根目录
    + /bin 命令保存目录(普通用户就可以读取)
    + /boot 启动目录,启动相关文件
    + /dev 设备文件保存目录
    + /etc 配置文件保存目录
    + /home 普通用户家目录
    + /lib 系统库保存目录
    + /mnt 系统挂载目录
    + /media 挂载目录

压缩与解压缩

tar-压缩
  • Linux Mac 系统常用有两种压缩格式,后缀名分别是

    • .tar: 称之为tarball,归档文件,即简单的将文件组装到一个.tar 的文件内,并没有太多文件体积的减少,仅仅是简单的封装
    • .gz: 也常见为.tar.gz,gzip 格式压缩文件,即使用gzip 压缩算法将文件压缩到一个文件内,可以极大的减少压缩后的体积
  • 语法

    1
    tar [-c -v -x -f -z -C] 参数1 参数2 ... 参数N
    • -c: 创建压缩文件,用于压缩模式
    • -v: 显示压缩,解压过程,用于查看进度
    • -x: 解压模式
    • -f: 要创建的文件,或要解压的文件,-f 选项必须在所有选项中位置处于最后一个
    • -z: gzip 模式,不使用-z 就越是普通的tarball 格式
    • -C: 选择解压的目的地,用于解压模式
  • tar 命令压缩

    1
    2
    # 将 1.txt 2.txt 3.txt 压缩到 test.tar 文件内
    tar -cvf test.tar 1.txt 2.txt 3.txt
    -cvf => .tar
    1
    2
    # 将 1.txt 2.txt 3.txt 压缩到 test.tar.gz 文件内,使用 gzip 模式
    tar -zcvf test.tar.gz 1.txt 2.txt 3.txt
    -zcvf => .tar.gz
  • 压缩大小比较

    压缩大小比较(10240(.tar)>142(.tar.gz))
tar-解压
  • 常见组合

    1
    2
    # 解压 test.tar 将文件解压到当前目录
    tar -xvf test.tar
  • 解压到指定目录

    1
    2
    # 将  test.tar 解压到 /opt/txt 目录下(解压的目录必须存在)
    tar -xvf test.tar -C /opt/txt
  • .tar.gz 解压

    1
    2
    # 以 gzip 模式解压 test.tar.gz 并将文件解压到指定目录
    tar -zxvf test.tar.gz -C /opt/txt
    解压
zip-压缩
  • 可以使用zip 命令,压缩文件为zip 压缩包

  • 安装

    1
    apt-get install -y zip(ubuntu)| yum install -y zip(centos)
  • 语法

    1
    zip [-r] 参数1 参数2 ... 参数N
    • 选项-r: 被压缩的包含文件夹的使用,需要使用-r 选项,rm,cp 等命令的-r 效果一致
  • 实例

    1
    2
    # 将 1.txt 2.txt 3.txt 压缩到 test.zip 文件内
    zip test.zip 1.txt 2.txt 3.txt
    压缩
    1
    2
    # 将 test 文件夹,txt文件夹 1.txt 文件压缩到 test.zip 文件内
    zip -r test.zip test txt 1.txt
    -r
zip-解压
  • 使用unzip 命令,可以方便的解压zip 压缩包

  • 安装

    1
    yum install -y unzip
  • 语法

    1
    unzip [-d] 参数
    • 选项-d: 指定要解压去的位置,tar -C 选项
    • 参数: 被解压的zip 的压缩包文件
    解压

日期与时间

  • date 命令可以在命令行中查看系统的时间

  • 语法

    1
    date [-d] [+格式化字符串]
    • 选项-d: 按照给定的字符串显示日期,一般用于日期计算
    • 格式化字符串: 通过特定的字符串标记,来控制显示的日期格式
      • %Y: 年
      • %y:年份后两位数字
      • %m: 月份
      • %d: 日
      • %H: 小时
      • %M: 分钟
      • %S: 秒
      • %s:1970-01-01 00:00:00 UTC 到现在的秒数
  • 查看时间

    1
    date
  • 格式化输出

    1
    2
    3
    4
    # 年月日
    date +%Y-%m-%d
    # 输出年月日时分秒
    date "+%Y-%m-%d %H:%M:%S"
    有空格使用引号包裹
  • -d

    具体使用
    • 支持的时间标记
      • year
      • month
      • day
      • hour
      • minute
      • second
  • 查看日历

    1
    cal 2022
    日历
  • 时区概念

    • 时区信息

      CST
    • UTC(世界标准时间)

      协调世界时,又称世界标准时间或世界协调时间,简称UTC(从英文Coordinated Universal Time是最主要的世界时间标准,其以原子时秒长为基础,在时刻上尽量接近于格林尼治标准时间。

    • GMT(格林尼治平时)

      格林尼治平时(又称格林尼治平均时间或格林尼治标准时间,旧译格林威治标准时间;英语:Greenwich Mean TimeGMT)是指位于英国伦敦郊区的皇家格林尼治天文台的标准时间,因为本初子午线被定义在通过那里的经线。

      理论上来说,格林尼治标准时间的正午是指当太阳横穿格林尼治子午线时(也就是在格林尼治上空最高点时)的时间。由于地球在它的椭圆轨道里的运动速度不均匀,这个时刻可能与实际的太阳时有误差,最大误差达16 分钟。

      由于地球每天的自转是有些不规则的,而且正在缓慢减速,因此格林尼治时间已经不再被作为标准时间使用。现在的标准时间,是由原子钟报时的协调世界时(UTC)。

    • CST(北京时间)

      北京时间,China Standard Time,中国标准时间。在时区划分上,属东八区,比协调世界时早8 小时,记为UTC+8

    • 修改时区

      1
      2
      rm -f /etc/localtime
      sudo ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
      时区校准(东八区)
  • 日期自动同步

    1
    2
    3
    4
    5
    6
    7
    yum install -y ntp
    # 启动服务
    systemctl start ntpd
    # 设置为开机自启
    systemctl enable ntpd
    # 同步时间
    ntpdate -u cn.ntp.org.cn / ntp.aliyun.com

Chmod

  • 标识

    标识 详细说明
  • 权限修改

    权限项 读 写 执行 读 写 执行 读 写 执行
    字符表示 r w x r w x``r w x
    数字表示 4 2 1(所有权限:4+2+1=7)
    1
    2
    3
    # 777
    chmod 777 app.sh
    # 741 文件所有者(7:读 写 执行) 文件所属用户组(4:读) 其他用户(1: 执行)
    741

Chown

  • 作用

    使用chown 命令,可以修改文件,文件夹的所属用户和用户组

    普通用户无法修改所属为其他用户或组,所以此命令只适用于root 用户执行

  • 语法

    1
    chown [-R] [用户][:][用户组] 文件或文件夹
    • 选项-R,同chmod,对文件夹内全部内容应用相同规则
    • 选项用户,修改所属用户
    • 选项用户组,修改所属用户组
    • : 用于分割用户和用户组
  • 示例

    • chown root hello.txt hello.txt 所属用户修改为root
    • chown :root hello.txt hello.txt 所属用户组修改为root
    • chown root:coderitl hello.txt hello.txt 所属用户修改为root,所属用户组修改为coderitl
    • chown -R root test 将文件夹test 的所属用户修改为root 并对文件夹内部全部内容应用同样规则

文件查看

  • 文件查看

    • more less

      1
      2
      3
      more cat都是一次性读取所有内容到内存,不适合读取大文件,占资源

      less命令是显示多少文本,消耗多少内存,省资源
    • head tail 命令

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      # head
      head默认查看文件前10
      # 查看指定行 前5
      head -5 文件
      # tail
      tail 默认查看文件后 10 行
      tail -5 文件


      tail -f 日志文件
      测试使用

统计

  • 统计

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    # 列出当前目录下所有的文本内容行数
    [root@localhost ~]# wc -l ./*
    18 ./aa.txt
    48 ./anaconda-ks.cfg
    18 ./bb.txt
    18 ./cc.txt
    9 ./replace-yum-repo.sh
    wc: ./zookeeper3.5.7: 是一个目录
    0 ./zookeeper3.5.7
    wc: ./zulu8: 是一个目录
    0 ./zulu8
    111 总用量
    [root@localhost ~]# ^C

    # 统计 aa.txt 文本行数
    [root@localhost ~]# wc aa.txt

统计文件大小

  • du

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    -h: 表示可以高可读性的形式进行显示,如果不写 -h 默认以 kb 的形式显示文件大小
    # 实例
    du -h *
    # 查看日志占用大小
    [root@localhost ~]# du -sh /var/log
    3.4M /var/log

    # 查看 anaconda 占用的磁盘大小
    [root@localhost log]# du -sh anaconda/*
    24K anaconda/anaconda.log
    4.0K anaconda/ifcfg.log
    1.7M anaconda/journal.log
    0 anaconda/ks-script-Ppd1S0.log
    0 anaconda/ks-script-q3qgzU.log
    112K anaconda/packaging.log
    32K anaconda/program.log
    88K anaconda/storage.log
    240K anaconda/syslog
    24K anaconda/X.log
    [root@localhost log]#

grep

  • 在指定文件中查找关键字

    1
    2
    3
    grep 'keyword' -n test.txt
    # 打开时编辑指定行
    vim +n FileName
    查找
    1
    2
    3
    4
    5
    # 在系统安全查看与 root 相关的
    [root@localhost ~]# grep -n 'root' /var/log/secure
    7:Aug 11 21:25:51 localhost login: pam_unix(login:session): session opened for user root by LOGIN(uid=0)
    9:Aug 11 17:36:58 localhost sshd[16274]: Accepted password for root from 192.168.247.1 port 13418 ssh2

    1
    2
    # 在多个文件中查找
    grep 'keyword' ./*
    在多个文件中查找
    1
    2
    # 忽略大小写
    grep 'info' -i -n a.txt
    忽略大小写
  • 管道符

    1
    2
    3
    4
    5
    6
    # 命令 1: 拿到用户文件信息 | 交给 grep 去过滤
    [root@localhost test]# cat /etc/passwd | grep 'root'
    root:x:0:0:root:/root:/bin/properties
    operator:x:11:0:operator:/root:/sbin/nologin
    [root@localhost test]#

  • 文件过滤

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    # 不使用管道符 将所有后缀包含 txt 的文件信息汇总到 all.txt
    find / -name '*.txt' > all.txt

    # 查找文件为 txt 并且与 zookeeper 相关的文件名
    [root@localhost test]# find / -name '*.txt' | grep 'zookeeper'
    /root/zookeeper3.5.7/lib/jline-2.11.LICENSE.txt
    /root/zookeeper3.5.7/lib/netty-buffer-4.1.45.Final.LICENSE.txt
    /root/zookeeper3.5.7/lib/netty-common-4.1.45.Final.LICENSE.txt
    /root/zookeeper3.5.7/lib/netty-transport-native-epoll-4.1.45.Final.LICENSE.txt
    /root/zookeeper3.5.7/lib/netty-transport-4.1.45.Final.LICENSE.txt


    # 找出文件内容
    root@localhost test]# find / -name '*.txt' | grep 'apache' ./*
    ./a.txt:apache1
    ./b.txt:apache2
    ./c.txt:apache3

  • 进程过滤

    1
    2
    3
    4
    # 进称过滤
    [root@localhost test]# ps -ef | grep mysql
    root 83472 9546 0 12:21 pts/1 00:00:00 grep --color=auto mysql

  • 检查端口

    1
    2
    3
    4
    5
    6
    7
    # 检查系统端口的命令 
    # 查看所有端口 查到 => LISTEN
    [root@VM-4-7-centos ~]# netstat -tunlp | grep 3306
    tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 1686/docker-proxy
    tcp6 0 0 :::3306 :::* LISTEN 1702/docker-proxy
    [root@VM-4-7-centos ~]#

快捷键

  • ctrl+c: 可以快速终止一些错误运行

  • ctrl+d: 快速退出,比如从python 交互界面快速退出

  • history: 历史命令查看

    • 快速执行历史命令!命令前缀,可以快速执行上一次命令

      从下往上搜索执行
  • ctrl+r: 通过模糊匹配检索历史命令执行

    • 回车执行
    • 左右键进行修改
  • 光标移动

    • ctrl+a: 跳到命令开头

    • ctrl+e: 跳到命令结尾

    • ctrl+键盘左键: 向左跳一个单词

    • ctrl+键盘右键: 向右跳一个单词

      光标快速移动
  • 清屏

    • ctrl+l
    • clear

Yum详解

  • 是什么

    yum:RPM 包软件管理器,用于自动化安装配置Linux 软件,并可以自动解决依赖问题

  • 语法

    1
    yum [-y] [install | remove | search] 软件名称 
    • 选项-y: 自动确认,无需手动确认安装或卸载过程

    • install: 安装

    • remove: 卸载

    • search: 搜索

    • 测试

      使用测试

      yum 命令需要root 权限,可以使用su 切换到root,或者使用sudo 提权

      yum 需要连接网络

  • ubuntu 系统使用apt

    • 语法

      1
      apt [-y] [install | remove | search] 软件名称 

Systemctl

  • Linux 系统很多软件(内置或第三方)均支持使用systemctl 命令控制: 启动、停止、开启自启 ,能够被systemctl 管理的软件,一般也称之为服务

  • 语法

    1
    systemctl start(启动) | stop(停止) | status(状态信息) | enable(开启开机自启) | disable(关闭开机自启)   服务名
    查看Redis 运行状态
  • 安装第三方软件

    • 时间同步ntp

    • 查看状态

      自动注册的服务名为ntpd

软连接

  • 作用

    在系统中创建软连接,可以将文件,文件夹链接到其他位置,类似Windows 系统中的快捷方式

  • 语法: ln -s 参数1 参数2

    • 选项-s: 创建软连接

    • 参数1: 被链接的文件或文件夹

    • 参数2: 要链接去的目的地

    • 实例

      1
      2
      3
      4
      5
      ln -s /etc/yum.conf ~/yum.conf
      ls -s /etc/yum ~/yum

      在软连接过程中,路径指定很重要,否则无法生效

      链接无效(路径指定问题导致) 链接正确(可以使用)

配置VIM 编辑器

基本配置

  • 配置 vim

    1
    2
    3
    4
    5
    6
    7
    8
    9
    # 创建文件写入以下配置信息
    vim .vimrc

    set nu # 显示行号
    syntax on # 高亮显示
    set ts=4 # 制表位
    set expandtab # 自动转换 tab
    set ruler # 显示光标
    set nohls # 关闭搜索高亮
  • 基本使用

    认识与使用

末行模式

  1. 显示关闭行号(按下Esc后执行)

    1
    2
    set nonu # 关闭行号
    set nu # 显示行号
  2. 制表键位数设置

    1
    set ts=4
  3. vim 下代码高亮显示

    1
    2
    syntax on # 开启
    syntax off # 关闭
  4. 光标所在位置

    1
    2
    3
    set ruler # 显示光标所在位置

    set noruler # 关闭光标显示
    显示光标所在位置
  5. 命令模式

    • 移动光标

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      G # 光标移到文件末尾
      200G # 光标移动到第 200
      gg # 光标移动到行首

      h
      j
      k
      l

      ctrl + y / ctrl + e 移动一行
      ctrl + f / ctrl + b 翻一页

      0 光标移动到行首
      $ 光标移动到行尾
      w 光标移动到下一个单词
      方向控制
    • 删除

      1
      2
      dd # 删除光标所在行
      100dd 从光标所在删除 100 行
    • 复制

      1
      2
      3
      4
      5
      6
      7
      yy # 复制光标所在行

      10yy # 光标所在行开始复制 10 行

      p # 粘贴
      10p # 粘贴 10 遍

    • 撤销恢复

      1
      2
      u # 撤销
      ctrl + r # 恢复
    • 映射快捷键

      1
      2
      3
      map  gg99999dd # 回到行首 删除 9999

      inoremap _main if __name__ == '__main__'
    • 多文件操作

      1
      2
      :ls # 查看当前打开的所有文件(类似于windows的 windows + Tab,linux只显示文件名称)
      :b 数字 # 显示指定文件
      多文件操作
    • 窗口显示(分屏)

      • 水平拆分

        1
        2
        3
        4
        sp

        # 切换窗口
        ctrl + ww
      • 垂直拆分

        1
        vs # 垂直拆分窗口
      • 退出窗口

        1
        2
        3
        qa # 水平拆分垂直窗口

        wqa # 保存并退出所有窗口
    • 中断恢复

      • shift + r

        中断恢复
      • 删除隐藏文件

        1
        2
        3
        4
        5
        # 显示隐藏文件 
        ls -a

        rm -y 上一次中断的执行文件.后缀名.swp

    • 命令别名

      1
      2
      3
      4
      # 别名: 简化输入
      alias 别名 = '命令'

      # alias nl='ls -laR' # 递归显示,
    • 查找替换

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      # 全文替换
      :1,$s/替换目标/替换为/ci # c确认 i 忽略大小写

      # 前 n 替换
      :1,10s/替换目标/替换为/ci # c确认 i 忽略大小写

      # 一行有多个需要替换就需要添加 g 参数
      :1,10s/替换目标/替换为/cg # c确认 g 全局 global

      # 直接替换
      :1,$s/替换目标/替换为

VIM 查找

? 或 /

  1. 快捷键

    1
    2
    3
    shift + v | V # 选中光标所在行

    shift + g | G # 向下选择
  2. vim 主题

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    # 末行模式下

    :colorscheme (空格一下,按下 ctrl + d)

    # 显示可选主题
    blue default desert evening koehler murphy peachpuff shine torte
    darkblue delek elflord industry morning pablo ron slate zellner

    # 可以从网络下载主题

    https://github.com/flazz/vim-colorschemes

    # 可写入 .vimrc 文件永久配置 存入 git 进行版本控制, 以后方便使用

    # 开源: https://github.com/liuchengxu/space-vim (以后配置)
    配置
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    vim ~/.vimrc

    syntax enable
    syntax on
    colorscheme desert
    set fileencodings=utf-8,ucs-bom,gb18030,gbk,gb2312,cp936
    set termencoding=utf-8
    set encoding=utf-8
    set nu
    set mouse=a
    set selection=exclusive
    set selectmode=mouse,key
    set autoindent

    set showmatch
    set paste
    set listchars=tab:>-,trail:-
    set ruler
    set clipboard+=unnamed

可视模式

  • v: 字符可视模式

  • V: 行可视模式

  • ctrl + v: 块可视模式

    • 配合d I 命令可以进行块的便利操作

  • 录制宏

    1
    末行模式: q其他字母
  • python 注释宏录制

    • vim 文件

    • 按下q,在键入其他字母Eg. a 寄存器名称

    • 按下i

    • 添加注释 #

    • 按下ESC,按下j 进入下一行

    • 按下q 结束宏

    • 播放宏

      • 数字 @a
    • 演示

      宏模式

用户和用户组管理

  • 用户分类

    • 超级管理员root
      • 家目录:/root
    • 普通用户coder-itl
      • /home/coder-itl
  • 新建用户

    1
    2
    3
    4
    # 验证用户是否存在
    id test
    # 添加新用户
    useradd test
    创建新用户test
  • 删除用户

    1
    userdel -r test
    删除用户以及家目录
  • 修改用户密码

    1
    2
    # 修改 root 用户密码
    passwd root
  • 修改用户属性

    1
    2
    # 这个 test 用户登录后访问的目录是 
    usermod -d /home/aTest test
    细节过程
    在这里插入图片描述
  • 修改用户属性

    1
    2
    # 用户的生命周期
    chage
  • 新建用户组

    1
    groupadd 组名称
    修改用户所属组
    • 创建用户的同时添加到用户组

      1
      useradd -g 组名 用户名
      用户zs 添加到h5
  • 删除用户组

    1
    groupdel 组名
  • su

    1
    2
    # 使用 login shell 方式切换用户
    su - 用户名
    su
  • sudo

    1
    # sudo: 以其他用户身份执行命令
    • visudo: 设置需要使用sudo 的用户(组)
  • exit: 注销当前登录用户

  • 提升一个用户权限

    • 首先为这个用户创建密码

      1
      passwd test
      • 修改Linux 密码复杂度策略

        • 查看当前密码复杂度

          1
          cat /etc/pam.d/system-auth | grep -i password
        • 查看密码最长使用天数

          1
          2
          # 默认永久
          cat /etc/login.defs | grep -v '#' | grep -v '^$'
        • 修改密码策略

          1
          2
          3
          vim /etc/pam.d/system-auth

          password requisite pam_pwquality.so try_first_pass local_users_only retry=3 minlen=4 ucredit=-1 lcredit=-2 dcredit=-1 ocredit=-1 authtok_type=
          1
          2
          3
          4
          5
          6
          7
          # retry  允许重试3
          # minlen 最小位数
          # ucredit 大写字母位数
          # lcredit 小写字母位数
          # dcredit=N: N >= 0:密码中最多有多少个数字;N < 0密码中最少有多少个数字. dcredit=-1 密码中最少有1个数字
          # ocredit=N:特殊字母的个数 ocredit=-1 密码中至少有1个特殊字符
          # 它表示密码必须至少包含一个大写字母(ucredit),两个小写字母(lcredit),一个数字(dcredit)和一个标点符号(ocredit)
          设置简单密码
    • visudo 直接输入编辑的是/etc/sudoers 文件内容

      1
      2
      # 查看该文件的内容
      cat /etc/sudoers | grep -v '#' | grep -v '^$'
      主要关注点

      root ALL=(ALL) ALL 解释:

      root: 用户名

      ALL=(ALL) 可连接终端(任意: 1. 字符终端 2. 远程终端(Eg:ssh))

      ALL: 可执行所有命令

      • 添加test 拥有可以执行shutdown 的配置

        1
        2
        3
        4
        test ALL=/usr/sbin/shutdown -c

        # 按下 ESC,输入 : !which 会获取到这个命令的地址 => /usr/sbin/shutdown

  • /etc/passwd

    解析
  • /etc/shadow: 保存用户和加密后的密码内容

  • ``

环境变量

  • 临时设置

    1
    2
    # 语法
    export 变量名=变量值
    临时配置
  • 永久生效

    • 针对当前用户生效,配置在当前用户的~/.propertiesrc 文件中,并通过source .propertiesrc 立即生效

      在文件中 export 变量名=变量值
    • 针对所有用户生效,配置在系统的/etc/profile 文件中

      • 并通过语法source /etc/profile,进行立即生效,或重新登录终端生效
      /etc/profile 末尾添加自己的软件所需内容

上传下载

  • 下载

    1
    yum install -y lrzsz
  • 上传

    1
    rz
    选择上传文件
  • 下载

    1
    sz
    选择传输的文件与保存文件位置

实用技巧

  • 解决上传 windows 中文文档乱码

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    原因: 编码的问题
    命令: iconv 命令转码
    参数:
    -f --from-code=名称 原始文本编码
    -t --to-code=输出编码
    -o --output=file 输出文件名


    上传命令:
    rz

    命令实战: iconv -f gb2312 -t utf8 文件.后缀名 -o new-name.后缀名
    windows默认编码: gb2312

  • 解决Linux 服务器上的脚本导到windows 上串行问题

    1
    2
    3
    # 将 linux 上的换行符转换为 windows 可以识别的换行符
    unix2dos 文件名.sh

  • 紧急模式恢复root 密码

    • 重启虚拟机

      按下e
    • 修改密码流程

      • 修改语言显示: LANG=en

      • 查看挂载分区: mount,最后一行信息,可以看出权限信息

      • 重新挂载再根分区:mount -o remount,rw /根据查看的挂载分区填写根分区路径/

      • 切换至根分区:chroot /根据查看的挂载分区填写根分区路径/

      • 修改密码,密码不能过于简单

        修改密码
      • 创建文件:touch /.autorelabel

      • 退出:exit

      • 重启: reboot

  • rpm 包的安装

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    rpm: 已经使用 GCC 编译后的
    tar: 源码包,需要编译

    使用:
    wget rpm-package···
    rpm -ivh /package-path/

    参数解析:
    i install 安装软件包
    v 显示附加信息,提供更多详细信息
    h hash 安装时输出 ####### 标记
    V 校验,对已经安装的软件进行校验


  • dnf 管理软件包

    1
    优点: 自动补全依赖
  • 系统进程管理

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    ps 查看进程工具
    参数解析:
    a 显示跟当前终端关联的所有进程
    u 基于用户的格式显示
    x 显示所有进程,不以终端机来区分
    -aux

    e 显示所有进程
    f 显示完整格式输出
    -ef
    ps
    • 具体分析

      参数解析
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      user: 启动这些进程的用户
      pid: 进程的 id
      %cpu: 进程占用的 cpu 百分比
      %mem: 占用内存的百分比
      vsz: 进程占用的虚拟内存大小(单位: kb)
      rss: 进程占用的物理内存大小(单位: kb)
      stat: 该进程目前的状态,linux进程有 5 钟基本状态
      start: 该 process 被触发启动的时间
      time: 该 process 实际使用 cpu 运作的时间
      command: 该程序的实际指令

    • 理解含义

      1
      2
      3
      4
      5
      [root@T-yuan ~]# ps -ef|grep nginx
      root 16848 1 0 Jun24 ? 00:00:00 nginx: master process nginx
      nobody 17022 16848 0 Jun24 ? 00:00:00 nginx: worker process
      root 30903 27960 0 11:24 pts/1 00:00:00 grep --color=auto nginx

  • 系统定时任务

    1
    2
    3
    [root@T-yuan ~]# ps aux | grep crond
    root 1278 0.0 0.0 126392 1612 ? Ss Jun24 0:00 /usr/sbin/crond -n
    root 32539 0.0 0.0 112812 976 pts/1 R+ 11:35 0:00 grep --color=auto crond
    1
    2
    3
    4
    5
    6
    7
    crontab

    参数解析:
    -e 编辑 crontab 定时任务
    -l 查询 crontab 任务
    -r 删除当前用户所有的 crontab 任务

    • 开始编辑一个定时任务

      项目 含义 范围
      第一个 * 一小时当中的第几分钟 0 - 59
      第二个 * 一天当中的第几个小时 0 - 23
      第三个 * 一个月中的第几天 1 - 31
      第四个 * 一年中的第几个月 1 - 12
      第五个 * 一周当中的星期几 0,7(星期日)
      时间 含义
      45 22 * * * 在 22 点45分执行命令
      0 17 * * 1 每周一的 17点 0 分执行命令
      0 5 1,15 * * 每月一号和十五号 的凌晨 5 点0分执行命令
      40 4 * * 1-5 每周一到周五的凌晨 4 点 40 执行命令
      */10 4 * * * 每天的凌晨 4点,每隔 10分钟执行一次命令
      0 0 1,15 * 1 每月一号和十五号,每周一的 0 分都会执行命令,注意: 星期几和记号最好不要同时出现,因为他们的定义都是天
      特殊符号 含义
      * 代表任何时间,比如第一个 * 就代表一小时中每分钟都执行一次的一次
      代表不连续的时间,比如”0 8,12,16 * * *” 每天的 8 点 0 分,12点 0 分,160 分都执行一次命令
      - 代表连续的时间范围,比如: “0 5 ** 1-6” 代表在周一到周六的凌晨 5 点 0 分执行命令
      */n 代表 每隔多久执行一次,比如: “*、10 * * * *” 代表没隔 10 分钟就执行一遍命令

Yun-安装MYSQL

MYSQL-5.7

  1. 配置yum 仓库

    1
    2
    3
    4
    5
    # 更新密钥
    rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022

    # 安装Mysql yum
    rpm -Uvh http://repo.mysql.com//mysql57-community-release-el7-7.noarch.rpm

    由于MySQL 并不在CentOS 的官方仓库中,所以我们通过上述rpm 命令:

    • 导入MySQL 仓库的密钥
    • 配置MySQLQ yum 仓库
  2. 使用yum 安装MySQL

    1
    2
    # yum安装Mysql
    yum -y install mysql-community-server
  3. 安装完成后,启动MySQL 并配置开机自启动

    1
    2
    systemctl start mysqld # 启动
    systemctl enable mysqld # 开机自启

    MySQL 安装完成后,会自动配置为名称叫做:mysqld 的服务,可以被systemctl 所管理

  4. 检查MySQL 的运行状态

    1
    systemctl status mysqld
  5. 主要配置管理员用户root 的密码以及配置允许远程登录的权限

    • 获取MySQL 的初始密码

      1
      2
      # 通过grep命令,在/var/log/mysqld.log文件中,过滤temporary password关键字,得到初始密码
      grep 'temporary password' /var/log/mysqld.log
    • 登陆MySQL 数据库系统

      1
      2
      3
      4
      5
      6
      7
      # 执行
      mysql -uroot -p
      # 解释
      # -u,登陆的用户,MySQL数据库的管理员用户同Linux一样,是root
      # -p,表示使用密码登陆

      # 执行完毕后输入刚刚得到的初始密码,即可进入MySQL数据库
    • 修改root 用户密码

      1
      2
      # 在MySQL控制台内执行
      ALTER USER 'root'@'localhost' IDENTIFIED BY '密码'; -- 密码需要符合:大于8位,有大写字母,有特殊符号,不能是连续的简单语句如123,abc
    • [扩展],配置root 的简单密码

      1
      2
      3
      4
      5
      6
      # 如果你想设置简单密码,需要降低Mysql的密码安全级别
      set global validate_password_policy=LOW; # 密码安全级别低
      set global validate_password_length=4; # 密码长度最低4位即可

      # 然后就可以用简单密码了(课程中使用简单密码,为了方便,生产中不要这样)
      ALTER USER 'root'@'localhost' IDENTIFIED BY '简单密码';
    • [扩展],配置root 运行远程登录

      1
      2
      3
      4
      5
      6
      7
      # 授权root远程登录
      grant all privileges on *.* to root@"IP地址" identified by '密码' with grant option;
      # IP地址即允许登陆的IP地址,也可以填写%,表示允许任何地址
      # 密码表示给远程登录独立设置密码,和本地登陆的密码可以不同

      # 刷新权限,生效
      flush privileges;

MYSQL-8.0

  1. 配置yum 仓库

    1
    2
    3
    4
    5
    # 更新密钥
    rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022

    # 安装Mysql8.x版本 yum
    rpm -Uvh https://dev.mysql.com/get/mysql80-community-release-el7-2.noarch.rpm
  2. 使用yum 安装MySQL

    1
    2
    # yum安装Mysql
    yum -y install mysql-community-server
  3. 安装完成后,启动MySQL 并配置开机自启动

    1
    2
    systemctl start mysqld		# 启动
    systemctl enable mysqld # 开机自启
  4. 配置

    主要修改root 密码和允许root 远程登录

    1. 获取MySQL 的初始密码

      1
      2
      # 通过grep命令,在/var/log/mysqld.log文件中,过滤temporary password关键字,得到初始密码
      grep 'temporary password' /var/log/mysqld.log
    2. 登录MySQL 数据库系统

      1
      2
      3
      4
      5
      6
      7
      # 执行
      mysql -uroot -p
      # 解释
      # -u,登陆的用户,MySQL数据库的管理员用户同Linux一样,是root
      # -p,表示使用密码登陆

      # 执行完毕后输入刚刚得到的初始密码,即可进入MySQL数据库
    3. 修改root 密码

      1
      ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '密码';	-- 密码需要符合:大于8位,有大写字母,有特殊符号,不能是连续的简单语句如123,abc
    4. [扩展],配置root 的简单密码

      1
      2
      set global validate_password.policy=0;		# 密码安全级别低
      set global validate_password.length=4; # 密码长度最低4位即可
    5. 允许root远程登录,并设置远程登录密码

      1
      2
      3
      4
      5
      # 第一次设置root远程登录,并配置远程密码使用如下SQL命令
      create user 'root'@'%' IDENTIFIED WITH mysql_native_password BY '密码!'; -- 密码需要符合:大于8位,有大写字母,有特殊符号,不能是连续的简单语句如123,abc

      # 后续修改密码使用如下SQL命令
      ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '密码';
    6. 退出MySQL 控制台页面

      1
      2
      3
      4
      # 退出命令
      exit

      # 或者通过快捷键退出:ctrl + d
    7. 检查端口

      MySQL 默认绑定了3306 端口,可以通过端口占用检查MySQL 的网络状态

      1
      netstat -anp | grep 3306

DNF

  • yum 的升级版,CentosRed Hat等上使用,有一些新增特性

  • 下载

    1
    yum -y install dnf
  • 列出已安装的软件包

    1
    dnf list installed
  • 更新列表中的所有软件包

    1
    dnf  upgrade
  • 软件下载

    1
    dnf -y install zip[下载的软件包名]
    过程更加清晰
  • 软件删除

    1
    dnf -y remove zip[下载的软件包名]
  • 升级指定的包

    1
    dnf -y upgrade package-name
  • 镜像加速配置

    1
    2
    3
    4
    5
    6
    7
    8
    sudo dnf install epel-release

    sudo sed -i.bak \
    -e 's|^metalink|#metalink|' \
    -e 's|^#baseurl=|baseurl=|' \
    -e 's|download.fedoraproject.org/pub|mirrors.aliyun.com|' \
    /etc/yum.repos.d/epel*.repo

1
2
3
4
5
6
7
#修改配置
vim /etc/dnf/dnf.conf
#新增
fastestmirror=True

#使用
sudo dnf makecache

镜像 ISO 挂载与本地YUM

虚拟机挂载光盘(ISO)镜像

  • 下载镜像文件

    准本镜像文件
  • 在虚拟机中添加CD/DVD

    添加CD/DVD,设备状态为启动时连接
  • 正常启动

  • 在根目录创建一个文件夹Eg: iso

    1
    2
    3
    4
    # 进入根目录
    cd /
    # 创建挂载点目录
    mkdir iso
  • 由于镜像文件启动时已经正常加载,此时查看挂载情况,发现镜像文件在磁盘使用情况中不存在

    1
    2
    # Linux df(英文全拼:disk free) 命令用于显示目前在 Linux 系统上的文件系统磁盘使用情况统计。
    df -h
  • Centos7 是已经将光盘加载到sr0

    1
    2
    3
    # Centos6 是 cdrom,Centos7 将该目录软连接到了 sr0
    cd /dev
    ls -l
    sr0
  • 挂载sr0 iso 目录

    1
    2
    3
    4
    5
    # 没添加权限,在使用过程中有一些不必要的警告信息会出现 mount /dev/sr0 -rw  /iso
    # 回到 根目录
    cd /
    # 进行挂载
    mount /dev/sr0 /iso
  • 如果在挂载过程中出现mount: no medium found on /dev/sr0,就是未连接,可以选择右击连接

    光盘未连接
    • 连接后,旁边出现绿色小点

      成功连接光盘标志
      在这里插入图片描述
    • 重新使用挂载命令挂载

      挂载成功

物理光盘 ISO 挂载文件制作本地 YUM 源并安装 VIM

  • 进入yum 源目录

    1
    cd /etc/yum.repos.d
  • 备份

    1
    2
    # 使用 rename 批量修改
    rename repo repo.default *
    批量备份
  • 创建本地yum

    1
    2
    cd /etc/yum.repos.d
    vi iso.repo
    1
    2
    3
    4
    5
    6
    # 添加内容
    [iso]
    name=iso
    baseurl=file:///iso
    enable=1
    gpgcheck=0
    1
    2
    # 就是把服务器的包信息下载到本地电脑缓存起来配合 yum -C search xxx 使用不用上网检索就能查找软件信息执行完
    yum makecache
  • 当前网络状态

    Linux 处于无网络状态
  • 使用本地yum 源无网络状态下载vim

    使用本地yum
    在这里插入图片描述

网络 YUM 源

  • 删除iso && iso.repo

    1
    2
    cd /
    rm -rf iso
  • 还原repo

    1
    2
    cd /etc/yum.repos.d
    rename repo.default repo *
    还原
  • 网络源配置

    1
    2
    3
    4
    sudo sed -e 's|^mirrorlist=|#mirrorlist=|g' \
    -e 's|^#baseurl=http://mirror.centos.org/centos|baseurl=https://mirrors.ustc.edu.cn/centos|g' \
    -i.bak \
    /etc/yum.repos.d/CentOS-Base.repo
    1
    2
    # 更新缓存
    yum makecache
  • 阿里云源更换

    https://coderitl.github.io/2022/02/13/28203.html