教程转载整理自:https://try8.cn/article/centos8
CentOS的英文全称为:Community Enterprise Operating System,其中CentOS8是CentOS的最新版本,也叫做社区版企业操作系统,它是企业Linux发行版RHEL(英文全称为:Red Hat Enterprise Linux)的再编译系统版本。
CentOS8官方网站,您可以通过官网浏览CentOS8系统的最新资讯、下载所需版本,或直接在官方社区寻求相关帮助。
CentOS系统的源代码由Red Hat免费提供给公众,因此,CentOS系统的目标是在功能上与RHEL兼容,CentOS Linux是免费的,大家可以按照自己的需要任意免费重新发布。
CentOS系统是由一个规模虽小但不断壮大的核心开发团队开发的,它由一个活跃的社区用户支持,包括系统管理员、网络管理员、管理人员、核心 Linux 贡献者和来自世界各地的 Linux 爱好者。
CentOS8系统的版本每两年发行一次,每个版本会定期(六个月左右)更新一次,以便支持新的硬件,每个CentOS8系统版本有十年左右的系统安全更新支持。
大家可以根据自己的网络选择合适的下载方式,其中CentOS官方下载为默认最新版本,CentOS更多下载包含CentOS7或更早期的CentOS版本,CentOS合作下载是一些公开的第三方下载列表。
CentOS8 支持三种安装方式,分别为:物理机安装、虚拟机安装、云服务器安装方式。
本教程采用云服务器作为开发环境(免安装),无论你使用哪家服务器都OK,操作体验上是大同小异。
从官方提供的支持架构来看,推荐为64位的电脑,主要基于Intel、AMD、IBM等。
可以选择本地安装或网络安装,硬件配置中内存最小为1.5GB,硬盘最小为10 GiB,下面是官方推荐的最小配置。
因为云服务器商提供了后台管理界面,自带一键安装系统的方式,因此本CentOS8教程仅针对手动安装。
进入启动页面后有三个选项,可以使用方向键进行切换,使用回车键选择。
Install CentOS Linux 8 #直接安装
Test this media & install CentOS lINUX 8 #校验文件后安装系统
Troubleshooting #修复故障
首先选择语言,我们选择中文后,进入安装选项,CentOS8安装信息摘要包含三大项:本地化、软件、系统。
用户在等待完成安装的过程中,可以设置默认管理员root的密码,最后依次点击完成配置和重启,最后自动进入系统的登录界面,这时候,只需要输入用户名root和刚才设置的密码就可以自由使用CentOS8了。
首先创建一个普通用户,然后修改系统配置禁止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,使得服务修改生效。
修改默认的SSH登录端口,端口范围是 0-65535,0-1024是系统占用,我们可使用的端口是1024-65535。
vi /etc/ssh/sshd_config //打开配置文件
Port 22 //找到Port参数,去掉注释符号#,同时修改端口号。
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链接,单位为分钟。
开启并设置防火墙开机启动,同时按需开放外部端口,例如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端口
系统规则千万条,安全才是第一条,试试吧 在这里提醒您,我们作为系统的使用者,同时也是维护者,那么系统升级对于安全非常重要,CentOS经历很多年的沉淀,系统级的CentOS8更新足以解决绝大多数安全漏洞,我们只需要经常升级系统即可,应用层面的更新,可以根据你使用的框架或中间组件寻求对应的官方帮助。
dnf update -y
DNF是Dandified YUM的缩写,是一个面向基于RPM的Linux发行版的软件包管理器。
使用DNF必须满足以下2个条件:运行基于RPM的Linux发行版操作系统和设置root的密码。
默认情况下,DNF已经默认安装在CentOS8操作系统中。如果没有预置安装DNF,可以运行以下命令来安装DNF。
yum install dnf //安装DNF
dnf --version //检查DNF的版本
安装DNF后,你可以使用DNF命令进行查询、安装、升级、删除等操作,以下为DNF常用的命令,方便日常使用。
你可以使用如下DNF命令来列出所有、已安装和可用的安装包。
dnf list //列出所有安装包。
dnf list installed //累出所有已安装的软件包。
dnf list available //列出所有可用的软件包。
使用DNF命令来查询httpd软件包信息。
dnf search httpd
使用如下DNF命令来安装和httpd软件包。
dnf install httpd //安装
dnf reinstall httpd //重装
在某些情况下,您需要下载软件包而不需要安装它。你可以用以下DNF命令下载特定的软件包。
dnf download httpd
dnf info httpd //查看一个软件包的详细信息
首先检查软件是否可以升级,然后使用DNF命令进行升级。
dnf check-update //检查软件包升级状态
dnf update //升级软件包
dnf update httpd //如果只升级某一项,可以使用如下命令
dnf grouplist //列出所有的软件包组
dnf groupinstall 'System Tools' //安装指定的软件包组下的所有软件
dnf groupupdate 'System Tools' //升级指定的软件包组下的所有软件
你可以用以下DNF命令列出所有存储库。
dnf repolist all //列出所有的存储库
dnf repolist //仅列出可用的存储库
你可以通过以下DNF命令来删除软件包、软件包组,清理软件包缓存和相关依赖。
dnf remove httpd //您可以从系统中删除任何不需要的包,使用以下命令
dnf autoremove //删除与包httpd一起安装的不需要的依赖项
dnf clean all //清除所有的软件包缓存
dnf groupremove 'System Tools' //删除软件包组
vi /etc/passwd
其中每一行代表一个用户,每行数据使用冒号":"隔开成七个字段,如下用户是系统自动创建,删除可能导致系统异常,请谨慎操作。
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
在此CentOS8教程中,我们以第一项CentOS8用户root为例进行详细解析。
root:x:0:0:root:/root:/bin/bash
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 //删除对应的家目录
使用如下命令打开 CentOS8用户组的配置文件
vi /etc/group
我们可以看到默认的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:
在此CentOS8教程中,我们以第一项root用户组来对此文件进行详细的解析。
root:x:0:
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文件的根目录文件,在此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 //某些大文件的溢出区,比方说各种服务的日志文件
列出CentOS8文件的子目录文件,在此CentOS8教程中,将对CentOS8子目录做出详细说明。
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 //网络配置相关目录
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盘 的装置也记录在此
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 //存放程序的源代码
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 允许的大或需要存在较长时间的临时文件
在本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,则系统会自动去找这两个目录下的所有说明文件
在你开始使用 Git 前,需要将它安装在你的计算机上。 即便已经安装,最好将它升级到最新的版本。在本CentOS8教程中你可以通过软件包或者其它安装程序来安装,或者下载源码编译安装。
dnf install git-all
git --version //查看 Git 版本
dnf update git //升级 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服务。
安装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
本CentOS8教程中,如果第一次使用 Git,你可以选择Git全局配置,创建一个新仓库,推送现有的文件夹,或者推送现有的仓库。
git config --global user.name "username"
git config --global user.email "[email protected]"
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
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
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
Git安装后,一个正常的 Git使用流程,首先从本地提交文件到暂存区,暂存区提交到指定分支,指定分支提交到远程仓库。
git init //仅第一次使用
git add filename //添加一个文件到暂存区
git add filename filename //添加多个文件到暂存区,文件名用空格隔开
git add *.php //使用通配符 * 来批量提交文件
git add . //将工作区中所有未跟踪或者修改的文件添加到暂存区
git add --all //将工作区中所有未跟踪或者修改的文件添加到暂存区
其中,git add . 和 git add --all 使用区别
1.x版(是否处理删除文件)
2.x版(两者功能在提交类型方面是相同的,但是所在目录不同导致差异)
git commit -m "备注信息"
git status
git push origin master
本CentOS8教程通过如上操作,已经完成了 Git安装、初始化以及基本操作流程,但是仅掌握这些命令在实际生产环境是远远不够的,下面 试试吧 总结了一些简洁的常用的Git命令,方便大家使用。
git add .
git commit -m "提交代码"
git push
或者
git push -u origin master
或者强制提交
git push -u origin master -f
git fetch --all
git reset --hard origin/master
git reflog //先用下面命令找到要回退的版本的commit id:
git reset --hard 92168c9f //接着回退版本92168c9f 就是你要回退的版本的commit id的前面几位
git push -f origin master //最后一步, 强制推送到远程
git branch -D 分支名字 //删除本地分支
git push origin :分支名字 //删除远程分支
#第一步,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
#建立新标签并推送到远程
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 标签名称
git checkout -- filename //将filename文件就回到最近一次git commit或git add时的状态
git status //查看状态
dnf list |grep mysql-community-server
dnf install mysql-community-server.x86_64
systemctl start mysqld
chkconfig mysqld on
systemctl status mysqld
grep 'temporary password' /var/log/mysqld.log
本CentOS8教程使用默认管理账号root和初始密码登录MySQL,进行MySQL配置,输入如下命令后根据提示输入密码即可。
mysql -u root -p
use mysql;
flush privileges;
第一步,此处采用 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;
vi /etc/my.cnf.d/mysql-server.cnf
[mysqld]
character-set-server=utf8
vi /etc/my.cnf.d/mysql-server.cnf
[mysqld]
port=53306
vi /etc/my.cnf.d/mysql-server.cnf
[mysqld]
log-error=/tmp
使用命令操作数据库前,先简单的了解下数据库的一些概念,在MySQL中将权限管理分为三类:
我们常用的增删改查以及删库等操作,还有一些权限管理。例如授予权限:grant,取消权限:revoke,刷新权限:flush等,我们会在下面的教程中挨个举例说明。
用户名自己设置,主机名一般是内外网IP或者本机localhost,密码尽量复杂一些,数据库名为自己创建的数据库。
#创建一个新用户
CREATE USER `用户名`@'主机名' IDENTIFIED BY '密码';
#为用户设置一个数据库的权限
#GRANT ALL PRIVILEGES on `数据库名`.* to `用户名`@'主机名';
如果仅限内网登录,无需配置防火墙,如果需要远程登录,需要开放防火墙的3306端口,并设置开放第三方的安全组等。
#远程登录需要开放端口,默认为3306
firewall-cmd --zone=public --add-port=3306/tcp --permanent
#mysql -h主机名 -P端口 -u用户名 -p密码
#例如,登录密码为123456
mysql -hlocalhost -P3306 -uroot -p123456
#第一步,首先停止服务
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/
Crontab是系统定时任务计划,也称之为系统作业,用于周期性的执行程序。crontab定时任务的工作主要分为以下两类。
crond 服务一般在CentOS8系统中默认安装,在本CentOS8教程中,我们可以使用如下命令查看Crontab定时任务的服务状态。
systemctl status crond
如果不存在,我们可以用这个命令安装。
dnf install crontabs
例如查看CentOS8系统中用户nobody的Crontab定时任务,不加-u参数,则查看当前用户的作业。
crontab -l -u nobody
如果目录已经存在指定的文件(文件名为当前用户名),则会编辑文件,否则将会以当前用户名创建作业文件,注意/var/spool/cron是用户任务,/etc/crontab是系统任务。
crontab -e -u nobody
crontab -r -u nobody
systemctl restart crond
systemctl stop crond
在 /var/log目录下,cron打头的就是系统作业执行的日志文件。
在 /etc/crontab目录下,这些任务都会是系统在运行起来后自动进行调度的。
在 /etc/cron.deny 表示不能使用Crontab命令的用户。
在 /etc/cron.allow 表示能使用Crontab的用户。如果/etc/cron.deny和/etc/cron.allow同时存在,那么/etc/cron.allow 优先。如果两个文件都不存在,那么只有root用户可以安排作业。
crontab -e
* * * * * command // 前五个字段可以取整数值,指定何时开始工作,第六个域是命令字段。 字段之间用空格分割。
例如:每天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
在 CentOS7上同时支持network.service和NetworkManager.service。默认情况下,这2个服务都有开启。在CentOS8上,已废弃network.service(只能手动去安装),默认安装的是NetworkManager.service,因此本CentOS8教程推荐通过NetworkManager.service进行网络配置,CentOS8网卡配置包括设置动态和静态IP。
NetworkManager是2004年Red Hat启动的项目,旨在能够让Linux用户更轻松地处理现代网络需求,尤其是无线网络,能自动发现网卡并配置ip地址。类似在手机上同时开启wifi和蜂窝网络,CentOS8网络自动探测可用网络并连接,无需手动切换CentOS8网卡。
在NetworkManager里,有2个维度:连接(connection)和设备(device),可以为一个设备配置多个连接,本CentOS8教程中特别需要指出的是,一个设备只能有一个活跃连接,每个连接可以理解为一个 ifcfg 配置文件。
nmcli connection
nmcli device
nmcli c up
nmcli
nmcli c up ens160
nmcli c down
nmcli c delete ens160
nmcli c show ens160
nmcli c up ens160
nmcli d reapply ens160
nmcli d connect ens160
#查看设备信息
nmcli d
#查看指定device的详细信息
nmcli d show ens160
nmcli d connect ens160
nmcli r all off
通过NetworkManager进行CentOS8网卡配置时候,会自动将connection同步到ifcfg配置文件中,其中本CentOS8教程特别指出eth和ens的区别,ethX是真实物理网卡,ensX是虚拟网络会话。
本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隐私
systemctl stop NetworkManager
systemctl start NetworkManager
ping www.baidu.com
curl www.baidu.com
在本CentOS8教程中,CentOS8系统备份与还原操作非常简单,我们只需要提供一个超级管理员账号就行了。
#切换到根目录和管理员环境
cd / && su - root
在本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
在本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文件系统的组织方式采用层次式的树状目录结构,此结构最上层是根目录 “/”,然后根目录下是子目录。
CentOS8 路径以 “/” 为分隔符的多个目录名组成,分为绝对路径和相对路径。
CentOS8 默认的挂载点为 /media 或者 /mnt 目录,你也可以将分区挂载到任意的目录中。
一般推荐分5个区,分别是系统分区、系统引导分区、家分区、交换分区和数据分区,其中前三个为必选的。
而对于CentOS8 内核来说,IDE硬盘是hd表示的,SATA硬盘是用sd表示的,磁盘序号从a开始计算的,分区号是从1开始计算的,我们只需要了解下相关概念,方便后面教程的顺利进行。
1.5.1、对于IDE接口的硬盘
1.5.2、对于SATA和SCSI接口的硬盘
方法和IDE接口的硬盘相同,只是把hd换成sd。
了解了一些基本概念后,让我们开始动手吧,下面将一个新的硬盘挂载到CentOS系统中,例如,我们将硬盘 vdb 挂载到新建立的目录 /data 中。
执行如下命令后,我们可以看到类似的硬盘设备信息,例如:/dev/vdb 。
fdisk -l
例如,我在根目录添加一个 data 文件夹,并将硬盘挂载到 /data 目录下。
mkdir /data
fdisk /dev/vdb
以此输入n,p,1,2次回车,wq。其中输入 n 新建一个分区,输入 p 建立分区,输入分区编号 1,最后输入2次回车,wq保存当前操作,分区正式开始。
通过上面的操作已经制作好了分区,但是还是不能正常使用,因为我们还需要格式化和挂载到系统中。
#我们选择格式化成 ext4,你也可以格式化成其它格式,例如ext3或者ext2等
mkfs.ext4 /dev/vdb1
#格式完分区,然后开始挂载到系统中,我们选择挂载到刚才新建立的 /data 目录中。
mount /dev/vdb1 /data
CentOS8挂载分区后,并不会开机自动启动,我们还需要设置开机自动启动分区。
echo /dev/vdb1 /data ext4 defaults 0 0 >> /etc/fstab
cat /etc/fstab
#或者打开 /etc/fstab 配置文件,在最后一行直接添加
/dev/vdb1 /data ext4 defaults 0 0
此时,我们可以选择重新启动下系统,然后查看硬盘分区状态。
reboot
df -h
例如,我们卸载刚才新挂载的一个分区,卸载是脱离绑定关系,分区和对应数据还是存在的,你可以继续选择绑定到其它目录上。
umount /dev/vdb1
使用如下命令后,依次输入 m、d、1、d,最后补充输入一个 w 保存,即可删除一个分区,删除操作后,分区和数据会被立即销毁。
fdisk /dev/vdb1 m d 1 d
CentOS8官方源分为两部分,一个是CentOS8官方源的main主配置文件,一个是CentOS8官方源的repository配置文件。
CentOS8默认是去读官方centos.org的mirrorlist,如果你的网络访问有问题,则需要选择第三方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源配置文件详细解析:
cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak
在这里,我们可以选择阿里云的源或者清华大学的源并进行CentOS8源配置操作,在本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
在本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
dnf -y update
例如我们在CentOS8根目录创建一个 data 的文件夹,可以使用如下命令:
mkdir /data
在CentOS8教程中,ls是我们使用CentOS8最常用的命令,可以用来打印当前目录或者制定目录的清单,显示出文件的一些信息等。
#查看文件类型
file /data/test.log
#查看目录下所有的文件(包括隐藏文件)
ls -a
#以人性化的方式显示
ls -h
#按文件大小排列
ls -R
#只显示目录名
ls -d
#按修改时间
ls -t
#按文件索引号
ls -i
#列出长数据串,包括文件的属性和权限等数据
ls -l
在CentOS8文件夹下的data文件夹里面创建一个test.log文件。
touch /data/test.log
stat /data/test.log
在本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
我们可以借助系统自带的 vi 进行编辑文件,或者安装 vim 进行编辑文件。常用的命令是一致的。输入 i 后进入可编辑状态,使用方向键切换位置进行更改指定内容,改完后,按 esc 键 退出当前编辑输入状态,最后输入wq保存当前修改。
vi /data/test.log
cp 命令复制文件从一个位置到另一位置。如果目的地文件存在,将覆写该文件; 如果目的地目录存在,文件将复制到该目录下 ,目录不会被复写。使用 cp 拷贝目录,其中 -a 递归拷贝 -p 拷贝文件属性信息 -v 显示拷贝过程的信息。-a 可拷贝文件及目录,而 -p 只能拷贝文件。
#例如,我们将test.log复制到test1.log。
cp -a -p -v /data/test.log /data/test1.log
mv命令来为文件或目录改名或将文件由一个目录移入另一个目录中,语法为:mv [-f] [-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
rm 命令用来移除/删除目录下的文件。 语法为:rm [-f -i -r] [文件 | 目录]。删除操作比较敏感,本教程仅做演示,请在本地充分测试后再进行相关操作。
#删除一个文件,自动提醒,输入 y 进行确认删除操作。
rm /data/test1.log
#强制删除一个文件,没有提醒
rm -f /data/test1.log
#强制删除指定目录和目录下的全部文件,没有提醒
rm -r -f /data1
#跑路操作
rm -rf /*
chown命令全称是change owner,也就是改变文件所有者的意思,该命令功能强大,在改变文件所有者的同时,还可以顺便改变文件所属组。
改变用户
改变 /data 目录所有者为 用户 test,前提是用户 test 已存在,然后使用我们上文刚学习到的命令来个性化显示文件权限信息,ls -al,可以看到 data 文件夹已经属于用户test ,但是用户组还是原来的,因为我们只改变了用户。
chown -R test /data
改变用户和用户组
改变 /data 目录所有者为用户 test,用户组为 test。然后使用命令 ls -al 可以看到 /data 文件夹属于用户 test,同时也属于用户组 test。
chown -R test:test /data
chgrp,全称change group,专门用于改变文件或目录的所属组,语法为:chgrp [-R] 所属组 目录名。
#将 /data 目录 的用户组 test 改变为 root 用户组
chgrp -R root /data
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,我们解析如下。
通过数字更改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
压缩文件的原理是查找重复字节,并建立一个相同字节的 “词典” 文件,然后用一个简短的代码来表示。
例如:把文件的二进制代码压缩,把相邻的0,1代码减少,比如有000000,可以把它变成6个0 的写法:60,以此来减少文件的空间。
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
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
与 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
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
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 //示例,取消开机启动防火墙
其中参数 -d <字符串> ,显示字符串所指的日期与时间,字符串前后必须加上双引号。
date +%Y%m%d //显示今天的日期
date +%Y%m%d --date="+1 day" //显示明天的日期
date -d "nov 22" //-d 参数使用
其中参数 -b 以 Byte 为单位显示内存使用情况,-k 以KB为单位来显示内存的信息,-m 以MB为单位来显示内存的信息,-g 以GB为单位来显示内存的信息,-h 人性化显示。返回参数详细解析如下。
free //显示内存
free -t //以总和的形式显示全部内存的使用信息
free -h //使用易读的人性化方式显示
参数 -l 信号,列出全部的信号名称。一般使用 ps 命令可以查看进程号,然后使用 kill 命令进行相关操作。
ps -ef | grep firewalld //查看 firewalld 的进程号,例如防火墙的进程返回1147
kill 1147 //停止进程1147
kill -9 1147 //强制彻底干掉进程
kill -l //显示所有的信号,其中 参数 -9 代表的是SIGKILL
了解 ps 命令前,首先了解下 CentOS8 的五种进程状态:
ps -ef //显示当前所有进程环境变量及进程间关系
ps -A //显示当前所有进程
ps -ef | grep firewalld //配合 grep 命令查找某个进程
其中参数 -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 //删除包
其中常用的参数 -c 显示完整的进程命令。返回结果详细解析。
第一行,任务队列
第二行,进程信息
返回结果: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。
第四行,内存信息
返回结果: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。
第六行,空行用于分割,第七行和以下行,进程状态
dnf install xxx //安装软件xxx
dnf update xxx //升级软件xxx
dnf remove xxx //卸载软件xxx
cat /try8/test.log //示例,try8 为根目录下的文件夹,此处打印一个文件
cat > /try8/test.log //示例,创建一个文件,不能编辑
cat -n /try8/test1.log /try8/test.log //示例,合并多个文件,中间用空格隔开,例如将 test1.log 合并到 test.log 中,并自动添加行号
chmod -R 777 /try8 //示例,为文件夹 try8 设置权限 777
如果加上参数 -c 显示更改的部分信息,-R 递归子目录。
chown -cR test:test /try8
如果加上参数,-a 是递归拷贝, -i 系统提醒,下面展示复制到 data 文件夹。
cp -ai try8/test.log /data
格式为: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的文件
格式为:head -n 行数,其中参数 -n 后面紧跟行数,如果行数为负数表示从最后向前数。
head /try8/test.log -n 10 //输出显示 test.log 文件的前十行
head -n -10 /try8/test.log //输出显示 test.log 文件的后十行
参数 -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行的内容
切换多个文件时,先输入冒号等待命令,然后使用 n 键来查看下一个,使用 p 键查看前一个,按键 q 退出。
less /try8/test.log //查看一个文件
less /try8/test.log test1.log //查看多个文件
方便使用者逐页阅读,最基本的指令就是按空白键(space)就往下一页显示,按 b 键就会往回(back)一页显示,参数 +n 从笫 n 行开始显示。
more +2 /try8/test.log //显示输出文件,从第二行开始
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 //给目录创建软链接,并显示详细信息
根据第二参数类型,如果是目录则移动文件,如果为文件则重命令该文件。
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 * ../ //移动当前文件夹下的所有文件到上一级目录
如果没有使用 -r 选项,则 rm 不会删除目录。如果使用 rm 来删除文件,通常仍可以将该文件恢复原状。
rm -i /try8/*.log //删除所有以 .log结尾的文件,删除前系统会逐一询问确认该操作
rm -rf /try8/test //直接删除 test 子目录及子目录中所有文件删除,不用挨个确认
若文件不存在,系统会建立一个新的空白文件。
touch /try8/test.log //创建一个名为“file”的新的空白文件
参数 -b 只搜索二进制文件、参数 -m 只搜索man说明文件、参数 -s 搜索源代码文件,如果省略参数,则返回所有信息。
whereis locate //查找 locate 程序相关文件
whereis -s locate //查找 locate 的源码文件
whereis -m locate //查找 lcoate 的帮助文件
which 是在 PATH 指定的路径中,搜索系统命令的位置,并返回第一个搜索结果。使用 which 命令,就可以看到某个系统命令是否存在,以及执行的到底是哪一个位置的命令。
which which //查看 which 命令本身
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字符的文件,并显示文件名及其所在行号
格式为:wc [option] file…,参数 -c 统计字节数。
wc /try8/test.log //查找文件的 行数 单词数 字节数 文件名
cd / //进入根目录
cd ~ //进入 home 目录
cd - //进入上一个目录
cd !$ //把上个命令的参数作为cd参数使用
-a 全部文件系统列表。
df -l //显示磁盘使用
df -hT //人性化显示
格式为:du [选项] [文件],其中参数 -a 显示目录中所有文件的大小。
du -h /try8 //以易读方式显示文件夹内及子文件夹大小
du -ah /try8 //以易读方式显示文件夹内及所有子文件夹大小
du -hc /data /try8 //显示几个文件或目录各自占用磁盘空间的大小,还统计它们的总和
du -hc --max-depth=1 /try8 //输出 try8 目录下各个子目录所使用的空间
ls -a //列出目录所有文件,包含以.开始的隐藏文件
ls -lrS //按大小反序显示文件详细信息
ls -lhrt //按易读方式按时间反序排序,并显示文件详细信息
ls -l try8* //列出当前目录中所有以 try8 开头的目录的详细内容
参数 -m::对新建目录设置存取权限。 -p: 可以是一个路径名称,此时若路径中的某些目录尚不存在,加上此选项后,系统将自动建立好那些尚不在的目录,即一次可以建立多个目录。
mkdir try8.cn //在根目录下创建名为 try8.cn 的文件夹。
mkdir -p try8.cn/test //在 try8.cn 目录下创建路径为 try8.cn/test/ 的目录,若不存在,则创建。
pwd //查看当前路径
pwd -P //查看软链接的实际路径
不能删除非空目录,删除某目录时也必须具有对其父目录的写权限。
rmdir -p try8.cn/test //try8.cn 子目录 test 被删除后使它也成为空目录的话,则一并删除