LinuxLinux

RedHat/CentOS8 快速运维白皮书

2020-09-11  本文已影响0人  张毅SOHO

本文是一篇 RedHat/CentOS8 发行版本的快速运维入门指南,整理了在安装、配置、使用 RedHat/CentOS8 服务器时使用频率较高的通用知识要点。

本方案基于 CentOS8 系统设计,建议在 RedHat/CentOS8 系统中使用。

目录

1.系统安装

2.系统初始化

3.基础知识
-- 3.1.文件系统结构
-- 3.2.目录文件信息
-- 3.3.磁盘分区信息

4.应用软件安装
-- 4.1.二进制程序安装
-- 4.2.二进制压缩包安装
-- 4.3.源代码压缩包安装
-- 4.4.RPM 安装包安装
-- 4.5.YUM 源安装

5.使用 root 用户的身份执行命令

6.系统服务配置

7.常用运维命令
-- 7.1.用户和组管理
-- 7.2.目录和文件管理
-- 7.3.文件编辑
-- 7.4.系统管理

更多 Linux 运维命令和使用方式请阅读文件【https://www.runoob.com/linux/linux-command-manual.html


1.系统安装

1、在虚拟化场景下,建议将磁盘分成系统盘和数据盘配装,系统盘用于安装操作系统,建议分配磁盘空间40G~60G(但最低不少于20G);数据盘在安装系统后挂载,建议分配全部剩余空间。

2、在设置安装目的地时,要使用自定义的设置方案,至少要挂载三个分区,三个分区的作用及磁盘空间分配原则是:

磁盘分区

1)"/boot"(启动分区)

存放开机时所要用的文件,包括Linux核心文件、开机菜单和开机所要的配置文件。建议分配磁盘空间:1G。

2)"/swap"(虚拟内存分区)

配置为操作系统的虚拟内存空间。建议分配磁盘空间:当物理内存<4G时,分配空间=物理内存*2;当4G≥物理内存<8G时,分配空间=物理内存;当8G≥物理内存<64G时,分配空间=8G;当64G≥物理内存<256G时,分配空间=16G;当物理内存≥256G时,分配空间=32G。

3)"/"(根分区)

存放操作系统文件。建议分配空间:/boot和/swap分区以外的全部剩余空间。

3、在设置软件选择时,建议选择带有GUI的服务器(CentOS8默认模式),该模式下的提供一些基础工具会使系统运维时更加便利。但不必勾选安装的额外软件。

安装模式

4、建议设置时区、语言、键盘为本地化适配(如:汉语,中国上海时区),以及主机名。这些设置在系统安装完成后仍可以进行变更。

语言 时区 主机名和网络

5、建议不要设置 "root" 账户的口令(根口令),因为这样就无法使用 "root" 账户登录系统,从而增加了系统的安全性。同时需要创建一个新的管理员用户(如 "admin" 账户),用于替代 "root" 账户进行系统管理操作,要注意创建用户时设置足够强度的口令并将这个用户设为管理员。

用户设置 创建管理员用户

2.系统初始化

服务器初始化规范行为步骤清单:

1、设置主机名。

使用文本编辑器打开"/etc/hostname"文件:

[admin@host ~]$ sudo gedit /etc/hostname

修改主机名并保存:

host

重启后生效:

[admin@host ~]$ reboot

2、设置静态 IP 地址。

第一步 第二步 第三步

注意:应用 IP 配置后,在 “第二步” 界面上重新【关闭/打开】 网卡后才能生效。

3、设置时区和日期时间服务器。

1)设置时区为 "中国上海":

[admin@host ~]$ sudo gedit /etc/hostname

2)设置日期时间同步配置:

使用文本编辑器打开"/etc/chrony.conf"文件:

[admin@host ~]$ sudo gedit /etc/chrony.conf

验证或修改以下配置并保存:

# 其中【2.centos.pool.ntp.org】是时间服务器地址
pool 2.centos.pool.ntp.org iburst

3)开启时区和日期时间的自动同步:


4、关闭 SELinux。

SELinux 全称【安全增强型 Linux(Security-Enhanced Linux)】,它是一个 Linux 内核模块,也是 Linux 的一个安全子系统。SELinux 主要作用就是最大限度地减小系统中服务进程可访问的资源(最小权限原则)。

SELinux 在多数服务器应用场景中,普遍属于过度的安全保障,其负作用是在应用软件的安全和配置时产生过多的非必要限制,对于 SELinux 管理经验不足的技术人员来说是极大的运维负担。

使用文本编辑器打开 "/etc/selinux/config" 文件:

[admin@host ~]$ sudo gedit /etc/selinux/config

将 "SELINUX" 参数设置为:"disabled",并保存:

# enforcing - 表示启用 SELinux 安全策略。
# permissive - 表示启用 SELinux 安全策略,但不强制验证。如果执行第一步可以正常运行,则建议设置此值。
# disabled - 关闭 SELinux 安全策略,相当于没有安装 SELinux。
SELINUX=disabled

重启后生效:

[admin@host ~]$ reboot

更多关于 SELinux 引发的问题解决方案请阅读文章《RedHat/CentOS8【SELinux】引起的安全策略问题解决方案》【https://www.jianshu.com/p/a13f974f8bae

5、关闭防火墙(若适用)。

CentOS8 默认使用 Firewall 作为防火墙工具,Firewall 是网络流量控制程序,能够阻止未被操作系统授权的网络请求,在接入互联网的应用场景中,关闭防火墙将会使操作系统更容易遭受外部攻击。

但是在私有网络的应用场景中,可以选择关闭防火墙,这样可以避免对网络策略的维护工作。

注意:如果服务器作为 Docker 或 K8s 系统的宿主机,那必须关闭防火墙。因为在容器化应用场景中,防火墙策略会影响容器网络的正常运行。

1)关闭防火墙服务并禁止开机自启动:

[admin@host ~]$ sudo systemctl stop firewalld
[admin@host ~]$ sudo systemctl disable firewalld

2)启动(重新启动)防火墙服务并设置开机自启动:

[admin@host ~]$ sudo systemctl restart firewalld
[admin@host ~]$ sudo systemctl enable firewalld

3)向外部主机开放网络安全策略(如允许外部主机访问服务器的 80 端口):

[admin@host ~]$ sudo firewall-cmd --zone=public --add-port=80/tcp --permanent
[admin@host ~]$ sudo firewall-cmd --reload

6、配置本地名字解析(若适用)。

Linux 系统通过一个配置文件("/etc/hosts")向本地服务器提供名字解析,解析优先级高于 DNS 服务器。当应用软件需要通过域名来访问外部服务,而 DNS 服务器没有定义该域名或者该域名被污染的情况下,可以在该配置文件中定义名字解析。

使用文本编辑器打开 "/etc/hosts" 文件:

[admin@host ~]$ sudo gedit /etc/hosts

在文件中追加各个节点的 IP 和 DNS 映射记录并保存:

192.168.0.21 host1.cluster.local
192.168.0.22 host2.cluster.local
192.168.0.23 host3.cluster.local
...

测试名字服务:

[admin@host ~]$ nslookup host1.cluster.local

Server:     192.168.0.2
Address:    192.168.0.2#53

Non-authoritative answer:
Name:   host1.cluster.local
Address: 192.168.0.21

7、挂载外部磁盘(若适用)。

在主机存储资源不足时,一般会采取向主机中添加硬盘的方式解决,这种方式有时也用于在虚拟机中实现操作系统和数据分离存储,是有效的数据安全手段。在主机中增加磁盘后,操作系统不会自动识别,需要通过“挂载”过程,使磁盘有效。

1)将硬盘接入主机后,查看系统是否已经正确识别了硬盘:

[admin@host ~]$ sudo fdisk -l

Disk /dev/sdb:40 GiB,42949672960 字节,83886080 个扇区
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节

2)在新磁盘上创建分区:

[admin@host ~]$ sudo fdisk /dev/sdb

欢迎使用 fdisk (util-linux 2.32.1)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。

设备不包含可识别的分区表。
创建了一个磁盘标识符为 0x6232febd 的新 DOS 磁盘标签。

命令(输入 m 获取帮助):n
# 输入【n】表示创建分区。

分区类型
   p   主分区 (0个主分区,0个扩展分区,4空闲)
   e   扩展分区 (逻辑分区容器)
选择 (默认 p):p 
# 选择创建的分区类型,其中【p】表示主分区(默认值,最多可以建 4 个),【e】表示扩展分区。

分区号 (1-4, 默认  1): 1
# 输入分区号,主分区为 1-4(默认为 1)。

第一个扇区 (2048-83886079, 默认 2048): 
# 输入分区的起始位置值,建议使用默认值,不会造成空间浪费。

上个扇区,+sectors 或 +size{K,M,G,T,P} (2048-83886079, 默认 83886079):
# 第五步,输入分区的终止位置值,如果将剩余空间全部划分到该分区中,建议使用默认值;也可以通过计算得到终止的位置值,直接输入;但是建议采用输入“+size{K,M,G,T,P}”的方式,如:“+200M”是指该分区的大小为200M。

创建了一个新分区 1,类型为“Linux”,大小为 40 GiB。

命令(输入 m 获取帮助):w
# 输入【w】保存建立的分区表。

分区表已调整。
将调用 ioctl() 来重新读分区表。
正在同步磁盘。

3)查看系统是否已经正确创建了分区:

[admin@host ~]$ sudo fdisk -l

Disk /dev/sdb:40 GiB,42949672960 字节,83886080 个扇区
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x6232febd

设备       启动  起点     末尾     扇区 大小 Id 类型
/dev/sdb1        2048 83886079 83884032  40G 83 Linux

4)格式化分区:

[admin@host ~]$ sudo mkfs.ext4 /dev/sdb1

mke2fs 1.45.4 (23-Sep-2019)
创建含有 10485504 个块(每块 4k)和 2621440 个inode的文件系统
文件系统UUID:dd71503f-5f61-4d99-9334-7e8f21e7ae39
超级块的备份存储于下列块: 
    32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
    4096000, 7962624

正在分配组表: 完成                            
正在写入inode表: 完成                            
创建日志(65536 个块)完成
写入超级块和文件系统账户统计信息: 已完成 

5)创建挂载目录:

[admin@host ~]$ sudo mkdir -p /data

6)挂载分区:

使用文本编辑器打开 "/etc/fstab" 文件:

[admin@host ~]$ sudo gedit /etc/fstab

在文件中追加以下内容并保存:

/dev/sdb1 /data ext4 defaults 0 2

格式:<file system> <mount point> <type> <options> <dump> <pass> ,使用空格(space)或制表符(tab)分隔。

说明:

  • <file system>:设备(分区)的名字,也可以用UUID或卷名。格式为:LABEL=<label> 或UUID=<uuid>。如:LABEL=Boot 或UUID=3e6be9de-8139-11d1-9106-a43f08d823a6。
  • <mount point>:挂载点,必须是已存在的文件目录,如果目录中已有内容,则会隐藏,取消挂载后自动恢复。
  • <type>:挂载设备或分区为何种文件系统类型(例如:ext2, ext3, reiserfs, xfs, jfs, smbfs, iso9660, vfat, ntfs, swap等)。
  • <options>:
    ① 自动与手动挂载。“auto”表示在启动或在终端中输入mount -a时自动挂载;“noauto”表示设备(分区)只能手动挂载。
    ② 读写权限。“ro”表示挂载为只读权限;“rw”表示挂载为读写权限。
    ③ 可执行。“exec”是一个默认设置项,使所在分区中的可执行文件能够执行;“noexec”使可执行文件不允许执行(勿要在root分区中用这个选项)。
    ④ I/O同步。“sync”表示所有的I/O将以同步方式进行;“async”表示所有的I/O将以异步方式进行。
    ⑤ 用户挂载权限。“user”表示允许任何用户挂载设备;“nouser”表示只允许root用户挂载。
    ⑥ defaults,使用默认设置。默认值包括rw,suid,dev,exec,auto,nouser,async;
  • <dump>:dump utility用来决定是否做备份的,允许的数字是0和1。“0”表示dump就会忽略这个文件系统;“1”表示dump就会作一个备份。大部分的用户是没有安装dump的,因此一般可写为“0”。
  • <pass>:是否以fsck检验扇区。启动的过程中,系统默认会以fsck检验我们的 filesystem 是否完整 (clean),允许的数字是“0, 1, 2”。“0”表示不检验,如“swap分区”;“1”表示优先检验(一般只有根分区会配置为 1);“2”表示要滞后检验(一般除“0”或“1”以外,其他需要检验的分区配置为 2)。

7)重启后生效:

[admin@host ~]$ reboot

8、配置系统软件源。

由于 Linux 系统预装的基础软件体量小,在安装或运行新软件时,就会因为缺失基础软件(或基础软件版本低)而导致失败,也就是通常说的“软件依赖关系问题”,而这对于 Linux 系统来说是一个大问题。

为了解决这个问题,通常 Linux 系统发行方(如:CentOS)和第三方(如:阿里云)都会提供互联网公共软件仓库。Linux 系统通过工具(如:dnf,yum)自动软件仓库中完成:下载 rpm 包、自动处理包依赖关系,并且能够一次安装所有所依赖 rpm 包的自动化流程。

CentOS8 默认的官方软件源是国外的,通常情况下需要配置成国内软件源(如:阿里云),操作步骤如下:

1)备份现有的 yum 源配置文件。yum 源配置文件是 "/etc/yum.repos.d" 目录下的 "*.repo" 文件,备份该目录,以便于操作失败时恢复。

[admin@host ~]$ sudo cp -r /etc/yum.repos.d /etc/yum.repos.d.bak

2)修改 "/etc/yum.repos.d" 目录下的 "CentOS-AppStream.repo"、"CentOS-Base.repo"和"CentOS-Extras.repo" 文件。改为国内阿里云 yum 源。

使用文本编辑器打开 "CentOS-AppStream.repo" 文件:

[admin@host ~]$ sudo gedit /etc/yum.repos.d/CentOS-AppStream.repo

修改为以下内容后保存:

[AppStream]
name=CentOS-$releasever- AppStream
baseurl=http://mirrors.aliyun.com/centos/$releasever/AppStream/$basearch/os/
gpgcheck=1
enabled=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-Official

使用文本编辑器打开"CentOS-Base.repo"文件:

[admin@host ~]$ sudo gedit /etc/yum.repos.d/CentOS-Base.repo

修改为以下内容后保存:

[BaseOS]
name=CentOS-$releasever- Base
baseurl=http://mirrors.aliyun.com/centos/$releasever/BaseOS/$basearch/os/
gpgcheck=1
enabled=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-Official

使用文本编辑器打开"CentOS-Extras.repo"文件:

[admin@host ~]$ sudo gedit /etc/yum.repos.d/CentOS-Extras.repo

修改为以下内容后保存:

[extras]
name=CentOS-$releasever- Extras
baseurl=http://mirrors.aliyun.com/centos/$releasever/extras/$basearch/os/
gpgcheck=1
enabled=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-Official

[epel-modular]
name=Extra Packages for Enterprise Linux Modular $releasever - $basearch
baseurl=http://mirrors.aliyun.com/epel/$releasever/Modular/$basearch
enabled=1
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/epel/RPM-GPG-KEY-EPEL-8

[epel]
name=Extra Packages for Enterprise Linux $releasever - $basearch
baseurl=http://mirrors.aliyun.com/epel/$releasever/Everything/$basearch
enabled=1
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/epel/RPM-GPG-KEY-EPEL-8

3)刷新 yum 源缓存。使新的 yum 源配置生效:

[admin@host ~]$ sudo dnf clean all
[admin@host ~]$ sudo dnf makecache

更多关于软件源配置的内容请阅读文章《RedHat/CentOS8 【国内/本地/私有 Yum 源】制作和使用》【https://www.jianshu.com/p/68db74388600

9、更新系统并重启计算机。

[admin@host ~]$ sudo dnf update
[admin@host ~]$ reboot

10、安装中文输入法。

CentOS8 默认没有汉语拼音输入法,安装汉语拼音输入法的操作方法如下:

第一步,安装汉语拼音输入法并重启计算机。

[admin@host ~]$ sudo dnf install ibus-libpinyin.x86_64
[admin@host ~]$ reboot

第二步,设置区域和语言。

打开【设置】>>【Region&Language】,点击【+】按钮添加输入源 点击选择【汉语(中国)】 点击选择【汉语(智能拼音)】后点击【添加(A)】完成汉语拼音输入源设置

第三步,使用汉语拼音输入法。

在操作系统的【状态栏】切换【汉语拼音输入法】 在应用软件(如:编辑器,命令行等)中输入汉字

11、安装 C、C++ 编译工具。

Linux 是使用 C 语言开发的操作系统,其适配的多数应用软件也是使用 C 语言开发的,对于需要通过编译才能安装的应用软件,Linux 系统需要提供 C、C++ 编译工具。安装过程如下:

[admin@host ~]$ sudo dnf install make gcc

① "gcc"是一个C/C++、FORTRAN、JAVA、OBJC、ADA等多种语言的编译器,用来将源代码编译成可发布的软件程序。

② "make"是一个工程管理工具,能够根据 Makefile 中的脚本执行编译、安装流程。

在Linux系统中,大多数通过源代码编译来安装的软件都需要依赖"make"和"gcc"。

12、安装常用运维工具。

[admin@host ~]$ sudo dnf install openssh net-tools curl wget telnet

① "openssh" 是基于 ssh 协议的远程控制工具。

② "net-tools" 是一组网络运维工具,如:ifconfig 命令。

③ "curl" 是一个的网页浏览命令行工具。

④ "wget" 是一个文件下载命令行工具。

⑤ "telnet" 是一个远程主机端口访问工具。

13、启用 root 用户(若适用,不建议)。

如果在安装系统时未设置 root 用户的口令,则无法使用 root 用户登录系统(Linux 不允许没有设置口令的用户登录系统)。通过 “passwd” 指令设置 root 用户口令,之后就可以使用 “su” 指令切换 root 用户,切换成功后可以使用 “exit” 指令退出。

[admin@host ~]$ sudo passwd root

输入新的 UNIX 密码: 
重新输入新的 UNIX 密码: 
passwd:已成功更新密码

[admin@host ~]$  su root
[root@host ~]#  exit

14、找回 root 口令(若适用)。

具体操作步骤请阅读文章【https://www.runoob.com/linux/linux-forget-password.html】。


3.基础知识

3.1.文件系统结构

image

/:根目录,文件系统目录结构的顶层,一般根目录下只存放目录,不要存放文件,/etc、/bin、/dev、/lib、/sbin 应该和根目录放置在一个分区中。

/boot:用于存放引导文件,内核文件,引导加载器。

/bin:提供用户使用的基本命令, 存放二进制命令,不允许关联到独立分区,系统启动会用到里面的程序。

/sbin:管理类的基本命令,不能关联到独立分区,系统启动时会用到的程序(重要的命令通常处于bin,不重要的则安装在sbin)。

/lib:存放系统在启动时依赖的基本共享库文件以及内核模块文件,系统使用的函数库的目录也存放了大量的脚本库文件,程序在执行过程中,需要调用时会用到。

/lib64:存放64位系统上的辅助共享库文件。

/usr:应用程序存放目录。"/usr/bin"存放保证系统拥有完整功能而提供的应用程序;"/usr/share"存放共享数据;"/usr/lib"存放不能直接运行却是许多程序运行所必需的一些函数库文件;"/usr/local"存放第三方应用程序的安装文件和软件升级包;"****/usr/share/doc"存放系统说明文件。

/opt:第三方应用程序的安装位置。

/etc:系统配置文件存放的目录,该目录存放系统的大部分配置文件和子目录,不建议在此目录下存放可执行文件 。

/tmp:存储临时文件, 任何人都可以访问,重要数据一定不要放在此目录下。

/var:放置系统中经常要发生变化的文件,如日志文件。"/var/log"存放日志目录及文件;"/var/tmp"存放系统两次重启之间产生的临时数据。

/home:普通用户主目录,当新建账户时,都会分配在此,建议单独分区,并分配额外空间用于存储数据。

/root:系统管理员root账户的主目录,系统第一个启动的分区为"/",所以最好将"/root"和"/"放置在一个分区下。

/media:便携式移动设备挂载点目录。

/mnt:临时文件系统挂载点。

/dev:设备(device)文件目录,存放系统下的设备文件,访问该目录下某个文件,相当于访问某个设备,存放连接到计算机上的设备(终端、磁盘驱动器、光驱及网卡等)的对应文件 (b 随机访问,c 线性访问)。

/srv:服务启动之后需要访问的数据目录,存放系统上运行的服务用到的数据,如网站服务需要访问的网页数据存放在"/srv/www"内。

/proc:用于输出内核与进程信息相关的虚拟文件系统,目录中的数据都在内存中,如系统核心,外部设备,网络状态,由于数据都存放于内存中,所以不占用磁盘空间。

/sys:用于输出当前系统上硬件设备相关的虚拟文件系统。

/selinux:存放selinux相关的信息安全策略等信息。


3.2.目录文件信息

在系统的Shelll窗口输入"ll"(一个文件列表指令)时,会得到一个文件详细信息的列表,一个典型的列表信息如下图:

image

1、第一组数据:类型权限描述信息。

image

类型权限描述信息一共由10位组成,其中:

第1位:表示文件的类型。其中:"d"表示目录;"-"表示普通文件;"l"表示链接文件;"p"表示管理文件;"b"表示块设备文件;"c"表示字符设备文件;"s"表示套接字文件。

第2/3/4位,第5/6/7位,第8/9/10位:分别表示所有者用户、所有者组、其他用户的权限,分别由一组"rwx"组成。其中:"r"表示可读;"w"表示可写;"x"表示可执行;"-"表示无对应权限。

2、第二组数据:数量统计信息。

image

对于目录来说,统计的是它包含的子目录数量,任何目录都包含"../"(上级目录)和"./"(本级目录)两个隐藏目录,因此实际包含的目录数是统计数量减2。

对于文件来说,统计的是它自己,也就是1。

3、第三组数据:所有者账户和组。

image

从左到右依次是目录/文件的所有者账户和所有者组。

4、第四组数据:占用磁盘空间(单位:byte)。

image

5、第五组数据:修改日期。

image

对于一年以内修改的文件,显示:月/日/时分;对于一年以前修改的文件,显示:月/日/年。

6、第六组数据:目录/文件名。

image

目录/文件名的默认配色方案如下:灰白色表示普通文件;亮绿色表示可执行文件;亮红色表示压缩文件;灰蓝色表示目录;亮蓝色表示链接文件;亮黄色表示设备文件。


3.3.磁盘分区信息

在主机中可以有多块硬盘,其次每块硬盘上可以划分多个分区。磁盘和分区在 Linux 系统中用 “/dev/sd[a-z][1…]” 的形式来表示。其中 [a-z] 表示磁盘,[1…] 表示磁盘的分区 IDE 硬盘,限制 63 个分区; SCSI 硬盘限制15个分区。如:

“/dev/sda” 表示第一块硬盘(一般也是主硬盘),“/dev/sdb,/dev/sdc,…” 表示第二,第三块扩展硬盘。

“/dev/sda1” 表示第一块硬盘的第一个分区,“/dev/sda2,/dev/sda3,…” 表示第一块硬盘的第二,第三个分区。

1)使用 “fdisk -l” 指令查询磁盘和分区信息:

[admin@host ~]$ sudo fdisk -l

Disk /dev/sda:20 GiB,21474836480 字节,41943040 个扇区
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x1d89148f

设备       启动     起点     末尾     扇区 大小 Id 类型
/dev/sda1  *        2048  2099199  2097152   1G 83 Linux
/dev/sda2        2099200 33556479 31457280  15G 83 Linux
/dev/sda3       33556480 41943039  8386560   4G 82 Linux swap / Solaris

2)使用 “df -T” 指令查询分区和挂载目录信息:

[admin@host ~]$ df -h

文件系统        容量  已用  可用 已用% 挂载点
devtmpfs        1.9G     0  1.9G    0% /dev
tmpfs           1.9G     0  1.9G    0% /dev/shm
tmpfs           1.9G   10M  1.9G    1% /run
tmpfs           1.9G     0  1.9G    0% /sys/fs/cgroup
/dev/sda2        15G  4.3G  9.7G   31% /
/dev/sda1       976M  187M  722M   21% /boot
tmpfs           376M  1.2M  375M    1% /run/user/42
tmpfs           376M  4.6M  371M    2% /run/user/1000

4.应用软件安装

CentOS 系统可以安装通过以下形式发布的应用程序:


4.1.二进制程序安装

以 "CFSSL" 的安装为例:

1、打开 CFSSL 下载页面【https://pkg.cfssl.org/】,下载最新版本的 cfssl、cfssljson 和 cfssl-certinfo 的编译程序文件到用户主目录中。

CFSSL 下载页面

cfssl:用于创建证书;
cfssljson:用于通过 JSON 元数据文件创建证书;
cfssl-certinfo:用于查看证书内容。

2、为 CFSSL 的程序文件增加可执行权限。

[admin@host ~]$ chmod +x cfssl_linux-amd64 cfssljson_linux-amd64 cfssl-certinfo_linux-amd64

3、将 CFSSL 的程序文件迁移安装到操作系统默认的 shell 目录中并重命名。

[admin@host ~]$ sudo mv cfssl_linux-amd64 /usr/bin/cfssl
[admin@host ~]$ sudo mv cfssljson_linux-amd64 /usr/bin/cfssljson
[admin@host ~]$ sudo mv cfssl-certinfo_linux-amd64 /usr/bin/cfssl-certinfo

4、验证 CFSSL 程序。

[admin@host ~]$ cfssl

4.2.二进制压缩包安装

以 "Tomcat" 的安装为例:

1、打开 Tomcat 官方网站下载页面【https://tomcat.apache.org/download-90.cgi】,下载 Tomcat 的编译程序 tar 包到用户主目录中。

Tomcat 下载页面

2、解压缩编译程序 tar 包到"/usr/local"目录中。

[admin@host ~]$ sudo tar zxvf apache-tomcat-9.0.34.tar.gz -C /usr/local
[admin@host ~]$ sudo mv /usr/local/apache-tomcat-9.0.34 /usr/local/tomcat-9.0.34

4.3.源代码压缩包安装

以 "Redis" 的安装为例:

1、打开Redis官方网站下载页面【http://www.redis.cn/download.html】,下载Redis 的源代码 tar 包到用户主目录中。

Redis 下载页面

2、验证并安装依赖软件。通过源代码编译的方式安装Redis,需要依赖软件"make"和"gcc",验证或安装依赖软件。

[admin@host ~]$ sudo dnf install make gcc

3、解压缩源代码tar包到用户主目录下。

[admin@host ~]$ tar zxvf redis-5.0.5.tar.gz
[admin@host ~]$ ll
drwxrwxr-x. 6 centos centos    4096 3月  12 23:07 redis-5.0.5
-rw-rw-r--. 1 centos centos 1985757 3月  28 16:47 redis-5.0.5.tar.gz

4、进入源代码目录下的"src"目录,先编译Redis源代码文件,然后将编译后的程序安装到"/usr/local"目录中。

[admin@host ~]$ cd redis-5.0.5/src
[admin@host src ]$ make
[admin@host src ]$ sudo make install PREFIX=/usr/local/redis-5.0.5

程序安装目录是"/usr/local/redis-5.0.5"。


4.4.RPM 安装包安装

以 "OracleJDK" 的安装为例:

1、打开 Oracle JDK 官方网站下载页面【https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html】,下载 Oracle JDK 的编译程序 rpm 包到用户主目录中。

OracleJDK 下载页面

1)安装:

[admin@host ~]$ sudo rpm -ivh jdk-8u261-linux-x64.rpm

2)升级安装:

[admin@host ~]$ sudo rpm -Uvh jdk-8u261-linux-x64.rpm

3)查询是否安装:

[admin@host ~]$ rpm -q jdk1.8

4)查询安装内容:

[admin@host ~]$ rpm -ql jdk1.8

5)查询安装信息:

[admin@host ~]$ rpm -qi jdk1.8

6)卸载:

[admin@host ~]$ sudo rpm -e jdk1.8

7)列出已安装的 rpm 包:

[admin@host ~]$ rpm -qa

8)列出已安装的名称含有关键字的 rpm 包:

[admin@host ~]$ rpm -qa | grep jdk

9)查看使用指南:

[admin@host ~]$ rpm --help

4.5.YUM 源安装

1、配置 YUM 源。

大多数应用程序的官方网站都会提供 YUM 源的软件安装方式,只需要将 YUM 源配置文件下载到 "/etc/yum.repos.d" 目录下即可。

以 "CentOS8" 为例,CentOS8 默认的官方软件源是国外的,通常情况下需要配置成国内软件源(如:阿里云),操作步骤如下:

1)备份现有的 yum 源配置文件。yum 源配置文件是 "/etc/yum.repos.d" 目录下的 "*.repo" 文件,备份该目录,以便于操作失败时恢复。

[admin@host ~]$ sudo cp -r /etc/yum.repos.d /etc/yum.repos.d.bak

2)修改 "/etc/yum.repos.d" 目录下的 "CentOS-AppStream.repo"、"CentOS-Base.repo"和"CentOS-Extras.repo" 文件。改为国内阿里云 yum 源。

使用文本编辑器打开 "CentOS-AppStream.repo" 文件:

[admin@host ~]$ sudo gedit /etc/yum.repos.d/CentOS-AppStream.repo

修改为以下内容后保存:

[AppStream]
name=CentOS-$releasever- AppStream
baseurl=http://mirrors.aliyun.com/centos/$releasever/AppStream/$basearch/os/
gpgcheck=1
enabled=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-Official

使用文本编辑器打开"CentOS-Base.repo"文件:

[admin@host ~]$ sudo gedit /etc/yum.repos.d/CentOS-Base.repo

修改为以下内容后保存:

[BaseOS]
name=CentOS-$releasever- Base
baseurl=http://mirrors.aliyun.com/centos/$releasever/BaseOS/$basearch/os/
gpgcheck=1
enabled=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-Official

使用文本编辑器打开"CentOS-Extras.repo"文件:

[admin@host ~]$ sudo gedit /etc/yum.repos.d/CentOS-Extras.repo

修改为以下内容后保存:

[extras]
name=CentOS-$releasever- Extras
baseurl=http://mirrors.aliyun.com/centos/$releasever/extras/$basearch/os/
gpgcheck=1
enabled=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-Official

[epel-modular]
name=Extra Packages for Enterprise Linux Modular $releasever - $basearch
baseurl=http://mirrors.aliyun.com/epel/$releasever/Modular/$basearch
enabled=1
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/epel/RPM-GPG-KEY-EPEL-8

[epel]
name=Extra Packages for Enterprise Linux $releasever - $basearch
baseurl=http://mirrors.aliyun.com/epel/$releasever/Everything/$basearch
enabled=1
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/epel/RPM-GPG-KEY-EPEL-8

3)刷新 yum 源缓存。使新的 yum 源配置生效:

[admin@host ~]$ sudo dnf clean all
[admin@host ~]$ sudo dnf makecache

更多关于软件源配置的内容请阅读文章《RedHat/CentOS8 【国内/本地/私有 Yum 源】制作和使用》【https://www.jianshu.com/p/68db74388600

2、通过 YUM 源安装软件。

以 "OpenJDK" 为例:

1)安装:

[admin@host ~]$ sudo dnf install java-1.8.0

2)更新:

[admin@host ~]$ sudo dnf upgrade java-1.8.0

3)删除:

[admin@host ~]$ sudo dnf remove java-1.8.0

4)更新系统内核和已安装的全部应用程序:

[admin@host ~]$ sudo dnf update

5)更新已安装的全部应用程序:

[admin@host ~]$ sudo dnf upgrade

6)列出已安装的全部应用程序:

[admin@host ~]$ dnf list

7)列出已安装的名称含有关键字的应用程序:

[admin@host ~]$ dnf list | grep java

8)查看使用指南:

[admin@host ~]$ dnf --help

注意: CentOS8 使用 dnf 命令,CentOS7 及以下使用 yum 命令,两个命令的使用方法基本相同。


5.使用 root 用户的身份执行命令

sudo 指令允许普通用户使用 root 用户的身份执行命令,不仅减少了 root 用户的登陆次数和管理时间,也提高了系统安全性。使用 sudo 指令的用户必须设置口令。

1、配置文件 "/etc/sudoers" 指明特定的用户可以执行特定的命令。

使用文本编辑器打开 "/etc/sudoers" 文件:

[admin@host ~]$ sudo gedit /etc/sudoers

常用形式如下:

1)允许一个已设置口令的普通用户能够以 root 用户的身份执行全部命令,执行命令前需验证该用户口令:

user  ALL=(ALL)   ALL

2)允许一个已设置口令的普通用户能够以 root 用户的身份执行全部命令,且不必验证该用户口令:

user  ALL=(ALL)   NOPASSWD: ALL

3)允许一个已设置口令的普通用户能够以 root 用户的身份执行特定的命令,执行命令前需验证该用户口令:

user  ALL=/sbin/ip,/usr/sbin/arping

4)允许一个已设置口令的普通用户能够以 root 用户的身份执行特定的命令,且不必验证该用户口令:

user ALL=NOPASSWD: /sbin/ip,NOPASSWD: /usr/sbin/arping

2、配置文件 "/etc/sudoers" 详解。

1)配置文件定义规范:

# Host alias specification
#定义主机的列表集合(允许定义多个规则)
#格式:
#Host_Alias [ALIAS_NAME]=[!][hostname|ip_addr|network(/netmask)?|Host_Alias][,…]
#说明:
#[ALIAS_NAME]:别名,以大写字母开头,只能包含大写字母,数字,下划线;
#[!]:逆运算,即取反;
#[hostname]:主机名或域名;
#[ip_addr]:IP地址;
#[network(/netmask)?]:网域(/子网号);
#[Host_Alias]:主机别名;
#[,…]:多个项使用半角的“,”分隔。
#例如:
#Host_Alias HOST = 128.138.243.0, 128.138.204.0/24, 128.138.242.0, !www.baidu.com,kylin



# User alias specification
#定义用户的列表集合(允许定义多个规则)
#格式:
#User_Alias [ALIAS_NAME]=[!][username|#uid|%groupname|User_Alias] [,…]
#说明:
#[ALIAS_NAME]:别名,以大写字母开头,只能包含大写字母,数字,下划线;
#[!]:逆运算,即取反;
#[username]:用户账号;
#[uid]:用户uid号;
#[groupname]:用户组;
#[User_Alias]:用户别名;
#[,…]:多个项使用半角的“,”分隔。
#例如:
#User_Alias USER = kylin,#1000,%sudo,!geust



# Cmnd alias specification
#定义命令的列表集合(允许定义多个规则)
#格式:
#Cmnd_Alias [ALIAS_NAME]= [!][command|directory|Cmnd_Alias] [,…]
#说明:
#[ALIAS_NAME]:别名,以大写字母开头,只能包含大写字母,数字,下划线;
#[!]:逆运算,即取反;
#[command]:指令路径(绝对路径);
#[directory]:指令目录;
#[Cmnd_Alias]:指令别名;
#[,…]:多个项使用半角的“,”分隔。
#例如:
#Cmnd_Alias Cmnd = /bin/passwd,/bin/ls



# Runas alias specification
#定义命令的运行身份集合(允许定义多个规则)
#格式:
#Runas_Alias [ALIAS_NAME]= [!][username|#uid| %groupname|Runas_Alias] [,…]
#说明:
#[ALIAS_NAME]:别名,以大写字母开头,只能包含大写字母,数字,下划线;
#[!]:逆运算,即取反;
#[username]:用户账号;
#[uid]:用户uid号;
#[groupname]:用户组;
#[User_Alias]:用户别名;
#[,…]:多个项使用半角的“,”分隔。
#例如:
#Runas_Alias Runas =root,#501, !%kylin,%sudo



# User privilege specification
#定义使用规则(允许定义多个规则)
#格式:
#[授权用户] [主机]=([执行账号]) [参数] [命令]
#说明:
#[授权用户]:允许使用sudo的用户,可以是[!][username|#uid|%groupname|User_Alias]
#[主机]:允许使用sudo的主机,可以是[!][hostname|ip_addr|network(/netmask)?|Host_Alias],多个使用半角的“:”分隔;
#[执行账号]:指令的执行用户,可以是[!][username|#uid| %groupname|Runas_Alias],不指定为root账号,多个使用半角的“:”分隔;
#[参数]:包括'NOPASSWD:' | 'PASSWD:' | 'NOEXEC:' | 'EXEC:' | 'SETENV:' | 'NOSETENV:' | 'LOG_INPUT:' | 'NOLOG_INPUT:' | 'LOG_OUTPUT:' | 'NOLOG_OUTPUT:',非必要项;
#[命令]:执行的命令,可以是[!][command|directory|Cmnd_Alias],多个使用半角的“,”分隔;
#例如:
#root  ALL=(ALL) ALL

2)配置文件通配符:

通配符只可用在主机名、文件路径、命令行的参数列表中。可用的通配符包括:

在使用通配符时有以下的注意点:

  • 用[:alpha:]等通配符时,要转义冒号':',如:[:alpha:]
  • 当通配符用于文件路径时,不能跨'/'匹配,如:/usr/bin/*能匹配/usr/bin/who但不能匹配/usr/bin/X11/xterm
  • 如果指令的参数列表是空时,匹配不包含任何参数的指令。
  • ALL 关键字表示匹配所有情况。

6.系统服务配置

CentOS8 通过服务管理器 "systemd" 来实现应用程序的开机自启动、启动、重启、停止、禁用、查看状态、跟踪日志等功能。检视和控制 systemd 的主要命令是 "systemctl" 和 "journalctl",服务通过在 "/usr/lib/systemd/system/" 目录下创建 "*.service" 文件来定义。

以 "Tomcat" 的 systemd 配置为例:

1、创建服务配置文件。

使用文本编辑器创建配置文件:

[admin@host ~]$ sudo gedit /usr/lib/systemd/system/tomcat.service

修改或验证文件中的以下参数并保存:

[Unit]
Description=Tomcat Server
After=network.target syslog.target

[Install]
WantedBy=multi-user.target

[Service]
Type=forking
User=tomcat
Group=tomcat

ExecStart=/usr/local/tomcat-9.0.34/bin/startup.sh
ExecStop=/usr/local/tomcat-9.0.34/bin/shutdown.sh
ExecReload=/usr/local/tomcat-9.0.34/bin/shutdown.sh

配置文件详解:

[Unit]
#服务描述(必选)
Description=OpenSSH server daemon

#说明文档位置(可选)
Documentation=man:sshd(8) man:sshd_config(5)

#表示如果network.target或sshd-keygen.service需要启动,那么sshd.service应该在它们之后启动。(可选)
After=network.target sshd-keygen.service

#表示如果network.target或sshd-keygen.service需要启动,那么sshd.service应该在它们之前启动。(可选)
Before=network.target sshd-keygen.service

#表示sshd.service与sshd-keygen.service之间存在"弱依赖"关系,即如果"sshd-keygen.service"启动失败或停止运行,不影响sshd.service继续执行。(可选)
Wants=sshd-keygen.service

#表示sshd.service与sshd-keygen.service之间存在"强依赖"关系,即如果"sshd-keygen.service"启动失败或停止运行,那么sshd.service也必须退出。(可选)
Requires=sshd-keygen.service

[Service]
#指定服务执行账户。
User=root

#指定服务执行的组。
Group=root

#指定当前服务的环境参数文件。该文件内部的key=value键值对,可以用$key的形式,在当前配置文件中获取。(可选)
EnvironmentFile=/etc/sysconfig/sshd

#定义启动进程时执行的事件命令。(必选)
ExecStart=/usr/sbin/sshd -D $OPTIONS

#重启服务时执行的事件命令。(可选)
ExecReload=
#停止服务时执行的事件命令。(可选)
ExecStop=
#启动服务之前执行的事件命令。(可选)
ExecStartPre=
#启动服务之后执行的事件命令。(可选)
ExecStartPost=
#停止服务之后执行的事件命令。(可选)
ExecStopPost=

#定义启动类型。可以设置的值如下:
#simple(默认值):ExecStart字段启动的进程为主进程。
#forking:ExecStart字段将以fork()方式启动,此时父进程将会退出,子进程将成为主进程。
#oneshot:类似于simple,但只执行一次,Systemd 会等它执行完,才启动其他服务。
#dbus:类似于simple,但会等待 D-Bus 信号后启动。
#notify:类似于simple,启动结束后会发出通知信号,然后 Systemd 再启动其他服务。
#idle:类似于simple,但是要等到其他任务都执行完,才会启动该服务。
Type=simple

#定义 Systemd 如何停止服务。可选择的值如下:
#control-group(默认值):当前控制组里面的所有子进程,都会被杀掉。
#process:只杀主进程。
#mixed:主进程将收到 SIGTERM 信号,子进程收到 SIGKILL 信号。
#none:没有进程会被杀掉,只是执行服务的 stop 命令。
KillMode=process

#定义服务退出后,Systemd 的重启方式。可选择的值如下:
#no(默认值):退出后不会重启。
#on-success:只有正常退出时(退出状态码为0),才会重启。
#on-failure:非正常退出时(退出状态码非0),包括被信号终止和超时,才会重启。
#on-abnormal:只有被信号终止和超时,才会重启。
#on-abort:只有在收到没有捕捉到的信号终止时,才会重启。
#on-watchdog:超时退出,才会重启。
#always:不管是什么退出原因,总是重启。
Restart=on-failure

#表示 Systemd 重启服务之前,需要等待的秒数。
RestartSec=42s

[Install]
#表示该服务所在的 Target。Target的含义是服务组,表示一组服务。这个设置的作用是:执行systemctl enable sshd.service命令时,sshd.service的一个符号链接,就会放在/etc/systemd/system目录下面的multi-user.target.wants子目录之中。
#常用的 Target 有两个:一个是multi-user.target,表示多用户命令行状态;另一个是graphical.target,表示图形用户状态,它依赖于multi-user.target。
WantedBy=multi-user.target

2、服务控制命令。

1)启动服务:

[admin@host ~]$ sudo systemctl start tomcat

2)停止服务:

[admin@host ~]$ sudo systemctl stop tomcat

3)启动/重新启动服务:

[admin@host ~]$ sudo systemctl restart tomcat

4)查看服务状态:

[admin@host ~]$ sudo systemctl status tomcat

5)查看服务跟踪日志:

[admin@host ~]$ sudo journalctl -xeu tomcat

6)开机自启动服务:

[admin@host ~]$ sudo systemctl enable tomcat

7)开机禁用服务:

[admin@host ~]$ sudo systemctl disable tomcat

8)重新加载服务:

[admin@host ~]$ sudo systemctl reload tomcat

9)重新加载服务管理器:

[admin@host ~]$ sudo systemctl daemon-reload

7.常用运维命令

7.1.用户和组管理

1、查看当前用户信息。

[admin@host ~]$ id
uid=1000(admin) gid=1000(admin) 组=1000(admin),10(wheel) 环境=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023

2、查看用户是否存在。

[admin@host ~]$ id uname
id: “uname”:无此用户
  • uname:用户账号。

3、创建新的普通用户。

1)创建用户主组和用户:

[admin@host ~]$ sudo groupadd ugroup
[admin@host ~]$ sudo useradd -g ugroup uname
  • uname:用户账号。
  • ugroup:组账号。
  • -g <主组>:指定用户主组。

2)设置用户口令:

[admin@host ~]$ sudo passwd uname
  • uname:用户账号

3)将用户加入到现有的组中(若适用):

[admin@host ~]$ sudo usermod -aG wheel uname
  • uname:用户账号。
  • wheel:组账号。
  • -aG <从组>:追加用户从组。去掉参数 "a" 会覆盖原有的从组。

4、创建不可登录的管理用户和组者,通常用于以此用户运行应用程序和访问特定数据,提高系统的安全性。

[admin@host ~]$ sudo groupadd ugroup
[admin@host ~]$ sudo useradd -g ugroup -s /bin/false uname
  • uname:用户账号。
  • ugroup:组账号。
  • -g <主组>:指定用户主组。
  • -s <shell>:指定用户 shell 环境,默认为 "/bin/bash",设置为 "/bin/false" 表示不提供 shell 环境。

5、设置用户口令。

[admin@host ~]$ sudo passwd uname

6、删除用户和主组。

[admin@host ~]$ sudo userdel -r uname
[admin@host ~]$ sudo groupdel ugroup
  • -r:删除用户主目录。不指定该参数时,保留用户主目录数据。

7、修改用户。

[admin@host ~]$ sudo usermod -g ugroup -G wheel -s /bin/bash uname
  • uname:用户账号。
  • ugroup:组账号。
  • -g <主组>:修改用户主组。
  • -aG <从组>:追加用户从组。 去掉参数 "a" 会覆盖原有的从组。
  • -s <shell>:修改用户 shell。
  • -e <有效期限>:修改账号的有效期限。
  • -f <缓冲天数>:修改在密码过期后多少天即关闭该账号。
  • -L:锁定用户密码,使密码无效。
  • -U:解除密码锁定。

8、切换用户。

[admin@host ~]$ su uname
[uname@host ~]$ su uname
  • uname:切换用户账号。不指定时切换到 root 用户。

8、使用其他用户的身份执行命令。

[admin@host ~]$ sudo -u uname ls
  • sudo 命令的使用权限需要在 "/etc/sudoers" 文件中配置。详见章节 “5.管理员权限分配”。
  • -u <用户账号>:指定其他用户的账号。不指定默认为 root 用户。
  • ls:命令

7.2.目录和文件管理

1、获取当前目录.

[admin@host ~]$ pwd
/home/admin

2、切换当前目录。

[admin@host ~]$ pwd
/home/admin

[admin@host ~]$ cd /home

[admin@host home]$ pwd
/home
  • /home/admin/dir.1/dir.2/dir.3:切换目录的路径。

2、浏览目录或文件,主要用于查看目录和文件的名称、验证文件是否存在。

[admin@host ~]$ ls
admin  uname

[admin@host ~]$ ls -a
.  ..  admin  uname

[admin@host ~]$ ls /home
admin  uname
  • -a:查看隐藏文件。
  • /home:浏览目录或文件的路径,可以是相对路径或绝对路径,可以包含 "*" 等通配符。不指定是浏览当前目录。

3、列出目录或文件,主要用于查看文件和目录的权限、所有者等详细信息。

[admin@host ~]$ ls -l
drwx------. 15 admin  admin  4096 9月  10 16:25 admin
drwx------.  3 uname  ugroup 4096 9月  10 16:25 uname

[admin@host ~]$ ls -al
drwxr-xr-x.  4 root   root   4096 9月  10 16:23 .
dr-xr-xr-x. 19 root   root   4096 9月  10 11:31 ..
drwx------. 15 admin  admin  4096 9月  10 16:25 admin
drwx------.  3 uname  ugroup 4096 9月  10 16:25 uname

[admin@host ~]$ ls -l /home
drwx------. 15 admin  admin  4096 9月  10 16:25 admin
drwx------.  3 uname  ugroup 4096 9月  10 16:25 uname
  • -l:查看目录或文件的详细信息。
  • -a:查看隐藏文件。
  • /home:浏览目录或文件的路径,可以是相对路径或绝对路径,可以包含 "*" 等通配符。不指定是浏览当前目录。

4、创建空目录。

[admin@host ~]$ mkdir -p /home/admin/dir.1/dir.2/dir.3
[admin@host ~]$ mkdir -p /home/admin/dir.1/dir.2/{dir.3-1,dir.3-2,dir.3-3}
  • -p:递归逐级创建目录。不指定此参数时,父目录不存在的情况下无法创建子目录。
  • /home/admin/dir.1/dir.2/dir.3:新建目录的路径,可以是相对路径或绝对路径,可以包含 "{dir.3-1,dir.3-2,dir.3-3}" 等正则表达式。

5、删除空目录,当目录不为空时无法删除。

[admin@host ~]$ rmdir /home/admin/dir.1/dir.2/dir.3
  • /home/admin/dir.1/dir.2/dir.3:删除目录的路径,可以是相对路径或绝对路径。

6、创建空文件。

[admin@host ~]$ touch /home/admin/file.txt
[admin@host ~]$ touch /home/admin/{file1.txt,file2.txt,file3.txt}
  • /home/admin/file.txt:新建文件的路径,以是相对路径或绝对路径,可以包含 "{file1.txt,file2.txt,file3.txt}" 等正则表达式。

7、删除目录或文件。

[admin@host ~]$ rm -rf /home/admin/dir.1/dir.2/dir.3
  • -r:递归删除目录中的内容。
  • -f:强制删除目录或文件。
  • /home/admin/dir.1/dir.2/dir.3:删除目录的路径,可以是相对路径或绝对路径,可以包含 "{file1.txt,file2.txt,file3.txt}" 等正则表达式,可以包含 "*" 等通配符。

8、拷贝文件。

[admin@host ~]$ cp /home/admin/file_src.txt /home/admin/file_copy.txt
  • /home/admin/file_src.txt:源文件路径,可以是相对路径或绝对路径,可以包含 "{file1.txt,file2.txt,file3.txt}" 等正则表达式,可以包含 "*" 等通配符。
  • /home/admin/file_copy.txt:副本文件路径,可以是相对路径或绝对路径。

9、拷贝目录。

[admin@host ~]$ cp -r /home/admin/dir_src /home/admin/dir_copy
  • /home/admin/dir_src:源目录路径,可以是相对路径或绝对路径,可以包含 "{dir.1,dir.2,dir.3}" 等正则表达式,可以包含 "*" 等通配符。
  • /home/admin/dir_copy:副本目录路径,可以是相对路径或绝对路径。

10、迁移文件。

[admin@host ~]$ mv /home/admin/file.txt /home/admin/dest/file.txt
  • /home/admin/file.txt:源文件路径,可以是相对路径或绝对路径,可以包含 "{file1.txt,file2.txt,file3.txt}" 等正则表达式,可以包含 "*" 等通配符。
  • /home/admin/dest/file.txt:目标文件路径,可以是相对路径或绝对路径。

11、迁移目录。

[admin@host ~]$ mv /home/admin/dir /home/admin/dest/dir
  • /home/admin/dir:源目录路径,可以是相对路径或绝对路径,可以包含 "{dir.1,dir.2,dir.3t}" 等正则表达式,可以包含 "*" 等通配符。
  • /home/admin/dest/dir:目标目录路径,可以是相对路径或绝对路径。

12、重命名文件或目录。

[admin@host ~]$ mv /home/admin/old_name /home/admin/new_name
  • /home/admin/old_name:原目录或文件名。
  • /home/admin/new_name:新目录或文件名。

13、变更文件所有者用户和组。

[admin@host ~]$ chown uname:ugroup /home/admin/file.txt
  • uname:文件所有者用户账号。
  • ugroup:文件所有者组账号。
  • /home/admin/file.txt:文件路径。可以是相对路径或绝对路径,可以包含 "{file1.txt,file2.txt,file3.txt}" 等正则表达式,可以包含 "*" 等通配符。

14、变更目录所有者用户和组。

[admin@host ~]$ chown -R uname:ugroup /home/admin/dir
  • -R:变更目录和目录中所有文件的所有者用户和组。不指定时只变更目录本身。
  • uname:目录所有者用户账号。
  • ugroup:目录所有者组账号。
  • /home/admin/dir:目录路径。可以是相对路径或绝对路径,可以包含 "{dir.1,dir.2,dir.3t}" 等正则表达式,可以包含 "*" 等通配符。

15、设置目录或文件的权限。

[admin@host ~]$ chmod 755 /home/admin/exec.sh
[admin@host ~]$ chmod ug=rwx,o=rx /home/admin/exec.sh
[admin@host ~]$ chmod ugo+x /home/admin/exec.sh
[admin@host ~]$ chmod ugo-x /home/admin/exec.sh
[admin@host ~]$ chmod ug-w,o+w /home/admin/exec.sh
  • 格式:chmod mode file
  • mode:赋权的模式,可以通过掩码和正则表达式赋权
  • -- "u" 表示该文件的拥有者;"g" 表示与该文件的拥有者属于同一个群体(group)者;"o" 表示其他以外的人;"a"表示 ugo 三者。
  • -- "+" 表示增加权限;"-" 表示取消权限;"=" 表示唯一设定权限。
  • -- "r" 表示可读取,数字代号为 "4";"w" 表示可写入,数字代号为 "2";"x" 表示可执行,数字代号为 "1"。可通过 3 位数(第 1 位代表 "u"、第 2 位代表 "g"、第 3 位代表 "o")的数据代号相加进行赋权。

16、查找系统默认目录中的命令是否存在。

[admin@host ~]$ whereis ssh
ssh: /usr/bin/ssh /etc/ssh /usr/share/man/man1/ssh.1.gz
  • ssh:shell 命令。

17、按名称查找目录或文件。

[admin@host ~]$ find /home/admin -name "file1.*"
/home/admin/file1.txt

[admin@host ~]$ find /home/admin -name "file1.*" -exec ls -l {} \;
-rw-rw-r--. 1 admin admin 2 9月  11 10:45 /home/admin/file1.txt
  • /home/admin:文件查找根目录。
  • -name <关键字>:文件名关键字,可以包含 "*" 等通配符。
  • -exec <命令>:对查询结果的操作命令,形式为 -exec 'command' {} ; 。

18、按行比较两个文件的差异。

[admin@host ~]$ diff file1.txt file2.txt
1c1
< 1
---
> 2
  • file1.txt:参照文件。
  • file2.txt:比较文件。

19、查看文件内容。

[admin@host ~]$ cat /home/admin/file.txt
  • home/admin/file.txt:文件路径。可以是相对路径或绝对路径。

20、查看日志内容(增量动态显示文件,主要用于跟踪日志)。

[admin@host ~]$ tail -f /home/admin/log.txt
  • -f:表示动态监控文件增长。
  • /home/admin/log.txt:日志文件路径。可以是相对路径或绝对路径。

7.3.文件编辑

1、在装有 GUI 的系统中优先考虑使用文本编辑器编辑文件内容。以 CentOS8 为例:

[admin@host ~]$ gedit /home/admin/file1.txt
文本编辑器

2、在只有 shell 的系统中使用 "vi" 命令编辑文件内容。vi 的使用方法请阅读文章【https://www.runoob.com/linux/linux-vim.html

3、将 shell 命令的输出结果写入到文件中。

[admin@host ~]$ echo '1' > /home/admin/file1.txt
[admin@host ~]$ echo '1' >> /home/admin/file1.txt
  • echo '1':shell 命令。
  • ">":以覆盖的方式将命令输出结果写入文件。
  • ">>":以行追加的方式将命令输出结果写入文件。
  • /home/admin/file1.txt:写入文件名。当文件不存在时自动创建。

7.4.系统管理

1、远程主机网络连通性测试。

[admin@host ~]$ ping 192.168.0.2

64 bytes from 192.168.0.2: icmp_seq=2 ttl=128 time=0.432 ms
64 bytes from 192.168.0.2: icmp_seq=3 ttl=128 time=0.485 ms
64 bytes from 192.168.0.2: icmp_seq=4 ttl=128 time=0.490 ms
  • 192.168.0.2:域名或 IP 地址。

2、远程主机服务端口测试。

[admin@host ~]$ telnet 192.168.0.10 22

Trying 192.168.0.10...
Connected to 192.168.0.10.
Escape character is '^]'.
SSH-2.0-OpenSSH_8.0
  • 192.168.0.10:域名或 IP 地址。

3、域名解析测试。

[admin@host ~]$ nslookup localhost

Server:     192.168.0.2
Address:    192.168.0.2#53

Non-authoritative answer:
Name:   localhost
Address: 127.0.0.1
Name:   localhost
Address: ::1
  • localhost:域名。

4、查看网络信息。

[admin@host ~]$ ifconfig

ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.0.10  netmask 255.255.255.0  broadcast 192.168.0.255
        inet6 fe80::b610:9280:3074:ecb  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:3a:01:3c  txqueuelen 1000  (Ethernet)
        RX packets 108236  bytes 149299015 (142.3 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 14694  bytes 1368905 (1.3 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

5、查看应用程序监听的端口。

[admin@host ~]$ sudo netstat -ntuap | grep nginx

tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      119777/nginx: maste
  • -n:直接使用IP地址,而不通过域名服务器。
  • -t: 显示 TCP 传输协议的连线状况。
  • -u:显示 UDP 传输协议的连线状况。
  • -a:显示所有连线中的 Socket 。
  • -p: 显示正在使用 Socket 的程序识别码和程序名称。
  • nginx:应用程序名称或关键字。

6、查看应用程序的进程。

[admin@host ~]$ sudo ps -ef | grep nginx

root     119777      1  0 10:16 ?        00:00:00 nginx: master process /usr/local/nginx/sbin/nginx
  • -ef:标准的格式显示进程。
  • -aux: 用 BSD 的格式来显示进程。
  • nginx:应用程序名称或关键字。

7、杀死应用系统的进程。

[admin@host ~]$ sudo kill -9 119777
  • -9:表示强制杀死进程。
  • 119777:应用进程号。

8、重启计算机。

[admin@host ~]$ reboot

或者

[admin@host ~]$ shutdown -r now

9、关闭计算机。

[admin@host ~]$ shutdown -h now

10、查看计算机名。

[admin@host ~]$ hostname

11、查看计算机时间。

[admin@host ~]$ date

12、查看内存信息。

[admin@host ~]$ free -h

13、查看磁盘信息。

[admin@host ~]$ df -h

14、查看 OS 信息。

[admin@host ~]$ uname -a

15、查看 CPU 信息。

[admin@host ~]$ cat /proc/cpuinfo

16、设置环境变量。

[admin@host ~]$ export JAVA_HOME=/usr/local/jdk1.8.0_251

17、显示环境变量。

[admin@host ~]$ echo $JAVA_HOME

18、删除环境变量。

[admin@host ~]$ unset JAVA_HOME

19、制作 ISO 镜像文件。

[admin@host ~]$ mkisofs -o test.iso -v file1.txt file2.txt
  • -o <ISO 文件名>:输出 ISO 文件的位置和名称。
  • -v <内容文件或目录...>:输入 ISO 的目录或文件的位置和名称,多个位置使用空格分隔。

20、挂载硬盘、U盘、光盘等外部设备。

[admin@host ~]$ sudo mount /dev/cdrom /mnt
  • /dev/cdrom:挂载设备,如:/dev/cdrom(光驱)、/dev/sdb1(硬盘)等。
  • /mnt:挂载目录。

21、解除挂载外部设备。

[admin@host ~]$ sudo umount /mnt
  • /mnt:挂载目录。

22、向外部主机开放防火墙策略(如允许外部主机访问服务器的 80 端口)。

[admin@host ~]$ sudo firewall-cmd --zone=public --add-port=80/tcp --permanent

23、使防火墙策略永久有效,默认情况下重启后策略失效。

[admin@host ~]$ sudo firewall-cmd --reload

24、设置定时任务。

如何设置定时任务请阅读文章【https://www.runoob.com/linux/linux-comm-crontab.html】。

25、管理 SELinux 。

1)查看 SELinux 状态:

[admin@host ~]$ getenforce

2)临时关闭 SELinux:

[admin@host ~]$ sudo setenforce 0

3)临时开启 SELinux:

[admin@host ~]$ sudo setenforce 1

4)永久配置 SELinux:

使用文本编辑器打开 "/etc/selinux/config" 文件:

[admin@host ~]$ sudo gedit /etc/selinux/config

将 "SELINUX" 参数设置为:"disabled",并保存:

# enforcing - 表示启用 SELinux 安全策略。
# permissive - 表示启用 SELinux 安全策略,但不强制验证。如果执行第一步可以正常运行,则建议设置此值。
# disabled - 关闭 SELinux 安全策略,相当于没有安装 SELinux。
SELINUX=disabled

重启后生效:

[admin@host ~]$ reboot
上一篇下一篇

猜你喜欢

热点阅读