本文是一篇 RedHat/CentOS8 发行版本的快速运维入门指南,整理了在安装、配置、使用 RedHat/CentOS8 服务器时使用频率较高的通用知识要点。
本方案基于 CentOS8 系统设计,建议在 RedHat/CentOS8 系统中使用。
目录
1.系统安装
2.系统初始化
- 设置主机名
- 设置静态 IP 地址
- 设置时区和日期时间服务器
- 关闭 SELinux
- 关闭防火墙(若适用)
- 配置本地名字解析(若适用)
- 挂载外部磁盘(若适用)
- 配置系统软件源
- 更新系统
- 安装中文输入法
- 安装 C、C++ 编译工具
- 安装常用运维工具
- 启用 root 用户(若适用,不建议)
- 找回 root 口令(若适用)
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.系统初始化
服务器初始化规范行为步骤清单:
- 设置主机名
- 设置静态 IP 地址
- 设置时区和日期时间服务器
- 关闭 SELinux
- 关闭防火墙(若适用)
- 配置本地名字解析(若适用)
- 挂载外部磁盘(若适用)
- 配置系统软件源
- 更新系统
- 安装中文输入法
- 安装 C、C++ 编译工具
- 安装常用运维工具
- 启用 root 用户(若适用,不建议)
- 找回 root 口令(若适用)
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"(一个文件列表指令)时,会得到一个文件详细信息的列表,一个典型的列表信息如下图:
image1、第一组数据:类型权限描述信息。
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)。
image5、第五组数据:修改日期。
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 系统可以安装通过以下形式发布的应用程序:
-
二进制程序:能够直接在 Shell 中执行的已编译程序,下载后增加可行性权限就能直接使用。比如一个 shell 脚本文件,或者功能单一的程序(如 ifconfig、ping)。
-
二进制压缩包:通常是 "tar"、"tar.gz"、"zip" 格式的已编译程序压缩包,下载后需要解压后使用(通常一个压缩包中会含有可执行的二进制程序,以及配置、文档、数据文件等)。
-
源代码压缩包:通常是 "tar"、"tar.gz"、"zip" 格式的 C / C++ 源代码压缩包,下载后需要使用 gcc 和 make 工具进行编译后,再安装到系统中。
-
RPM 安装包:通常是 "rpm" 格式的安装包,下载后通过 rpm 命令安装即可,rpm 除了安装应用程序外,还能够对应用程序的状态进行记录(如:各个文件的安装位置),还可以通过 rpm 命令进行卸载。
-
YUM 源:是由 RPM 安装包和管理元数据组成的软件仓库系统,系统通过 yum 源配置文件确定软件仓库的位置,通过 dnf/yum 指令,自动从软件仓库中下载 rpm 包、自动处理包依赖关系,并且能够一次安装所有依赖 rpm 包。
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)配置文件通配符:
通配符只可用在主机名、文件路径、命令行的参数列表中。可用的通配符包括:
- *:匹配任意数量的字符;
- ?:匹配一个任意字符;
- [...]:匹配在范围内的一个字符;
- [!...]:匹配不在范围内的一个字符;
- \x:用于转义特殊字符。
在使用通配符时有以下的注意点:
- 用[: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
网友评论