CentOS8教程

文章目录

  • CentOS8教程
  • 第一章 CentOS8系统介绍
  • 1、CentOS8系统介绍
  • 1.1、CentOS8系统官网
  • 1.2、CentOS8系统版权
  • 2、CentOS8更新计划与版本分支
  • 2.1、CentOS8更新计划
  • 2.2、CentOS8版本分支
  • 第二章 CentOS8下载与安装教程
  • 1、CentOS8系统下载方式
  • 2、CentOS8系统安装须知与环境准备
  • 2.1、CentOS8安装选项
  • 2.2、CentOS8安装环境
  • 2.3、CentOS8硬件配置
  • 3、CentOS8系统安装教程
  • 3.1、系统引导
  • 3.2、CentOS8安装配置
  • 3.3、等待安装完成
  • 第三章 CentOS8安全与更新教程
  • 1、账号安全
  • 1.1、禁止root远程登录
  • 1.2、修改默认登录端口
  • 1.3、设置账号无操作指定时间过期
  • 2、防火墙配置
  • 3、CentOS8更新
  • 第四章 CentOS8软件包管理器DNF
  • 1、CentOS8软件包管理器DNF介绍
  • 2、安装DNF
  • 2.1、安装DNF的环境
  • 2.2、安装DNF的方式
  • 3、DNF命令
  • 3.1、列出所有、已安装和可用的软件包
  • 3.2、查询一个软件包
  • 3.3、安装和重装一个软件包
  • 3.4、下载和查看一个软件包的详细信息
  • 3.5、软件升级
  • 3.6、列出软件包组
  • 3.7、存储库列表
  • 3.8、删除软件包
  • 第五章 CentOS8用户和用户组
  • 1、CentOS8用户
  • 1.1、使用如下命令打开CentOS8用户配置文件
  • 1.2、我们可以看到系统默认的CentOS8用户信息
  • 1.3、CentOS8用户详细解析
  • 1.4、CentOS8用户创建、修改和删除等常用命令
  • 2、CentOS8用户组
  • 2.1、CentOS8用户组配置文件
  • 2.2、CentOS8用户组信息
  • 2.3、CentOS8用户组配置详细解析
  • 2.4、CentOS8用户组创建、修改和删除等常用命令
  • 第六章 CentOS8文件目录详解
  • 1、CentOS8根目录文件
  • 2、CentOS8子目录文件
  • 2.1、CentOS8目录的etc文件夹
  • 2.2、CentOS8目录的proc文件夹
  • 2.3、CentOS8目录的usr文件夹
  • 2.4、CentOS8目录的var文件夹
  • 3、比较重要的几个CentOS8目录
  • 第七章 CentOS8 Git安装与Git命令
  • 1、Git安装
  • 1.1、通过DNF来进行Git安装
  • 1.2、通过源代码来进行Git安装
  • 2、Git安装和初始化
  • 2.1、Git全局设置
  • 2.2、创建一个新仓库
  • 2.3、推送现有文件夹
  • 2.4、推送现有的Git仓库
  • 3、Git使用流程
  • 3.1、使用Git命令初始化一个仓库
  • 3.2、使用Git命令将文件添加到暂存区
  • 3.3、使用Git命令将暂存区中的内容提交到当前分支
  • 3.4、使用Git命令查看状态
  • 3.5、使用Git命令将当前分支提交到远程仓库
  • 4、常用的Git命令汇总
  • 4.1、使用Git命令本地暂存提交到远程
  • 4.2、使用Git命令远程覆盖本机暂存
  • 4.3、使用Git命令本地回退到指定版本
  • 4.4、使用Git命令删除本地分支和远程分支
  • 4.5、合并develop分支到master主分支
  • 4.6、使用Git命令标签操作
  • 4.7、使用Git命令撤销修改
  • 第八章 CentOS8 MySQL安装与配置
  • 1、MySQL安装
  • 1.1、查看MySQL安装包信息
  • 1.2、MySQL安装命令
  • 1.3、启动和设置开机启动MySQL服务
  • 1.4、查看MySQL服务运行状态
  • 1.5、查看MySQL初始密码
  • 2、MySQL配置
  • 2.1、MySQL登录
  • 2.2、切换当前库为mysql
  • 2.3、刷新权限,无需重启即可生效
  • 2.4、修改原始密码
  • 2.5、修改MySQL配置的默认编码
  • 2.6、修改MySQL配置的默认端口
  • 2.7、MySQL配置的日志
  • 3、MySQL常用命令
  • 3.1、数据库概念
  • 3.2、创建账号,并设置全部权限
  • 3.3、使用账号登录指定IP
  • 3.4、彻底卸载MySQL
  • 第九章 CentOS8 Crontab定时任务
  • 1、crontab介绍
  • 2、crontab常用命令
  • 2.1、查看Crontab作业状态
  • 2.2、查看指定用户的Crontab作业
  • 2.3、编辑指定用户的Crontab作业
  • 2.4、删除指定用户的所有Crontab作业
  • 2.5、重启Crontab作业
  • 2.6、停止Crontab作业
  • 3、Crontab文件
  • 3.1、Crontab日志位置
  • 3.2、Crontab位置
  • 3.3、禁止使用Crontab命令的用户
  • 3.4、允许使用Crontab命令的用户
  • 4、Crontab作业的使用
  • 4.1、Crontab创建
  • 4.2、此时会进入到vi编辑界面,来编写我们要调度的Crontab定时任务
  • 4.3、Crontab命令中的一些常用特殊符号
  • 4.4、Crontab常用示例
  • 第十章 CentOS8网络配置教程
  • 1、NetworkManager介绍
  • 1.1、CentOS8网络配置的区别
  • 1.2、NetworkManager作用
  • 1.3、NetworkManager支持的网络
  • 1.4、NetworkManager使用方式
  • 2、nmcli常用命令
  • 2.1、nmcli介绍
  • 2.2、查看CentOS8网络配置连接
  • 2.3、查看CentOS8网络配置设备
  • 2.4、CentOS8网络切换连接
  • 2.5、CentOS8网络查看IP
  • 2.6、CentOS8网络启用网卡ensX,例如ens160
  • 2.7、CentOS8网络停止connection
  • 2.8、CentOS8网络删除connection
  • 2.9、CentOS8网络查看connection详细信息
  • 2.10、立即生效connection
  • 2.11、查看CentOS8网络设备列表
  • 2.12、激活网卡
  • 2.13、关闭网络
  • 3、常见的CentOS8网卡配置方式
  • 3.1、通过手工配置CentOS8网卡ifcfg的方式
  • 3.2、CentOS8网卡配置后重启网络
  • 3.3、检测网络状态
  • 第十一章 CentOS8系统备份与还原
  • 1、准备工作
  • 2、CentOS8系统备份
  • 3、CentOS8系统还原
  • 第十二章 CentOS8分区和挂载教程
  • 1、基本概念
  • 1.1、文件系统
  • 1.2、绝对路径和相对路径
  • 1.3、挂载点
  • 1.4、CentOS8分区建议
  • 1.5、CentOS8分区存储设备的两种表示方法
  • 1.6、系统引导过程
  • 2、CentOS8挂载
  • 2.1、查看CentOS8分区
  • 2.2、添加CentOS8分区目录
  • 2.3、开始CentOS8分区
  • 2.4、制作CentOS8分区
  • 2.5、格式化分区
  • 2.6、CentOS8挂载分区
  • 2.7、开机自启
  • 2.8、查看CentOS8分区
  • 3、常用的分区挂载命令
  • 3.1、卸载CentOS8分区
  • 3.2、删除CentOS8分区
  • 第十三章 CentOS8官方源和源配置
  • 1、基本概念
  • 2、CentOS8官方源介绍
  • 2.1、查看CentOS8官方源
  • 2.2、备份CentOS8官方源
  • 3、第三方CentOS8源配置
  • 3.1、选择阿里的CentOS8源配置
  • 3.2、选择清华大学的CentOS8源配置
  • 3.3、系统升级和软件服务更新
  • 第十四章 CentOS8文件和权限管理
  • 1、CentOS8文件和文件夹
  • 1.1、创建文件夹
  • 1.2、查看文件夹
  • 1.3、创建CentOS8文件
  • 1.4、查看CentOS8文件状态
  • 1.5、查看CentOS8文件
  • 1.6、编辑CentOS8文件
  • 1.7、复制CentOS8文件
  • 1.8、移动CentOS8文件
  • 1.9、删除CentOS8文件
  • 2、CentOS8权限
  • 2.1、改变文件的用户和用户组
  • 2.2、改变用户组
  • 2.3、改变CentOS8权限
  • 第十五章 CentOS8文件压缩和解压
  • 1、基本概念
  • 2、CentOS8文件压缩类型
  • 3、CentOS8文件压缩与解压操作
  • 3.1、zip文件的压缩与解压操作
  • 3.2、tar.gz文件的压缩与解压操作
  • 3.3.、tar.bz2文件的压缩与解压操作
  • 3.4、gz文件的压缩与解压操作
  • 第十六章 CentOS8命令汇总
  • 1、系统管理命令
  • 1.1、systemctl命令:用于向系统发出查询或者管理命令
  • 1.2、date命令:显示或设定系统的日期与时间
  • 1.3、free命令:用于显示系统内存使用情况,包括物理内存、交互区内存(swap)和内核缓冲区内存
  • 1.4、kill命令:用于删除执行中的程序或工作
  • 1.5、ps命令:用来查看当前运行的进程状态,英文为 process status
  • 1.6、rpm命令:用于管理套件
  • 1.7、top命令:显示当前系统正在执行的进程的相关信息,包括进程 ID、内存占用率、CPU 占用率等
  • 1.8、dnf命令:用于CentOS8发行版软件包的管理
  • 2、文件管理命令
  • 2.1、cat命令:用于连接文件并打印到标准输出设备上
  • 2.2、chmod命令:用于改变 linux 系统文件或目录的访问权限
  • 2.3、chown命令:将指定文件的拥有者改为指定的用户或组
  • 2.4、cp命令:将源文件复制至目标文件,或将多个源文件复制至目标目录
  • 2.5、find命令:于在文件树中查找文件,并作出相应的处理
  • 2.6、head命令:用来显示输出档案的开头,默认 head 命令打印文件的前十行
  • 2.7、tail命令:用于显示指定文件末尾内容,不指定文件时,作为输入信息进行处理,常用查看日志文件
  • 2.8、less命令:用来随意浏览文件,less在查看之前不会加载整个文件
  • 2.9、more命令:分页显示
  • 2.10、ln命令:是为了创建软件链接及硬链接
  • 2.11、mv命令:是移动文件或修改文件名
  • 2.12、rm命令:删除一个目录中的一个或多个文件或目录
  • 2.13、 touch命令:用于修改文件或者目录的时间属性,包括存取时间和更改时间
  • 2.14、whereis命令:只能用于程序名的搜索
  • 2.15、which命令:用于查找文件
  • 3、文档编辑命令
  • 3.1、grep命令:是文本搜索命令
  • 3.2、wc命令:统计指定的文件中字节数、字数、行数,并将统计结果输出
  • 4、磁盘管理命令
  • 4.1、cd命令:用于切换目录
  • 4.2、df命令:用于显示磁盘使用情况
  • 4.3、du命令:是对文件和目录磁盘使用的空间的查看
  • 4.4、 ls命令:list的缩写,查看 linux 文件夹包含的文件、文件权限、目录信息等
  • 4.5、mkdir命令:用于创建文件夹
  • 4.6、pwd命令:用于查看当前工作目录路径
  • 4.7、rmdir命令:从一个目录中删除一个或多个子目录项


第一章 CentOS8系统介绍

1、CentOS8系统介绍

CentOS的英文全称为:Community Enterprise Operating System,其中CentOS8是CentOS的最新版本,也叫做社区版企业操作系统,它是企业Linux发行版RHEL(英文全称为:Red Hat Enterprise Linux)的再编译系统版本。

1.1、CentOS8系统官网

CentOS8官方网站,您可以通过官网浏览CentOS8系统的最新资讯、下载所需版本,或直接在官方社区寻求相关帮助。

1.2、CentOS8系统版权

CentOS系统的源代码由Red Hat免费提供给公众,因此,CentOS系统的目标是在功能上与RHEL兼容,CentOS Linux是免费的,大家可以按照自己的需要任意免费重新发布。

2、CentOS8更新计划与版本分支

CentOS系统是由一个规模虽小但不断壮大的核心开发团队开发的,它由一个活跃的社区用户支持,包括系统管理员、网络管理员、管理人员、核心 Linux 贡献者和来自世界各地的 Linux 爱好者。

2.1、CentOS8更新计划

CentOS8系统的版本每两年发行一次,每个版本会定期(六个月左右)更新一次,以便支持新的硬件,每个CentOS8系统版本有十年左右的系统安全更新支持。

2.2、CentOS8版本分支
  • CentOS Linux是在RHEL免费源代码的基础上重新构建,是比较独立的稳定版本;
  • CentOS Stream 是比较先进的CentOS8版本。

第二章 CentOS8下载与安装教程

1、CentOS8系统下载方式

大家可以根据自己的网络选择合适的下载方式,其中CentOS官方下载为默认最新版本,CentOS更多下载包含CentOS7或更早期的CentOS版本,CentOS合作下载是一些公开的第三方下载列表。

2、CentOS8系统安装须知与环境准备

CentOS8 支持三种安装方式,分别为:物理机安装、虚拟机安装、云服务器安装方式。

  • 物理机安装:物理机安装一般安装到本地电脑上,如本地台式机、笔记本、工作站等,下载 CentOS 系统后,用户需要制作DVD光盘或U盘后,安装到指定机器上;
  • 虚拟机安装:虚拟机安装指借助虚拟软件来安装CentOS8系统,常用的虚拟机软件,如EMC公司旗下VMware Workstation,微软公司Windows自带的Virtual PC,Sun Microsystems公司出品的Oracle VM VirtualBox等;
  • 云服务器安装:购买云服务器后,借助云服务器商提供的后台进行安装,国外如亚马逊云、谷歌云、微软云等,国内云服务器商如阿里云、百度云、腾讯云。
2.1、CentOS8安装选项

本教程采用云服务器作为开发环境(免安装),无论你使用哪家服务器都OK,操作体验上是大同小异。

  • 采用云服务器,无需电脑硬件支持,无需下载系统,更加环保节能,云服务器起步价格一年百元左右,如果用自己的电脑全年无休24小时不间断运转,电费都不够,所以更省钱;
  • 采用云服务器,远程协作更高效,无论是开发测试、存取资料,还是建立个人博客等都非常方便。
2.2、CentOS8安装环境

从官方提供的支持架构来看,推荐为64位的电脑,主要基于Intel、AMD、IBM等。

  • AMD and Intel 64-bit,The 64-bit ARM ;
  • IBM Power Systems, Little Endian。
2.3、CentOS8硬件配置

可以选择本地安装或网络安装,硬件配置中内存最小为1.5GB,硬盘最小为10 GiB,下面是官方推荐的最小配置。

  • 内存:本地安装(USB,DVD)和NFS安装:768 MiB内存;HTTP, HTTPS or FTP 安装:1.5 GiB内存。
  • 硬盘:10 GiB 硬盘。

3、CentOS8系统安装教程

因为云服务器商提供了后台管理界面,自带一键安装系统的方式,因此本CentOS8教程仅针对手动安装。

3.1、系统引导

进入启动页面后有三个选项,可以使用方向键进行切换,使用回车键选择。

Install CentOS Linux 8 #直接安装
Test this media & install CentOS lINUX 8 #校验文件后安装系统
Troubleshooting #修复故障
3.2、CentOS8安装配置

首先选择语言,我们选择中文后,进入安装选项,CentOS8安装信息摘要包含三大项:本地化、软件、系统。

  • 键盘:用于设置键盘配置信息;
  • 语言支持:用于选择语言;
  • 时间和日期:用于选择时区,时间设置等;
  • 安装源:可以选择任何源,默认是系统自带的源;
  • 软件选择:选择命令行界面或带图形界面,以及相关的系统组件或软件;
  • 安装目的地:设置安装的分区信息,可以设置系统swap,分几个区和区大小等,默认选择自动分区;
  • KDUMP:kdump是在系统崩溃、死锁或者死机的时候用来转储内存运行参数的一个工具和服务;
  • 网络和主机名:设置主机名字以及网络配置,可以设置静态IP动态IP,也可以设置自动网络,让系统帮你自动识别;
  • 安全策略:可以安装后进行设置。
3.3、等待安装完成

用户在等待完成安装的过程中,可以设置默认管理员root的密码,最后依次点击完成配置和重启,最后自动进入系统的登录界面,这时候,只需要输入用户名root和刚才设置的密码就可以自由使用CentOS8了。

第三章 CentOS8安全与更新教程

1、账号安全

1.1、禁止root远程登录

首先创建一个普通用户,然后修改系统配置禁止root登录,因为root作为系统默认的超级管理员,权限过大,日常操作使用易导致安全风险。

1.1.1、首先要建立一个新的登录用户

useradd username //增加新用户,名字为username。
passwd username //设置用户密码,系统会自动小窗提醒两次,让你输入两遍新密码。

1.1.2、查看新建立的用户信息

因为是缺省参数创建,默认会新增一个同名用户组,当前用户默认加入同名用户组内。

id username //查看用户信息,返回uid=1000(username) gid=1000(username) 组=1000(username),说明添加成功。

1.1.3、使用 su 命令切换新用户登录

两种语法,带横杠线切换用户时,包含用户的身份权限和使用环境等,推荐加上。

su - username //加上 - 同时切换登录身份和登录环境为username。
su username //不加 - 仅切换登录身份为username。

1.1.4、最后设置禁止root远程登录

vi /etc/ssh/sshd_config //打开SSH配置文件。
PermitRootLogin yes //找到 PermitRootLogin 将 yes 修改为 no,不允许root账号登录。
systemctl restart sshd //重启SSH,使得服务修改生效。
1.2、修改默认登录端口

修改默认的SSH登录端口,端口范围是 0-65535,0-1024是系统占用,我们可使用的端口是1024-65535。

vi /etc/ssh/sshd_config //打开配置文件
Port 22 //找到Port参数,去掉注释符号#,同时修改端口号。
1.3、设置账号无操作指定时间过期

1.3.1、通过设置 TMOUT 可以针对所有登录方式的用户起作用

vi /etc/profile //打开配置文件
export TMOUT=0 //在文件结尾添加,0为永远不超时退出,单位是秒,例如设置5分钟无操作自动退出,值为300。

1.3.2、通过设置sshd_config配置文件,仅针对SSH登录的用户起作用

vi /etc/ssh/sshd_config //打开配置文件
ClientAliveCountMax 3 //服务器端发送请求后,客户端最多的无响应次数。
ClientAliveInterval 60 //超过特定时间自动终止SSH链接,单位为分钟。

2、防火墙配置

开启并设置防火墙开机启动,同时按需开放外部端口,例如80(http)、443(https)、3306(mysql)等。

systemctl status firewalld //查看防火墙状态
systemctl start firewalld //开启防火墙
systemctl stop firewalld //关闭防火墙
systemctl enable firewalld //设置防火墙开机自启
firewall-cmd --zone=public --list-ports //查看所有开启的端口
firewall-cmd --reload //重启防火墙
firewall-cmd --zone=public --add-port=80/tcp --permanent //开启永久80端口
firewall-cmd --zone=public --remove-port=80/tcp --permanent //删除永久80端口

3、CentOS8更新

系统规则千万条,安全才是第一条,试试吧 在这里提醒您,我们作为系统的使用者,同时也是维护者,那么系统升级对于安全非常重要,CentOS经历很多年的沉淀,系统级的CentOS8更新足以解决绝大多数安全漏洞,我们只需要经常升级系统即可,应用层面的更新,可以根据你使用的框架或中间组件寻求对应的官方帮助。

dnf update -y

第四章 CentOS8软件包管理器DNF

1、CentOS8软件包管理器DNF介绍

DNF是Dandified YUM的缩写,是一个面向基于RPM的Linux发行版的软件包管理器。
  • DNF用于在Fedora/RHEL/CentOS操作系统中安装、更新和删除软件包;
  • DNF是YUM的下一代版本,旨在取代YUM,它是Fedora22、CentOS8和RHEL8的默认软件包管理器;
  • DNF功能强大,DNF使维护包组变得很容易,并且能够自动解决依赖性问题。

2、安装DNF

2.1、安装DNF的环境

使用DNF必须满足以下2个条件:运行基于RPM的Linux发行版操作系统和设置root的密码。

2.2、安装DNF的方式

默认情况下,DNF已经默认安装在CentOS8操作系统中。如果没有预置安装DNF,可以运行以下命令来安装DNF。

yum install dnf //安装DNF
dnf --version //检查DNF的版本

3、DNF命令

安装DNF后,你可以使用DNF命令进行查询、安装、升级、删除等操作,以下为DNF常用的命令,方便日常使用。

3.1、列出所有、已安装和可用的软件包

你可以使用如下DNF命令来列出所有、已安装和可用的安装包。

dnf list //列出所有安装包。
dnf list installed //累出所有已安装的软件包。
dnf list available //列出所有可用的软件包。
3.2、查询一个软件包

使用DNF命令来查询httpd软件包信息。

dnf search httpd
3.3、安装和重装一个软件包

使用如下DNF命令来安装和httpd软件包。

dnf install httpd //安装
dnf reinstall httpd //重装
3.4、下载和查看一个软件包的详细信息

在某些情况下,您需要下载软件包而不需要安装它。你可以用以下DNF命令下载特定的软件包。

dnf download httpd
dnf info httpd //查看一个软件包的详细信息
3.5、软件升级

首先检查软件是否可以升级,然后使用DNF命令进行升级。

dnf check-update //检查软件包升级状态
dnf update //升级软件包
dnf update httpd //如果只升级某一项,可以使用如下命令
3.6、列出软件包组
dnf grouplist //列出所有的软件包组
dnf groupinstall 'System Tools' //安装指定的软件包组下的所有软件
dnf groupupdate 'System Tools' //升级指定的软件包组下的所有软件
3.7、存储库列表

你可以用以下DNF命令列出所有存储库。

dnf repolist all //列出所有的存储库
dnf repolist //仅列出可用的存储库
3.8、删除软件包

你可以通过以下DNF命令来删除软件包、软件包组,清理软件包缓存和相关依赖。

dnf remove httpd //您可以从系统中删除任何不需要的包,使用以下命令
dnf autoremove //删除与包httpd一起安装的不需要的依赖项
dnf clean all //清除所有的软件包缓存
dnf groupremove 'System Tools' //删除软件包组

第五章 CentOS8用户和用户组

1、CentOS8用户

1.1、使用如下命令打开CentOS8用户配置文件
vi /etc/passwd
1.2、我们可以看到系统默认的CentOS8用户信息

其中每一行代表一个用户,每行数据使用冒号":"隔开成七个字段,如下用户是系统自动创建,删除可能导致系统异常,请谨慎操作。

root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:65534:65534:Kernel Overflow User:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
systemd-coredump:x:999:997:systemd Core Dumper:/:/sbin/nologin
systemd-resolve:x:193:193:systemd Resolver:/:/sbin/nologin
tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
polkitd:x:998:996:User for polkitd:/:/sbin/nologin
unbound:x:997:995:Unbound DNS resolver:/etc/unbound:/sbin/nologin
sssd:x:996:993:User for sssd:/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
chrony:x:995:992::/var/lib/chrony:/sbin/nologin
1.3、CentOS8用户详细解析

在此CentOS8教程中,我们以第一项CentOS8用户root为例进行详细解析。

root:x:0:0:root:/root:/bin/bash
  1. 用户名称:CentOS8 系统是通过用户 ID (UID) 来区分不同用户、分配用户权限的。而用户名称和 UID 的对应正是通过 /etc/passwd 这个文件来定义的;
  2. 密码标志:这里的 x 代表的是密码标志,而不是真正的密码,真正的密码是保存在 /etc/shadow 文件中的;
  3. 用户ID:UID,如果用户UID 为 0,则代表这个账号是管理员账号。其中1-499 范围内的用户是不能登录系统的,而是系统自动创建保留或运行相关服务的;500-2^32-1范围为普通用户使用;
  4. 用户组ID:英文为GID,每一个用户有一个默认的初始组,也可以添加到不同的附加组内;
  5. 备注说明:备注信息;
  6. 家目录:也就是用户登录后有操作权限的访问目录,我们把这个目录称为用户的家目录,普通用户在 /home 目录下建立和用户名相同的目录作为家目录;
  7. 命令解释器:用户登录之后的Shell,大家可以把这个字段理解为用户登录之后所拥有的权限,例如 /bin/bash 就代表这个用户拥有权限范围内的所有权限,/sbin/nologin 就代表禁止登录的权限,/sbin/shutdown 代表关机权限等。
1.4、CentOS8用户创建、修改和删除等常用命令

1.4.1、创建一个新用户

useradd test

1.4.2、修改密码,根据系统提醒连续输入2次即可

passwd test

1.4.3、切换用户,使用root切换到其它账号无需密码,其它账号切换到root需要输入root密码

su - test

1.4.4、注销当前用户的登录状态

exit

1.4.5、查看一个用户的ID信息

id test

1.4.6、查看某一时刻用户的行为

w

1.4.7、查看当前已经登录的账号

who

1.4.8、查看当前用户的登录历史

last

1.4.9、查看系统中所有用户的最后一次登录时间、登录端口和来源IP

lastlog

1.4.10、删除一个用户,会删除对应的同名用户组

userdel test //删除用户
userdel -r test //删除对应的家目录

2、CentOS8用户组

2.1、CentOS8用户组配置文件

使用如下命令打开 CentOS8用户组的配置文件

vi /etc/group
2.2、CentOS8用户组信息

我们可以看到默认的CentOS8用户组信息如下,其中test组为上面教程中我们创建test用户默认分配的同名CentOS8用户组。

root:x:0:
bin:x:1:
daemon:x:2:
sys:x:3:
adm:x:4:
tty:x:5:
disk:x:6:
lp:x:7:
mem:x:8:
kmem:x:9:
wheel:x:10:
cdrom:x:11:
mail:x:12:
man:x:15:
dialout:x:18:
floppy:x:19:
games:x:20:
tape:x:33:
video:x:39:
ftp:x:50:
lock:x:54:
audio:x:63:
users:x:100:
nobody:x:65534:
dbus:x:81:
utmp:x:22:
utempter:x:35:
input:x:999:
kvm:x:36:
render:x:998:
systemd-journal:x:190:
systemd-coredump:x:997:
systemd-resolve:x:193:
tss:x:59:
polkitd:x:996:
unbound:x:995:
ssh_keys:x:994:
sssd:x:993:
sshd:x:74:
chrony:x:992:
test:x:1000:
2.3、CentOS8用户组配置详细解析

在此CentOS8教程中,我们以第一项root用户组来对此文件进行详细的解析。

root:x:0:
  1. 用户组名,由字母或数字构成。与/etc/passwd中的登录名一样,组名不能重复;
  2. 用户组口令,口令字段存放的是用户组加密后的口令字。这个字段一般为空,或者是x。
  3. 用户组ID,也就是GID,整数,用于系统内部标识;
  4. 用户组内用户,属于这个组的所有用户名的列表用逗号分隔。这个用户组可能是用户的初始组,也可能是附加组。
2.4、CentOS8用户组创建、修改和删除等常用命令

2.4.1、建立一个CentOS8用户组

groupadd test

2.4.2、删除一个用户组,初始组(主组)是不能删除的,只能删除附加组

groupdel test

2.4.3、为用户组test添加用户test1

gpasswd -a test1 test

2.4.4、为CentOS8用户组test删除用户test1

gpasswd -d test1 test

2.4.5、将test用户添加到wheel组,在CentOS系统中,只有将用户添加到wheel用户组后,添加的用户才有su权限,-a参数是添加用户到基本的组,仅和 -G选项一起使用,G是添加到指定组,添加后重新登录生效

usermod -aG wheel test

2.4.6、查看当前的CentOS8用户组

groups

第六章 CentOS8文件目录详解

1、CentOS8根目录文件

列出CentOS8文件的根目录文件,在此CentOS8教程中,将对CentOS8目录做出详细说明。

bin //二进制可执行命令,存放的是Linux系统普通命令

etc //系统管理和配置文件

lib //标准程序设计库,又叫动态链接共享库,作用类似windows里的.dll文件

media //挂载光盘时使用

opt //默认空,这个目录表示的是可选择的意思,一些自定义软件包或者第三方工具,就可以安装在这里

root //系统管理员的主目录

sbin //系统管理命令,这里存放的是系统管理员使用的管理程序

sys //存放系统文件

usr //最庞大的目录,要用到的应用程序和文件几乎都在这个目录

boot //存放的是系统启动文件存放引导加载器(bootstrap loader)使用的文件

dev //设备特殊文件,存放的是系统可识别的硬件设备

home //用户主目录

lib64 //存放系统服务程序

mnt //默认空,系统提供这个目录是让用户临时挂载其他的文件系统

proc //虚拟的目录,是系统内存的映射。可直接访问这个目录来获取系统信息

run //程序执行时的进程文件放在该目录下,以.pid结尾

srv //默认空,一些服务需要访问的文件存放在这,服务启动之后需要访问的数据目录

tmp //公用的临时文件存储点

var //某些大文件的溢出区,比方说各种服务的日志文件

2、CentOS8子目录文件

列出CentOS8文件的子目录文件,在此CentOS8教程中,将对CentOS8子目录做出详细说明。

2.1、CentOS8目录的etc文件夹

CentOS8教程之etc文件夹详细说明。

/etc

/etc/rc, /etc/rc.d, /etc/rc*.d //启动、或改变运行时运行的脚本或目录

/etc/passwd //用户数据库,其中的域给出了用户名、真实姓名、家目录、加密的口令和用户的其他信息

/etc/fstab //启动时mount -a命令(在/etc/rc 或等效的启动文件中)自动mount的文件系统列表

/etc/group //类似/etc/passwd ,但说明的不是用户而是组

/etc/inittab //init 的配置文件

/etc/issue //getty 在登录提示符前的输出信息.通常包括系统的一段短说明或欢迎信息.内容由系统管理员确定

/etc/motd //Message Of The Day,成功登录后自动输出.内容由系统管理员确定.经常用于通告信息,如计划关机时间的警告

/etc/mtab //当前安装的文件系统列表.由scripts初始化,并由mount 命令自动更新.需要一个当前安装的文件系统的列表时使用

/etc/shadow //在安装了影子口令软件的系统上的影子口令文件.影子口令文件将/etc/passwd 文件中的加密口令移动到/etc/shadow

/etc/login.defs //login 命令的配置文件

/etc/printcap //类似/etc/termcap ,但针对打印机.语法不同

/etc/profile , /etc/csh.login , /etc/csh.cshrc //登录或启动时Bourne或C执行的文件.这允许系统管理员为所有用户建立全局缺省环境

/etc/securetty //确认安全终端,这样就不可能(至少很困难)通过modem或网络闯入系统并得到超级用户特权

/etc/shells //列出可信任的shell.chsh 命令允许用户在本文件指定范围内改变登录shell

/etc/sysconfig //网络配置相关目录

2.2、CentOS8目录的proc文件夹

CentOS8教程之proc文件夹详细说明。

/proc/cmdline //加载 kernel 时所下达的相关参数!查阅此文件,可了解系统是如何启动的

/proc/cpuinfo //本机的 CPU 的相关资讯,包含时脉、类型与运算功能等

/proc/devices //这个文件记录了系统各个主要装置的主要装置代号

/proc/filesystems //目前系统已经加载的文件系统

/proc/interrupts //目前系统上面的 IRQ(中断请求)分配状态

/proc/ioports //目前系统上面各个装置所配置的 I/O 位址

/proc/kcore //这个就是内存的大小

/proc/loadavg //还记得 top 以及 uptime 吧,上头的三个平均数值就是记录在此

/proc/meminfo //使用 free 列出的内存信息

/proc/modules //目前我们的 Linux 已经加载的模块列表,也可以想成是驱动程序

/proc/mounts //系统已经挂载的数据,就是用 mount 这个命令呼叫出来的数据

/proc/swaps //系统挂加载的内存

/proc/partitions //使用 fdisk -l 会出现目前所有的 partition

/proc/pci //在 PCI 汇流排上面,每个装置的详细情况!可用 lspci 来查阅

/proc/uptime //就是用 uptime 的时候,会出现的资讯啦

/proc/version //核心的版本,就是用 uname -a 显示的内容啦

/proc/bus/* //一些汇流排的装置,还有 U盘 的装置也记录在此

2.3、CentOS8目录的usr文件夹

CentOS8文件系统经常很大,因为所有程序安装在这里. /usr 里的所有文件一般来自Linux distribution;本地安装的程序和其他东西在/usr/local 下.这样可能在升级新版系统或新distribution时无须重新安装全部程序。

/usr

/usr/etc //存放设置文件

/usr/games //存放游戏和教学文件

/usr/include //存放C开发工具的头文件

/usr/share //存放结构独立的数据

/usr/bin //几乎所有用户命令.有些命令在/bin 或/usr/local/bin 中

/usr/sbin //根文件系统不必要的系统管理命令,例如多数服务程序

/usr/share/man , /usr/share/info , /usr/share/doc //手册页、GNU信息文档和各种其他文档文件

/usr/include //C编程语言的头文件.为了一致性这实际上应该在/usr/lib 下,但传统上支持这个名字

/usr/lib //程序或子系统的不变的数据文件,包括一些site-wide配置文件.名字lib来源于库(library); 编程的原始库存在/usr/lib 里

/usr/local //本地安装的软件和其他文件放在这里

/usr/src //存放程序的源代码

2.4、CentOS8目录的var文件夹

CentOS8文件,包括系统一般运行时要改变的数据.每个系统是特定的,即不通过网络与其他计算机共享。

/var

/var/catman //存放格式化完的版本,这样其他人再看相同的页时就无须等待格式化。/var/catman 像清除临时目录一样经常被清除

/var/lib //系统正常运行时要改变的文件

/var/local //系统中安装的程序的可变数据,即系统管理员安装的程序

/var/lock //锁定文件,以支持他们正在使用某个特定的设备或文件.其他程序注意到这个锁定文件,将不试图使用这个设备或文件

/var/log //各程序的Log文件,特别是login 系统的登录和注销) 和syslog (/var/log/messages) 里存储所有核心和系统程序信息

/var/run //保存到下次引导前有效的关于系统的信息文件.例如, /var/run/utmp 包含当前登录的用户的信息

/var/spool //mail, news, 打印队列和其他队列工作的目录,例如,用户的邮箱在/var/spool/mail 中.

/var/tmp //比/tmp 允许的大或需要存在较长时间的临时文件

3、比较重要的几个CentOS8目录

在本CentOS8教程中,CentOS8目录有几个是特别需要注意的,以下提供几个需要注意的CentOS8目录,以及预设相关的用途。

/etc: 这个目录相当重要,如前所述,你的开机与系统数据文件均在这个目录之下,而在往后的文件中,你会发现我们常常使用这个目录下的 /etc/rc.d/init.d 这个子目录,而在 /etc/rc.d/rc.local 这个文件是开机的执行文档

/bin, /sbin, /usr/bin, /usr/sbin: 这是系统预设的执行文件的放置目录,其中, /bin, /usr/bin 是给系统使用者使用的指令,而 /sbin, /usr/sbin 则是给系统管理员使用的指令

/usr/local: 这是系统预设的让你安装你后来升级的套件的目录。例如,当你发现有更新的 Web 套件(如 Apache )可以安装,而你又不想以 rpm 的方式升级你的套件,则你可以将 apache 这个套件安装在 /usr/local 底下

/home: 这个是系统将有账号的人的家目录设置的地方

/var: 不论是登入、各类服务的问题发生时的记录、以及常态性的服务记录等等的记录目录,所以当你的系统有问题时,就需要来这个目录记录的文件数据中察看问题的所在。而 mail 的预设放置也是在这里,所以它是很重要的

/usr/share/man, /usr/local/man: 这两个目录为放置各类套件说明文档的地方,例如你如果执行 man man,则系统会自动去找这两个目录下的所有说明文件

第七章 CentOS8 Git安装与Git命令

1、Git安装

在你开始使用 Git 前,需要将它安装在你的计算机上。 即便已经安装,最好将它升级到最新的版本。在本CentOS8教程中你可以通过软件包或者其它安装程序来安装,或者下载源码编译安装。

1.1、通过DNF来进行Git安装
dnf install git-all
git --version //查看 Git 版本
dnf update git //升级 Git 版本
1.2、通过源代码来进行Git安装

有人觉得从源码进行Git安装更实用,因为你能得到最新的版本。 二进制Git安装程序倾向于有一些滞后,当然近几年Git已经成熟,这个差异不再显著。如果你想从源码进行Git安装,需要安装 Git 依赖的库:autotools、curl、zlib、openssl、expat 和 libiconv。

dnf install dh-autoreconf curl-devel expat-devel gettext-devel openssl-devel perl-devel zlib-devel

如果需要添加文档的多种格式(doc、html、info),需要以下附加的依赖。

dnf install asciidoc xmlto docbook2X

如果你使用基于 RPM 的发行版(Fedora/RHEL/RHEL),你还需要 getopt 包。

dnf install getopt

如果你使用 Fedora/RHEL/RHEL衍生版,那么你需要执行以下命令,以此来解决二进制文件名的不同。

ln -s /usr/bin/db2x_docbook2texi /usr/bin/docbook2x-texi

下载最新版Git服务。

  • Kernel 含有文件下载签名: https://www.kernel.org/pub/software/scm/git
  • GitHub 上的是最新版本: https://github.com/git/git/releases

安装Git服务。

tar -zxf git-2.x.x.tar.gz
cd git-2.x.x
make configure
./configure --prefix=/usr
make all doc info
make install install-doc install-html install-info

GIt更新完成后,你可以使用安装好的Git来获取Git安装更新。

git clone git://git.kernel.org/pub/scm/git/git.git

2、Git安装和初始化

本CentOS8教程中,如果第一次使用 Git,你可以选择Git全局配置,创建一个新仓库,推送现有的文件夹,或者推送现有的仓库。

2.1、Git全局设置
git config --global user.name "username"
git config --global user.email "username@mail.com"
2.2、创建一个新仓库
git clone https://www.urlpath.git
cd urlpath
touch README.md
git add README.md
git commit -m "add README"
git push -u origin master
2.3、推送现有文件夹
cd existing_folder
git init
git remote add origin https://www.urlpath.git
git add .
git commit -m "Initial commit"
git push -u origin master
2.4、推送现有的Git仓库
cd existing_repo
git remote rename origin old-origin
git remote add origin https://www.urlpath.git
git push -u origin --all
git push -u origin --tags

3、Git使用流程

Git安装后,一个正常的 Git使用流程,首先从本地提交文件到暂存区,暂存区提交到指定分支,指定分支提交到远程仓库。

3.1、使用Git命令初始化一个仓库
git init //仅第一次使用
3.2、使用Git命令将文件添加到暂存区
git add filename //添加一个文件到暂存区
git add filename filename //添加多个文件到暂存区,文件名用空格隔开
git add *.php //使用通配符 * 来批量提交文件
git add . //将工作区中所有未跟踪或者修改的文件添加到暂存区
git add --all //将工作区中所有未跟踪或者修改的文件添加到暂存区

其中,git add . 和 git add --all 使用区别

1.x版(是否处理删除文件)

  1. .git add all 可以提交未跟踪、修改和删除文件。
  2. .git add . 可以提交未跟踪和修改文件,但是不处理删除文件。

2.x版(两者功能在提交类型方面是相同的,但是所在目录不同导致差异)

  1. .git add all 无论在哪个目录执行都会提交所有相应文件。
  2. .git add . 只能够提交当前目录或者它后代子目录下相应文件。
3.3、使用Git命令将暂存区中的内容提交到当前分支
git commit -m "备注信息"
3.4、使用Git命令查看状态
git status
3.5、使用Git命令将当前分支提交到远程仓库
git push origin master

4、常用的Git命令汇总

本CentOS8教程通过如上操作,已经完成了 Git安装、初始化以及基本操作流程,但是仅掌握这些命令在实际生产环境是远远不够的,下面 试试吧 总结了一些简洁的常用的Git命令,方便大家使用。

4.1、使用Git命令本地暂存提交到远程
git add .
git commit -m "提交代码"
git push
或者
git push -u origin master
或者强制提交
git push -u origin master -f
4.2、使用Git命令远程覆盖本机暂存
git fetch --all
git reset --hard origin/master
4.3、使用Git命令本地回退到指定版本
git reflog //先用下面命令找到要回退的版本的commit id:
git reset --hard 92168c9f //接着回退版本92168c9f 就是你要回退的版本的commit id的前面几位
git push -f origin master //最后一步, 强制推送到远程
4.4、使用Git命令删除本地分支和远程分支
git branch -D 分支名字 //删除本地分支
git push origin :分支名字 //删除远程分支
4.5、合并develop分支到master主分支
#第一步,develop分支已经开发完并提交完毕
git  add .
git  commit -m '备注信息'
git push -u origin develop

#第二步,切换到master
git checkout master
    
#第三步,将远程master上的代码pull下来
git pull origin master
    
#第四步,将 develop 分支的代码合并到 master 上
git merge develop
    
#第五步,查看状态
git status
    
#第六步,如果存在未commit的代码,则使用如下命令
git push origin master

#第七步,再次使用提交状态
git status
4.6、使用Git命令标签操作
#建立新标签并推送到远程
git tag //列出所有标签
git tag -a tagName -m "备注信息" //提交一个标签
git push origin tagName //推送一个本地标签

#为指定历史版本打上标签
git tag 标签名称 版本号 //例如:git tag v1.0 f52c633

#删除本地标签
git tag -d 标签名称
#删除远端标签
git tag push origin :refs/tags/标签名称

#推送全部未推送过的本地标签
git push origin --tags

#显示标签的说明信息
git show 标签名称
4.7、使用Git命令撤销修改
git checkout -- filename //将filename文件就回到最近一次git commit或git add时的状态
git status //查看状态

第八章 CentOS8 MySQL安装与配置

1、MySQL安装

1.1、查看MySQL安装包信息
dnf list |grep mysql-community-server
1.2、MySQL安装命令
dnf install mysql-community-server.x86_64
1.3、启动和设置开机启动MySQL服务
systemctl start mysqld
chkconfig mysqld on
1.4、查看MySQL服务运行状态
systemctl status mysqld
1.5、查看MySQL初始密码
grep 'temporary password' /var/log/mysqld.log

2、MySQL配置

2.1、MySQL登录

本CentOS8教程使用默认管理账号root和初始密码登录MySQL,进行MySQL配置,输入如下命令后根据提示输入密码即可。

mysql -u root -p
2.2、切换当前库为mysql
use mysql;
2.3、刷新权限,无需重启即可生效
flush privileges;
2.4、修改原始密码

第一步,此处采用 mysql_native_password 方式,数据库默认为 localhost 本地登录,如需远程登录请替换为指定IP或路径。

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '密码';

第二步,打开MySQL配置文件,修改MySQL配置参数,然后刷新权限或重启MySQL服务生效。

#打开配置文件
vi /etc/my.cnf.d/mysql-server.cnf
#修改参数
[mysqld]
找到:default_authentication_plugin=caching_sha2_password
改为:default_authentication_plugin=mysql_native_password

第三步,刷新或者重启生效。

systemctl restart mysqld;
2.5、修改MySQL配置的默认编码
vi /etc/my.cnf.d/mysql-server.cnf
[mysqld]
character-set-server=utf8
2.6、修改MySQL配置的默认端口
vi /etc/my.cnf.d/mysql-server.cnf
[mysqld]
port=53306
2.7、MySQL配置的日志
vi /etc/my.cnf.d/mysql-server.cnf
[mysqld]
log-error=/tmp

3、MySQL常用命令

3.1、数据库概念

使用命令操作数据库前,先简单的了解下数据库的一些概念,在MySQL中将权限管理分为三类:

  1. 数据权限:增删改查(select\update\delete\insert)
  2. 结构权限:结构操作(create\drop)
  3. 管理权限:权限管理(create user\grant\revoke)

我们常用的增删改查以及删库等操作,还有一些权限管理。例如授予权限:grant,取消权限:revoke,刷新权限:flush等,我们会在下面的教程中挨个举例说明。

3.2、创建账号,并设置全部权限

用户名自己设置,主机名一般是内外网IP或者本机localhost,密码尽量复杂一些,数据库名为自己创建的数据库。

#创建一个新用户
CREATE USER `用户名`@'主机名' IDENTIFIED BY '密码'; 
#为用户设置一个数据库的权限
#GRANT ALL PRIVILEGES on `数据库名`.* to `用户名`@'主机名';
3.3、使用账号登录指定IP

如果仅限内网登录,无需配置防火墙,如果需要远程登录,需要开放防火墙的3306端口,并设置开放第三方的安全组等。

#远程登录需要开放端口,默认为3306
firewall-cmd --zone=public --add-port=3306/tcp --permanent
#mysql -h主机名 -P端口 -u用户名 -p密码
#例如,登录密码为123456
mysql -hlocalhost -P3306 -uroot -p123456
3.4、彻底卸载MySQL
#第一步,首先停止服务
systemctl stop mysqld
#第二步,查看已安装的 MySQL
dnf list installed mysql*
#第三步,卸载服务
dnf remove mysql.x86_64 mysql-common.x86_64 mysql-errmsg.x86_64 mysql-server.x86_64
#第四步,彻底删除遗留文件,如果修改过配置路径,请按照实际路径替换,否则按照默认路径修改即可
rm -rf /var/lib/mysql
rm -rf /var/lib/mysql/mysql.sock
rm -rf /var/log/mysql/mysqld.log
rm -rf /run/mysqld/mysqld.pid
rm -rf /etc/my.cnf
rm -rf /etc/my.cnf.d/

第九章 CentOS8 Crontab定时任务

1、crontab介绍

Crontab是系统定时任务计划,也称之为系统作业,用于周期性的执行程序。crontab定时任务的工作主要分为以下两类。

  1. 系统任务:系统周期性所要执行的工作,如备份系统数据、清理缓存等;
  2. 用户任务:某个用户定期要做的工作,例如每隔几分钟检查邮件服务器是否有新信,这些工作可由每个用户自行设置等。

2、crontab常用命令

2.1、查看Crontab作业状态

crond 服务一般在CentOS8系统中默认安装,在本CentOS8教程中,我们可以使用如下命令查看Crontab定时任务的服务状态。

systemctl status crond

如果不存在,我们可以用这个命令安装。

dnf install crontabs
2.2、查看指定用户的Crontab作业

例如查看CentOS8系统中用户nobody的Crontab定时任务,不加-u参数,则查看当前用户的作业。

crontab -l -u nobody
2.3、编辑指定用户的Crontab作业

如果目录已经存在指定的文件(文件名为当前用户名),则会编辑文件,否则将会以当前用户名创建作业文件,注意/var/spool/cron是用户任务,/etc/crontab是系统任务。

crontab -e -u nobody
2.4、删除指定用户的所有Crontab作业
crontab -r -u nobody
2.5、重启Crontab作业
systemctl restart crond
2.6、停止Crontab作业
systemctl stop crond

3、Crontab文件

3.1、Crontab日志位置

在 /var/log目录下,cron打头的就是系统作业执行的日志文件。

3.2、Crontab位置

在 /etc/crontab目录下,这些任务都会是系统在运行起来后自动进行调度的。

3.3、禁止使用Crontab命令的用户

在 /etc/cron.deny 表示不能使用Crontab命令的用户。

3.4、允许使用Crontab命令的用户

在 /etc/cron.allow 表示能使用Crontab的用户。如果/etc/cron.deny和/etc/cron.allow同时存在,那么/etc/cron.allow 优先。如果两个文件都不存在,那么只有root用户可以安排作业。

4、Crontab作业的使用

4.1、Crontab创建
crontab -e
4.2、此时会进入到vi编辑界面,来编写我们要调度的Crontab定时任务
* * * * * command // 前五个字段可以取整数值,指定何时开始工作,第六个域是命令字段。 字段之间用空格分割。
  • 每小时的第几分钟执行,取值 0-59
  • 每日的第几个小时执行,取值 0-23
  • 每月的第几天执行,取值 1-31
  • 每年的第几月执行,取值 1-12
  • 每周的第几天执行,取值 0-6
4.3、Crontab命令中的一些常用特殊符号
  • *表示任何时刻
  • ,表示分割
  • -表示一个段,如第二段里: 1-5,就表示1到5点
  • /n表示每个n的单位执行一次,*/1, 就表示每隔1个小时执行一次命令。也可以写成1-23/1
4.4、Crontab常用示例

例如:每天8点、12点、16点的0分钟执行以下tmp目录下的sh文件。

00 8,12,16 * * * /tmp/test.sh

例如:每天的21:43 执行

43 21 * * * /tmp/test.sh

例如: 每周一的 17:00 执行

0 17 * * 1 /tmp/test.sh

例如:周一到周六 21:00 执行

0 21 * * 1-6 /tmp/test.sh

第十章 CentOS8网络配置教程

1、NetworkManager介绍

1.1、CentOS8网络配置的区别

在 CentOS7上同时支持network.service和NetworkManager.service。默认情况下,这2个服务都有开启。在CentOS8上,已废弃network.service(只能手动去安装),默认安装的是NetworkManager.service,因此本CentOS8教程推荐通过NetworkManager.service进行网络配置,CentOS8网卡配置包括设置动态和静态IP。

1.2、NetworkManager作用

NetworkManager是2004年Red Hat启动的项目,旨在能够让Linux用户更轻松地处理现代网络需求,尤其是无线网络,能自动发现网卡并配置ip地址。类似在手机上同时开启wifi和蜂窝网络,CentOS8网络自动探测可用网络并连接,无需手动切换CentOS8网卡。

1.3、NetworkManager支持的网络
  • 有线网卡、无线网卡
  • 动态ip、静态ip
  • 以太网、非以太网
  • 物理网卡、虚拟网卡
1.4、NetworkManager使用方式
  • nmcli:命令行
  • nmtui:在shell终端开启文本图形界面
  • Freedesktop applet:如GNOME上自带的网络管理工具
  • cockpit:redhat自带的基于web图形界面的"驾驶舱"工具,具有dashborad和基础管理功能

2、nmcli常用命令

2.1、nmcli介绍

在NetworkManager里,有2个维度:连接(connection)和设备(device),可以为一个设备配置多个连接,本CentOS8教程中特别需要指出的是,一个设备只能有一个活跃连接,每个连接可以理解为一个 ifcfg 配置文件。

2.2、查看CentOS8网络配置连接
nmcli connection
2.3、查看CentOS8网络配置设备
nmcli device
2.4、CentOS8网络切换连接
nmcli c up
2.5、CentOS8网络查看IP
nmcli
2.6、CentOS8网络启用网卡ensX,例如ens160
nmcli c up ens160
2.7、CentOS8网络停止connection
nmcli c down
2.8、CentOS8网络删除connection
nmcli c delete ens160
2.9、CentOS8网络查看connection详细信息
nmcli c show ens160
2.10、立即生效connection
nmcli c up ens160
nmcli d reapply ens160
nmcli d connect ens160
2.11、查看CentOS8网络设备列表
#查看设备信息
nmcli d
#查看指定device的详细信息
nmcli d show ens160
2.12、激活网卡
nmcli d connect ens160
2.13、关闭网络
nmcli r all off

3、常见的CentOS8网卡配置方式

通过NetworkManager进行CentOS8网卡配置时候,会自动将connection同步到ifcfg配置文件中,其中本CentOS8教程特别指出eth和ens的区别,ethX是真实物理网卡,ensX是虚拟网络会话。

  1. 手工配置ifcfg,通过NetworkManager来生效
  2. 通过NM自带工具配ip,比如nmcli
  3. 手工配置ifcfg,通过传统network.service来生效
3.1、通过手工配置CentOS8网卡ifcfg的方式

本CentOS8教程推荐使用上述第1种CentOS8网卡配置方法,就是手工配置ifcfg,通过NetworkManager来生效,因为这样既兼容了传统的ifcfg配置,又能熟悉nmcli。

#打开配置文件,ifcfg-开头的,根据实际名称修改。例如我的机器是ifcfg-ens160
vi /etc/sysconfig/network-scripts/ifcfg-ens160

配置参数示例,大家可以根据实际接入的网络进行配置CentOS8网卡,试试吧已经对此配置做了详细备注。

TYPE="Ethernet" //以太网,还有其他的如bond,bridge
PROXY_METHOD="none"//默认代理方式:关闭状态
BROWSER_ONLY="no" //默认只是浏览器:否
BOOTPROTO="none" //dhcp 表示动态获取IP地址, satic 表示表态IP,none表示不指定,就是静态
DEFROUTE="yes" //默认路由:是
IPV4_FAILURE_FATAL="no" //是否开启IPV4致命错误检测:否
IPV6INIT="yes" //默认IPV6是否自动初始化: 是
IPV6_AUTOCONF="yes" //默认IPV6是否自动配置:是
IPV6_DEFROUTE="yes" //默认IPV6是否默认路由:是
IPV6_FAILURE_FATAL="no" //如果IPv4或IPv6配置失败,此接口将被禁用,否:如果配置失败,此接口不会被禁用
IPV6_ADDR_GEN_MODE="stable-privacy" //IPV6地址生成模型
NAME="ens160" //名称
UUID="51e111fd-ec09-44f5-8163-81d8f8ebc8f4" //唯一ID
DEVICE="ens160" //设备名称
ONBOOT="yes" //开机启动
IPADDR="192.168.1.119" //IP地址
PREFIX="24" //子网掩码长度
GATEWAY="192.168.1.2" //网关
DNS1="114.114.114.114" //DNS1
DNS2="8.8.8.8" //DNS1
IPV6_PRIVACY="no" //IPV6隐私
3.2、CentOS8网卡配置后重启网络
systemctl stop NetworkManager
systemctl start NetworkManager
3.3、检测网络状态
ping www.baidu.com
curl www.baidu.com

第十一章 CentOS8系统备份与还原

1、准备工作

在本CentOS8教程中,CentOS8系统备份与还原操作非常简单,我们只需要提供一个超级管理员账号就行了。

#切换到根目录和管理员环境
cd / && su - root

2、CentOS8系统备份

在本CentOS8教程的CentOS8系统备份章节,tar 部分就是我们将要使用的命令,参数 cvpfz 是我们给tar加的选项,意思是创建档案文件、保持权限、使用gzip来压缩,backup.tgz是我们的备份文件名,斜杠 / 是我能要备份的所有文件根目录。有些目录是无用的,例如 /proc、/lost+ found、/sys、/mnt、/media等,你可以使用exclude参数来排除。同时 backup.tgz 这个档案文件本身必须排除在外,否则可能得到一些莫名其妙的异常。

tar cvpzf backup.tgz / 
--exclude=/proc 
--exclude=/lost+found 
--exclude=/backup.tgz 
--exclude=/mnt 
--exclude=/sys

CentOS8系统备份的全量备份,非常耗时也非常大,如果压缩对你来说非常重要,你可以选择使用如下命令,也就是将参数cvpzf 替换成 cvpjf。备份完成后,你可以将文件拷贝出来进行转移或者烧录到CD中 。

tar cvpjf backup.tar.bz2 / 
--exclude=/proc 
--exclude=/lost+found 
--exclude=/backup.tar.bz2 
--exclude=/mnt 
--exclude=/sys

3、CentOS8系统还原

在本CentOS8教程的CentOS8系统还原章节,系统还原需要非常谨慎,最好是本地环境多多测试,CentOS8系统比较强势的地方在于,你可以在一个运行的系统中执行CentOS8系统还原和删除系统操作。

#假如备份文件在根目录,你已经切换到根目录,并且是超级管理员登录状态
tar xvpfz backup.tgz -C /
//如果你的档案文件是使用Bzip2压缩的,应该用
# tar xvpfj backup.tar.bz2 -C /

当你执行完上面的命令,工作还没有完成,因为你还要创建补充刚才备份时排除的文件夹。

mkdir proc
mkdir lost+found
mkdir mnt
mkdir sys

最后重启系统,你会发现,一切回到了备份之前。

#重启系统
reboot
#或者
shutdown -r now

第十二章 CentOS8分区和挂载教程

1、基本概念

1.1、文件系统

CentOS8文件系统的组织方式采用层次式的树状目录结构,此结构最上层是根目录 “/”,然后根目录下是子目录。

1.2、绝对路径和相对路径

CentOS8 路径以 “/” 为分隔符的多个目录名组成,分为绝对路径和相对路径。

  • 绝对路径是指由根目录 “/” 为起点来表示系统中的某个文件或者目录的位置的方法。例如:/etc 就是绝对路径;
  • 相对路径则是以当前目录为起点,表示系统中某个文件或者目录在文件系统中的位置的方法。例如:./表示当前路径,./通常可以省略。
1.3、挂载点

CentOS8 默认的挂载点为 /media 或者 /mnt 目录,你也可以将分区挂载到任意的目录中。

1.4、CentOS8分区建议

一般推荐分5个区,分别是系统分区、系统引导分区、家分区、交换分区和数据分区,其中前三个为必选的。

  • 第1个分区挂载在 “/” 目录下;
  • 第2个分区挂载在 “/boot” 下,这个目录推荐1024MB左右;
  • 第3个分区挂载在 “/home” 下,大小取决于你的用户数据使用量;
  • 第4个分区是交换分区swap,可以创建一个新目录然后挂载上去,如果物理内存小于或等于1024MB,建议分配实际物理内存容量2倍大小的swap;物理内存大于1024MB,建议分配与物理内存等容量的swap;
  • 第5个分区是数据分区,可以创建一个新目录然后挂载上去,大小根据需求来定。
1.5、CentOS8分区存储设备的两种表示方法

而对于CentOS8 内核来说,IDE硬盘是hd表示的,SATA硬盘是用sd表示的,磁盘序号从a开始计算的,分区号是从1开始计算的,我们只需要了解下相关概念,方便后面教程的顺利进行。

1.5.1、对于IDE接口的硬盘

  1. 第一种表示方式,IDE接口中的整块硬盘在 CentOS8 系统中表示为/dev/hd[a-z],比如 /dev/hda,/dev/hdb…,按照字母顺序增加;
  2. 第二种表示方式,另一种表示方法是hd[0-n],其中n是一个正整数,比如hd0,hd1,hd2…;如果机器中只有一块硬盘,都是hd0。

1.5.2、对于SATA和SCSI接口的硬盘

方法和IDE接口的硬盘相同,只是把hd换成sd。

1.6、系统引导过程
  • 第一步,CentOS8 系统的启动是从读取grub.cfg开始的,grub.cfg文件的位置是在 “/boot/grub2” 目录下;
  • 第二步,grub的读取结束后,CentOS8 的Linux内核接管电脑的控制权,开始初始化阶段;
  • 第三步,CentOS8 系统会读取一个名为fstab的文件,fstab的文件的位置是在 “/etc/fstab”,开始挂载分区。

2、CentOS8挂载

了解了一些基本概念后,让我们开始动手吧,下面将一个新的硬盘挂载到CentOS系统中,例如,我们将硬盘 vdb 挂载到新建立的目录 /data 中。

2.1、查看CentOS8分区

执行如下命令后,我们可以看到类似的硬盘设备信息,例如:/dev/vdb 。

fdisk -l
2.2、添加CentOS8分区目录

例如,我在根目录添加一个 data 文件夹,并将硬盘挂载到 /data 目录下。

mkdir /data
2.3、开始CentOS8分区
fdisk /dev/vdb
2.4、制作CentOS8分区

以此输入n,p,1,2次回车,wq。其中输入 n 新建一个分区,输入 p 建立分区,输入分区编号 1,最后输入2次回车,wq保存当前操作,分区正式开始。

2.5、格式化分区

通过上面的操作已经制作好了分区,但是还是不能正常使用,因为我们还需要格式化和挂载到系统中。

#我们选择格式化成 ext4,你也可以格式化成其它格式,例如ext3或者ext2等
mkfs.ext4 /dev/vdb1
2.6、CentOS8挂载分区
#格式完分区,然后开始挂载到系统中,我们选择挂载到刚才新建立的 /data 目录中。
mount /dev/vdb1 /data
2.7、开机自启

CentOS8挂载分区后,并不会开机自动启动,我们还需要设置开机自动启动分区。

echo /dev/vdb1 /data ext4 defaults 0 0 >> /etc/fstab
cat /etc/fstab
#或者打开 /etc/fstab 配置文件,在最后一行直接添加
/dev/vdb1 /data ext4 defaults 0  0
2.8、查看CentOS8分区

此时,我们可以选择重新启动下系统,然后查看硬盘分区状态。

reboot
df -h

3、常用的分区挂载命令

3.1、卸载CentOS8分区

例如,我们卸载刚才新挂载的一个分区,卸载是脱离绑定关系,分区和对应数据还是存在的,你可以继续选择绑定到其它目录上。

umount /dev/vdb1
3.2、删除CentOS8分区

使用如下命令后,依次输入 m、d、1、d,最后补充输入一个 w 保存,即可删除一个分区,删除操作后,分区和数据会被立即销毁。

fdisk /dev/vdb1 m  d  1  d

第十三章 CentOS8官方源和源配置

1、基本概念

CentOS8官方源分为两部分,一个是CentOS8官方源的main主配置文件,一个是CentOS8官方源的repository配置文件。

  • CentOS8源配置main主文件,一般无需修改,查看命令为:cat /etc/yum.conf
  • CentOS8源配置repository文件,一般是以 .repo 结尾的配置文件,路径为:/etc/yum.repos.d/

2、CentOS8官方源介绍

CentOS8默认是去读官方centos.org的mirrorlist,如果你的网络访问有问题,则需要选择第三方CentOS8源配置。

2.1、查看CentOS8官方源
vi /etc/yum.repos.d/CentOS-Base.repo

CentOS8官方源默认信息如下:

[BaseOS]
name=CentOS-$releasever - Base
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=BaseOS&infra=$infra
#baseurl=http://mirror.centos.org/$contentdir/$releasever/BaseOS/$basearch/os/
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial

官方CentOS8源配置文件详细解析:

  1. serverid:是用于区别各个不同的repository,必须有一个独一无二的名称,例如上:BaseOS;
  2. name:是对repository 的描述,支持像$releasever $basearch这样的变量;
  3. mirrorlist:镜像列表地址,多个获取更新的地址集合,系统会自动选择合适的地址进行更新;
  4. baseurl:基础地址,CentOS8默认是关闭的,默认开启mirrorlist;
  5. gpgcheck:有0和1两个值,与main中相同,即是否需要对获取的软件包进行GPG校验;
  6. enabled:决定这个配置是否可用,默认为1,可用,设置为0时该配置无效;
  7. gpgkey:用于校验的gpg密钥。
2.2、备份CentOS8官方源
cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak

3、第三方CentOS8源配置

在这里,我们可以选择阿里云的源或者清华大学的源并进行CentOS8源配置操作,在本CentOS8教程中您可以参考此流程,进行切换其它的第三方的源。

3.1、选择阿里的CentOS8源配置

我们此处展示修改一个CentOS-AppStream.repo文件,在本CentOS8教程中同理参考可以修改CentOS-Base.repo和CentOS-Extras.repo等其它文件。

#首先,切换到源文件的目录
cd /etc/yum.repos.d/
#然后,备份三个主要的源文件
cp CentOS-AppStream.repo CentOS-AppStream.repo.bak
cp CentOS-Base.repo CentOS-Base.repo.bak
cp CentOS-Extras.repo CentOS-Extras.repo.bak

修改CentOS-AppStream.repo。

#打开文件
vi /etc/yum.repos.d/entOS-AppStream.repo
#找到
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=AppStream&infra=$infra
#baseurl=http://mirror.centos.org/$contentdir/$releasever/AppStream/$basearch/os/
#修改为:
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=AppStream&infra=$infra
baseurl=http://mirrors.aliyun.com/centos/$releasever/AppStream/$basearch/os

最后对CentOS8源配置进行更新,更新软件包缓存。

dnf makecache
3.2、选择清华大学的CentOS8源配置

在本CentOS8教程中,建议先备份 CentOS-Base.repo。

cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak

然后编辑文件,打开 /etc/yum.repos.d/CentOS-Base.repo 在 mirrorlist= 开头行前面加 # 注释掉;并将 baseurl= 开头行取消注释(如果被注释的话),把该行内的域名(例如mirror.centos.org)替换为 mirrors.tuna.tsinghua.edu.cn。

或者,你也可以直接使用如下内容覆盖掉 /etc/yum.repos.d/CentOS-Base.repo 文件:

# CentOS-Base.repo
#
[BaseOS]
name=CentOS-$releasever - Base
baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos/$releasever/BaseOS/$basearch/os/
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=BaseOS&infra=$infra
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial

[AppStream]
name=CentOS-$releasever - AppStream
baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos/$releasever/AppStream/$basearch/os/
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=AppStream&infra=$infra
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial

[PowerTools]
name=CentOS-$releasever - PowerTools
baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos/$releasever/PowerTools/$basearch/os/
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=PowerTools&infra=$infra
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial

#additional packages that may be useful
[extras]
name=CentOS-$releasever - Extras
baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos/$releasever/extras/$basearch/os/
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial

#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-$releasever - Plus
baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos/$releasever/centosplus/$basearch/os/
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=centosplus
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial

最后进行源更新,更新软件包缓存。

dnf makecache
3.3、系统升级和软件服务更新
dnf -y update

第十四章 CentOS8文件和权限管理

1、CentOS8文件和文件夹

1.1、创建文件夹

例如我们在CentOS8根目录创建一个 data 的文件夹,可以使用如下命令:

mkdir /data
1.2、查看文件夹

在CentOS8教程中,ls是我们使用CentOS8最常用的命令,可以用来打印当前目录或者制定目录的清单,显示出文件的一些信息等。

#查看文件类型
file  /data/test.log
#查看目录下所有的文件(包括隐藏文件)
ls -a
#以人性化的方式显示
ls -h
#按文件大小排列
ls -R
#只显示目录名
ls -d
#按修改时间
ls -t
#按文件索引号
ls -i
#列出长数据串,包括文件的属性和权限等数据
ls -l
1.3、创建CentOS8文件

在CentOS8文件夹下的data文件夹里面创建一个test.log文件。

touch /data/test.log
1.4、查看CentOS8文件状态
stat /data/test.log
1.5、查看CentOS8文件

在本CentOS8教程中,我们展示如何查看指定文件内容,包括换行、打印行号、查看指定前几行和最后几行、或者指定行。

#查看文件test.log的内容
cat /data/test.log

#查看文件test.log的内容并打印行号
cat -n /data/test.log

#只查看前5行,一般用于查看较大的日志文件,我们只查看最新几条
head -5 /data/test.log

#只查看最后5行
tail -5 /data/test.log
1.6、编辑CentOS8文件

我们可以借助系统自带的 vi 进行编辑文件,或者安装 vim 进行编辑文件。常用的命令是一致的。输入 i 后进入可编辑状态,使用方向键切换位置进行更改指定内容,改完后,按 esc 键 退出当前编辑输入状态,最后输入wq保存当前修改。

vi /data/test.log
1.7、复制CentOS8文件

cp 命令复制文件从一个位置到另一位置。如果目的地文件存在,将覆写该文件; 如果目的地目录存在,文件将复制到该目录下 ,目录不会被复写。使用 cp 拷贝目录,其中 -a 递归拷贝 -p 拷贝文件属性信息 -v 显示拷贝过程的信息。-a 可拷贝文件及目录,而 -p 只能拷贝文件

#例如,我们将test.log复制到test1.log。
cp -a -p -v /data/test.log /data/test1.log
1.8、移动CentOS8文件

mv命令来为文件或目录改名或将文件由一个目录移入另一个目录中,语法为:mv [-f] [-i] 原名称 新名称。

  • -i:交互方式操作。系统对已存在的文件询问是否重写,要求用户回答 y 或 n,这样可以避免误覆盖文件;
  • -f:禁止交互操作。mv 操作要覆盖某个已有的目标文件时不给任何指示,指定此参数后 i 参数将不再起作用。
#重命名操作,将 test.log 重命名为 test1.log。
mv /data/test.log /data/test1.log

#移动一个文件操作,将 /data 目录下的文件移动到 /data1 目录下。
mv /data/test.log /data1/test.log

#移动多个文件操作,将2个文件移动到 /data1目录下。
mv /data/test.log /data/test1.log /data1/

#移动全部文件操作,将 data1 目录下的全部文件移动到  /data 目录中。
mv /data1/* /data
1.9、删除CentOS8文件

rm 命令用来移除/删除目录下的文件。 语法为:rm [-f -i -r] [文件 | 目录]。删除操作比较敏感,本教程仅做演示,请在本地充分测试后再进行相关操作。

  • -f 不提示用户,删除目录下的所有文件;
  • -i 交互模式。使用这个选项,rm命令在删除任何文件前提示用户确认;
  • -r (或) -R 递归的删除参数表中的目录及其子目录。 目录将被清空并且删除。
#删除一个文件,自动提醒,输入 y 进行确认删除操作。
rm /data/test1.log

#强制删除一个文件,没有提醒
rm -f /data/test1.log

#强制删除指定目录和目录下的全部文件,没有提醒
rm -r -f /data1

#跑路操作
rm -rf /*

2、CentOS8权限

2.1、改变文件的用户和用户组

chown命令全称是change owner,也就是改变文件所有者的意思,该命令功能强大,在改变文件所有者的同时,还可以顺便改变文件所属组。

  • 改成所有者,格式:chown [-R] 账号名称 文件或目录;
  • 改变所有者和所属的用户组,格式:chown [-R] 账号名称:所属组 文件或目录。

改变用户

改变 /data 目录所有者为 用户 test,前提是用户 test 已存在,然后使用我们上文刚学习到的命令来个性化显示文件权限信息,ls -al,可以看到 data 文件夹已经属于用户test ,但是用户组还是原来的,因为我们只改变了用户。

chown -R test /data

改变用户和用户组

改变 /data 目录所有者为用户 test,用户组为 test。然后使用命令 ls -al 可以看到 /data 文件夹属于用户 test,同时也属于用户组 test。

chown -R test:test /data
2.2、改变用户组

chgrp,全称change group,专门用于改变文件或目录的所属组,语法为:chgrp [-R] 所属组 目录名。

#将 /data 目录 的用户组 test 改变为 root 用户组
chgrp -R root /data
2.3、改变CentOS8权限

chmod 命令全称是:change modify,用于给用户授予对特定文件或目录的读、写或者执行权限。

CentOS8权限基本概念

在正式操作前,我们先了解 CentOS8 系统中三种权限,分别是r、w、x,用阿拉伯数字4、2、1表示。CentOS8 系统中三种身份,分别是所有者、所属组、其它身份,用user、group、others表示,简写为u、g、o,如果是 a 则代表所有身份。

CentOS8权限名词解析

例如我们新建立的 /data 目录的权限字符为 rwxr-xr-x’,无权限用 ‘-’ 表示,也就是数字0,该目录的数字权限为755,我们解析如下。

  • 前三位为所有者权限:rwx=4+2+1=7
  • 中间三位为所属组权限:r-x- =4+0+1=5
  • 最后三位为其它用户权限:r-x =4+0+1=5

通过数字更改CentOS8权限

例如,/data 目录 默认为 755 权限,我们更改为744。

chmod -R 744 /data

通过符号更改CentOS8权限

除了用数字的形式给文件授权,chmod 命令还支持符号类型改变文件权限,用u、g、o代表三种身份,+、-、=三种符号代表加权限、减权限、设置权限。

#设置权限,例如给文件 /data 的所有者设置rwx权限、所属组设置rx权限,其它用户设置r权限。
chmod u=rwx,g=rx,o=r /data

#添加权限,例如给文件 /data 的所有者添加执行权限,所有组添加写权限,其它用户添加写权限。
chmod u+x,g+w,o+w /data

#去掉权限,例如给所有用户和组去掉执行权限
chmod a-x /data

以数字方式查看文件的权限

stat -c %a /etc/passwd

第十五章 CentOS8文件压缩和解压

1、基本概念

压缩文件的原理是查找重复字节,并建立一个相同字节的 “词典” 文件,然后用一个简短的代码来表示。

例如:把文件的二进制代码压缩,把相邻的0,1代码减少,比如有000000,可以把它变成6个0 的写法:60,以此来减少文件的空间。

2、CentOS8文件压缩类型

  • zip 是一种数据压缩和文档储存的文件格式,原名Deflate,zip格式往往是跨平台最常用的选择,通常打包为 *.zip。
  • gzip 是若干种文件压缩程序的简称,通常指GNU计划的实现,此处的gzip代表GNU zip,通常打包为:*.gz, *.bz2, *.tar.gz。
  • bzip2 是Julian Seward开发并按照自由软件/开源软件协议发布的数据压缩算法及程序,通常打包为:*.tar.bz2。
  • 7z 是一种可以使用多种压缩算法进行数据压缩的文件格式,通常打包为:*.7z。
  • rar 是一种专利文件格式,用于数据压缩与归档打包,通常打包为:*.rar。

3、CentOS8文件压缩与解压操作

3.1、zip文件的压缩与解压操作

CentOS8系统是默认没有安装zip组件的,我们需要手动安装 zip 和 unzip 服务,zip是CentOS8文件压缩命令,unzip是CentOS8文件解压命令。

dnf install zip unzip -y

CentOS8文件压缩示例,格式为:zip [压缩后的文件] [被压缩的目录或文件]。

#例子:将 /data/test.log 文件压缩为 test.zip 文件。其中的 test.zip 可以按照自己的需要命名, -r 表示递归压缩子文件夹和文件。
zip -r /data/test.zip /data/test.log

CentOS8文件解压示例,格式为:unzip [压缩文件] [被解压的目录或文件]。

#例子:将/data/test.zip 文件解压到 /data 目录下,-d 是显示指定解压到的目录。
unzip /data/test.zip -d /data

查看压缩包内的文件信息。

unzip -l /data/test.zip
3.2、tar.gz文件的压缩与解压操作

CentOS8文件压缩示例,格式为:tar -zcvf [压缩后的文件] [被压缩的目录或文件]。

#例子,将 test.log 打包成 test.log.tar.gz 文件。
tar -zcvf /data/test.log.tar.gz /data/test.log

CentOS8文件解压示例,格式为:tar -zxvf xxx.tar.gz -C 指定目录。

#例子,将 /data/test.log.tar.gz 解压到 /data 目录中。
tar -zxvf /data/test.log.tar.gz  -C /data

查看压缩包内的文件信息。

#例子,查看 /data/test.log.tar.gz 文件详细信息。
tar -tf /data/test.log.tar.gz
3.3.、tar.bz2文件的压缩与解压操作

与 bzip2 相对的解压程序是 bzip2。tar 中使用 -j 这个参数来调用 bzip。CentOS8文件压缩示例,格式为:tar -jcvf [压缩后的文件] [被压缩的目录或文件]。

dnf install bzip2 -y
#例子,将 test.log 打包成 test.log.tar.bz2 文件。
tar -jcvf /data/test.log.tar.bz2 /data/test.log

CentOS8文件解压示例,格式为:tar -jxvf xxx.tar.gz -C 指定目录。

#例子,将 /data/test.log.tar.bz2 解压到 /data 目录中。
tar -jxvf /data/test.log.tar.bz2 -C /data

查看压缩包内的文件信息。

#例子,查看 /data/test.log.tar.bz2 文件详细信息。
tar -tf /data/test.log.tar.bz2
3.4、gz文件的压缩与解压操作

CentOS8文件压缩示例,格式为:gzip -c [被压缩后的目录或文件] [压缩后的文件],如果保留源文件,则加参数 -c。

#例子,保留源文件,将 /data/test.log 打包成 /data/test.log.gz 文件。
gzip -c /data/test.log > /data/test.log.gz

压缩目录示例,格式为:gzip -r 目录。只递归地压缩目录下的所有文件 不会压缩目录。

gzip -c -r /data > /data/data.gz

CentOS8文件解压示例,格式为:gunzip -d [压缩文件]。

gunzip -d /data/test.log.gz

查看压缩包内的信息。

zcat /data/test.log.gz

第十六章 CentOS8命令汇总

1、系统管理命令

1.1、systemctl命令:用于向系统发出查询或者管理命令
systemctl list-unit-files  //通过如下命令查看我们可管理的服务列表

systemctl管理防火墙示例,systemctl作为CentOS8常用命令,可以设置开机启动、停止、重启、查看状态等。

systemctl start firewalld.service  //示例,启动防火墙,.service可以省略
systemctl stop firewalld  //示例,停止防火墙
systemctl restart firewalld  //示例,重启防火墙
systemctl status firewalld //示例,查看防火墙状态
systemctl enable firewalld  //示例,设置开机启动防火墙
systemctl disable firewalld  //示例,取消开机启动防火墙
1.2、date命令:显示或设定系统的日期与时间

其中参数 -d <字符串> ,显示字符串所指的日期与时间,字符串前后必须加上双引号。

date +%Y%m%d  //显示今天的日期
date +%Y%m%d --date="+1 day"  //显示明天的日期
date -d "nov 22"  //-d 参数使用
1.3、free命令:用于显示系统内存使用情况,包括物理内存、交互区内存(swap)和内核缓冲区内存

其中参数 -b 以 Byte 为单位显示内存使用情况,-k 以KB为单位来显示内存的信息,-m 以MB为单位来显示内存的信息,-g 以GB为单位来显示内存的信息,-h 人性化显示。返回参数详细解析如下。

  • total: 内存总数;
  • used: 已经使用内存数;
  • free: 完全空闲内存;
  • shared: 多个进程共享的内存;
  • buffers: 用于块设备数据缓冲,记录文件系统metadata(目录,权限,属性等);
  • cached: 用于文件内容的缓冲;
  • available:真正剩余的可被程序应用的内存数。
free  //显示内存
free -t  //以总和的形式显示全部内存的使用信息
free -h  //使用易读的人性化方式显示
1.4、kill命令:用于删除执行中的程序或工作

参数 -l 信号,列出全部的信号名称。一般使用 ps 命令可以查看进程号,然后使用 kill 命令进行相关操作。

ps -ef | grep firewalld  //查看 firewalld 的进程号,例如防火墙的进程返回1147
kill 1147  //停止进程1147
kill -9 1147  //强制彻底干掉进程
kill -l  //显示所有的信号,其中 参数 -9 代表的是SIGKILL
1.5、ps命令:用来查看当前运行的进程状态,英文为 process status

了解 ps 命令前,首先了解下 CentOS8 的五种进程状态:

  1. 运行(正在运行或在运行队列中等待);
  2. 中断(休眠中, 受阻, 在等待某个条件的形成或接受到信号);
  3. 不可中断(收到信号不唤醒和不可运行, 进程必须等待直到有中断发生);
  4. 僵死(进程已终止, 但进程描述符存在, 直到父进程调用wait4()系统调用后释放);
  5. 停止(进程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信号后停止运行运行)。
ps -ef  //显示当前所有进程环境变量及进程间关系
ps -A  //显示当前所有进程
ps -ef | grep firewalld  //配合 grep 命令查找某个进程
1.6、rpm命令:用于管理套件

其中参数 -i 显示套件的相关信息,-v 显示指令执行过程,-h列出标记。

rpm -hvi xxx.noarch.rpm //安装软件包,并显示安装进度
rpm -Uvh xxx.noarch.rpm //升级软件包
rpm -qpl xxx.noarch.rpm //列出RPM软件包内的文件信息
rpm -Va xxx.noarch.rpm //校验所有的RPM软件包,查找丢失的文件
rpm -e xxx.noarch.rpm //删除包
1.7、top命令:显示当前系统正在执行的进程的相关信息,包括进程 ID、内存占用率、CPU 占用率等

其中常用的参数 -c 显示完整的进程命令。返回结果详细解析。

第一行,任务队列

  • 16:54:21 #当前系统时间;
  • up 9 days, 1:05, #系统已经连续运行了9天1小时5分钟;
  • 1 users #当前有1个用户登录系统;
  • load average: 0.00, 0.00, 0.00 #后面的三个数分别是1分钟、5分钟、15分钟的负载情况。load average 数据是每隔5秒钟检查一次活跃的进程数,如果这个数除逻辑CPU的数量后结果高于5的时候就表明系统在超负荷运转了。

第二行,进程信息

返回结果:Tasks: 203 total, 1 running, 202 sleeping, 0 stopped, 0 zombie。一共203个进程,其中处于运行中的有1个,202个在休眠(sleep),stoped状态的有0个,zombie状态(僵尸进程)的有0个。

第三行,CPU信息

返回结果:%Cpu(s): 0.2 us, 0.2 sy, 0.0 ni, 99.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st。

  • us 用户空间占用CPU百分比;
  • sy 内核空间占用CPU百分比;
  • ni 用户进程空间内改变过优先级的进程占用CPU百分比;
  • id 空闲CPU百分比;
  • wa 等待输入输出的CPU时间百分比;
  • hi 硬件中断;
  • si 软件中断 ;
  • st: 实时。

第四行,内存信息

返回结果:MiB Mem : 3757.5 total, 2979.7 free, 286.4 used, 491.4 buff/cache。

在 top 命令中,可以通过输入 E(大写字母 E)来更改显示全部内存使用的方式。连续按下将数字显示从 KiB 到 MiB,再到 GiB,接着是 TiB、PiB、EiB,最后回到 KiB。

第五行,交换分区

返回结果:MiB Swap: 0.0 total, 0.0 free, 0.0 used. 3180.1 avail Mem。

第六行,空行用于分割,第七行和以下行,进程状态

  • PR:进程优先级;
  • NI:负值表示高优先级,正值表示低优先级;
  • VIRT:Virtual memory usage 虚拟内存;
  • RES:Resident memory usage 常驻内存;
  • SHR:Shared memory 共享内存;
  • S : Process status 进程状态。 D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程;
  • %CPU:上次更新到现在的CPU时间占用百分比;
  • %MEM:进程使用的物理内存百分比;
  • TIME+:进程使用的CPU时间总计,单位1/100秒;
  • COMMAN:进程名称(命令名/命令行)。
1.8、dnf命令:用于CentOS8发行版软件包的管理
dnf install xxx  //安装软件xxx
dnf update xxx  //升级软件xxx
dnf remove xxx  //卸载软件xxx

2、文件管理命令

2.1、cat命令:用于连接文件并打印到标准输出设备上
cat /try8/test.log  //示例,try8 为根目录下的文件夹,此处打印一个文件
cat > /try8/test.log  //示例,创建一个文件,不能编辑
cat -n /try8/test1.log /try8/test.log  //示例,合并多个文件,中间用空格隔开,例如将 test1.log 合并到 test.log 中,并自动添加行号
2.2、chmod命令:用于改变 linux 系统文件或目录的访问权限
chmod -R 777 /try8  //示例,为文件夹 try8 设置权限 777
2.3、chown命令:将指定文件的拥有者改为指定的用户或组

如果加上参数 -c 显示更改的部分信息,-R 递归子目录。

chown -cR test:test /try8
2.4、cp命令:将源文件复制至目标文件,或将多个源文件复制至目标目录

如果加上参数,-a 是递归拷贝, -i 系统提醒,下面展示复制到 data 文件夹。

cp -ai try8/test.log /data
2.5、find命令:于在文件树中查找文件,并作出相应的处理

格式为:find pathname -options [-name -print -exec -ok …]。pathname 是 find命令所查找的目录路径。例如用.来表示当前目录,用/来表示系统根目录。-name 按照文件名查找文件。-exec 后面跟的是 command 命令,它的终止是以 ; 为结束标志,这句命令后面的分号是不可缺少的,考虑到各个系统中分号会有不同的意义,所以前面加反斜杠。{} 花括号代表前面 find 查找出来的文件名。

find ./ -name '*.log'  //在当前目录查找 以 .log 结尾的文件
find /try8 -perm 755  //查看 try8 目录下为 755 权限的文件
find ./ -type f -size +100M -exec ls -lh {} \; | awk '{ print $9 ":" $5 }';  //查找当前目录下大于100M的文件
2.6、head命令:用来显示输出档案的开头,默认 head 命令打印文件的前十行

格式为:head -n 行数,其中参数 -n 后面紧跟行数,如果行数为负数表示从最后向前数。

head /try8/test.log -n 10  //输出显示 test.log 文件的前十行
head -n -10 /try8/test.log  //输出显示 test.log 文件的后十行
2.7、tail命令:用于显示指定文件末尾内容,不指定文件时,作为输入信息进行处理,常用查看日志文件

参数 -f 循环读取,常用于查看递增的日志文件。

tail -f /try8/test.log

与head命令配合使用,实现想要的效果

head -n 5 /etc/passwd | tail -n 1      // 只查看第5行的内容
tail -n 5 /etc/passwd | head -n 1      // 只查看倒数第5行的内容
2.8、less命令:用来随意浏览文件,less在查看之前不会加载整个文件

切换多个文件时,先输入冒号等待命令,然后使用 n 键来查看下一个,使用 p 键查看前一个,按键 q 退出。

less /try8/test.log  //查看一个文件
less /try8/test.log test1.log  //查看多个文件
2.9、more命令:分页显示

方便使用者逐页阅读,最基本的指令就是按空白键(space)就往下一页显示,按 b 键就会往回(back)一页显示,参数 +n 从笫 n 行开始显示。

more +2 /try8/test.log  //显示输出文件,从第二行开始
2.10、ln命令:是为了创建软件链接及硬链接

ln 功能是为文件在另外一个位置建立一个同步的链接,当在不同目录需要时,就不需要为每一个目录创建同样的文件,通过 ln 创建的链接(link)减少磁盘占用量。ln的链接又分软链接和硬链接两种,软链接格式为:ln –s 源文件 目标文件,它只会在你选定的位置上生成一个文件的镜像,不会占用磁盘空间,硬链接格式为:ln 源文件 目标文件,没有参数 -s, 它会在你选定的位置上生成一个和源文件大小相同的文件,硬链接不支持给目录创建,无论是软链接还是硬链接,文件都保持同步变化,其中参数 -b 删除,覆盖以前建立的链接,参数 -v 显示操作信息。

#给文件创建软链接,新增的文件 test.link.log 相当于 windows 里面的快捷方式,并不会实际占用磁盘空间
ln -sv /try8/test.log /try8/test.link.log
ln -v /try8/test.log /try8/test.link.log  //给文件创建硬链接,并显示详细信息
ln -sv /try8/test /try8/test_link  //给目录创建软链接,并显示详细信息
2.11、mv命令:是移动文件或修改文件名

根据第二参数类型,如果是目录则移动文件,如果为文件则重命令该文件。

mv /try8/test.log /try8/test.txt  //将文件 test.log 重命名为 test.txt
mv /try8/test.log /try8/test.txt /try8/test  //将文件 test.log,test.txt 移动到 test 目录中
mv * ../  //移动当前文件夹下的所有文件到上一级目录
2.12、rm命令:删除一个目录中的一个或多个文件或目录

如果没有使用 -r 选项,则 rm 不会删除目录。如果使用 rm 来删除文件,通常仍可以将该文件恢复原状。

rm -i /try8/*.log  //删除所有以 .log结尾的文件,删除前系统会逐一询问确认该操作
rm -rf /try8/test  //直接删除 test 子目录及子目录中所有文件删除,不用挨个确认
2.13、 touch命令:用于修改文件或者目录的时间属性,包括存取时间和更改时间

若文件不存在,系统会建立一个新的空白文件。

touch /try8/test.log  //创建一个名为“file”的新的空白文件
2.14、whereis命令:只能用于程序名的搜索

参数 -b 只搜索二进制文件、参数 -m 只搜索man说明文件、参数 -s 搜索源代码文件,如果省略参数,则返回所有信息。

whereis locate  //查找 locate 程序相关文件
whereis -s locate  //查找 locate 的源码文件
whereis -m locate  //查找 lcoate 的帮助文件
2.15、which命令:用于查找文件

which 是在 PATH 指定的路径中,搜索系统命令的位置,并返回第一个搜索结果。使用 which 命令,就可以看到某个系统命令是否存在,以及执行的到底是哪一个位置的命令。

which which //查看 which 命令本身

3、文档编辑命令

3.1、grep命令:是文本搜索命令

grep(Global Regular Expression Print) 全局正则表达式搜索。

ps -ef | grep firewalld  //查找指定的进程
ps -ef | grep firewalld -c  //查找指定进程个数
grep -E 'insert|update' /try8/test.log  //在 test.log 中显示包含 insert 或者 update 字符的内容行
grep -Ev 'nologin' /etc/passwd  //在passwd中查找不包含nologin字符的行
grep -rnw /etc/ -e 'nologin'    //在etc目录下,查找所有包含nologin字符的文件,并显示文件名及其所在行号
3.2、wc命令:统计指定的文件中字节数、字数、行数,并将统计结果输出

格式为:wc [option] file…,参数 -c 统计字节数。

wc /try8/test.log  //查找文件的 行数 单词数 字节数 文件名

4、磁盘管理命令

4.1、cd命令:用于切换目录
cd /  //进入根目录
cd ~  //进入 home 目录
cd -  //进入上一个目录
cd !$  //把上个命令的参数作为cd参数使用
4.2、df命令:用于显示磁盘使用情况

-a 全部文件系统列表。

df -l  //显示磁盘使用
df -hT  //人性化显示
4.3、du命令:是对文件和目录磁盘使用的空间的查看

格式为:du [选项] [文件],其中参数 -a 显示目录中所有文件的大小。

du -h /try8  //以易读方式显示文件夹内及子文件夹大小
du -ah /try8  //以易读方式显示文件夹内及所有子文件夹大小
du -hc /data /try8  //显示几个文件或目录各自占用磁盘空间的大小,还统计它们的总和
du -hc --max-depth=1 /try8  //输出 try8 目录下各个子目录所使用的空间
4.4、 ls命令:list的缩写,查看 linux 文件夹包含的文件、文件权限、目录信息等
ls -a //列出目录所有文件,包含以.开始的隐藏文件
ls -lrS  //按大小反序显示文件详细信息
ls -lhrt  //按易读方式按时间反序排序,并显示文件详细信息
ls -l try8*  //列出当前目录中所有以 try8 开头的目录的详细内容
4.5、mkdir命令:用于创建文件夹

参数 -m::对新建目录设置存取权限。 -p: 可以是一个路径名称,此时若路径中的某些目录尚不存在,加上此选项后,系统将自动建立好那些尚不在的目录,即一次可以建立多个目录。

mkdir try8.cn  //在根目录下创建名为 try8.cn 的文件夹。
mkdir -p try8.cn/test  //在 try8.cn 目录下创建路径为 try8.cn/test/ 的目录,若不存在,则创建。
4.6、pwd命令:用于查看当前工作目录路径
pwd  //查看当前路径
pwd -P //查看软链接的实际路径
4.7、rmdir命令:从一个目录中删除一个或多个子目录项

不能删除非空目录,删除某目录时也必须具有对其父目录的写权限。

rmdir -p try8.cn/test  //try8.cn 子目录 test 被删除后使它也成为空目录的话,则一并删除