文章目录
操作系统基础
操作系统基础
操作系统的定义
- 操作系统(Operating System,简称OS),是管理和控制计算机硬件与软件资源的计算机程序(系统软件)

!tip
操作系统是一种控制计算机的特殊计算机程序,在计算机和用户之间起到连接的作用,并对硬件资源进行协调管理。这些资源包括CPU、磁盘、内存和打印机等,用户运行程序时需要访问这些资源。
主流操作系统
根据应用领域来划分,可分为:
桌面操作系统、服务器操作系统、主机操作系统、嵌入式操作系统。
根据源码开放程度,可分为:
开源操作系统(Linux、Unix)、闭源操作系统(Windows、Mac OS)。
操作系统的组成
- 通常站在用户角度,操作系统由内核和各种应用程序组成。即系统分为用户空间和内核空间
- 用户空间即上层应用程序活动的空间
- 内核本质上是一种软件程序,用来管理计算机硬件资源并提供上层应用程序运行所需要的系统调用接口

!tip
系统调用:应用程序的执行必须依托于内核提供的资源,包括CPU、存储、I/O资源等,为了使上层应用能够访问到这些资源,内核必须为上层应用提供访问接口---系统调用。(如果写一个汉字代表一个上层应用,那么一个系统调用更像是汉字的一个笔画)。
库函数:通过库函数实现对系统调用的封装,将简单的业务逻辑接口呈现给用户,方便用户调用。对于简单的操作我们可以直接调用系统调用来访问资源,对于复杂操作,可以借助库函数来实现。(库函数更像是汉字的偏旁)。
Shell:是一个特殊的应用程序(俗称命令行),本质上是一个命令解释器,它可以执行符合Shell语法的文本(脚本),实际上这些Shell语句通常就是对系统调用做了一层封装,方便客户使用。
!tip
内核:向下控制硬件资源,向内管理操作系统资源,向上则向应用程序提供系统调用的接口。
进程调度和管理:内核负责创建和销毁进程,处理他们与外部世界的联系。
内存管理:内核为所有的进程在有限的可用资源上建立一个虚拟地址空间。
文件系统管理:Linux在很大程度上基于文件系统的概念,几乎Linux中的任何东西都可看作一个文件.。内核在非结构化的硬件之上建立了一个结构化的文件系统。
设备驱动管理:内核中需要嵌入系统中出现的每个外设的驱动, 从硬盘驱动到键盘和磁带驱动器.。
网络资源管理:所有的路由和地址解析动作都在内核中实现。
总结:用户态应用程序可以通过三种方式访问内核态资源:
系统调用
Shell脚本
库函数
操作系统的分类

!tip
Linux与Unix的关系:
Linux是一个类似UNIX的操作系统,并在功能和用户体验上进行优化,所以Linux模仿了UNIX,使得Linux在外观和交互上与UNIX非常类似。
Linux内核最初是由李纳斯•托瓦兹(Linus Torvalds)在赫尔辛基大学读书时出于个人爱好而编写的,当时他觉得教学用的迷你版UNIX操作系统Minix太难用了,于是决定自己开发一个操作系统。第1个版本于1991年9月发布,当时仅有10000行代码。
UNIX系统大多是与硬件配套的,也就是说,大多数UNIX系统如AIX、HP-UX等是无法安装在x86服务器和个人计算机上的,而Linux则可以运行在多种硬件平台上。
UNIX是商业软件,而Linux是开源软件,是免费、公开源代码的。
GNU计划:
GNU计划,又称革奴计划,是由Richard Stallman在1983年9月27日公开发起的。它的目标是创建一套完全自由的操作系统。
GNU是"GNU's Not UNIX"的递归缩写。Linux提供了一个操作系统内核,而GNU提供了大量的自由软件来丰富在其之上的各种应用程序。
Linux基础
Linux系统介绍
Linux操作系统特性
- 支持多种平台
Linux可运行在多种硬件平台上。此外,Linux还是一种嵌入式操作系统,可运行在掌上电脑、机顶盒等设备 - 多用户多任务
系统资源可以被不同用户各自拥有使用,同时执行多个程序,而且各个程序的运行相互独立 - 自由软件
用户可以随时免费获取它的源代码,并且可以根据自己的需求对源代码进行编辑、修改 - 完全兼容POSIX1.0标准
- 继承了Unix的设计理念
一切皆文件
!tip
POSIX,可移植操作系统接口(Portable Operating System Interface,缩写为POSIX),是IEEE为要在各种UNIX操作系统上运行的软件,而定义API的一系列互相关联的标准的总称,其正式称呼为IEEE 1003,而国际标准名称为ISO/IEC 9945。它基本上是Portable Operating System Interface(可移植操作系统接口)的缩写,而X则表明其对Unix API的传承。
Linux操作系统是一种非常流行的多任务、多用户操作系统,应用非常广泛。Linux的主要特点为:
多任务(Multi-tasking):Linux是一个多任务操作系统,在它内部允许有多个任务同时运行。而DOS操作系统是单任务的操作系统,不能同时运行多个任务。系统在执行多任务时,CPU在某一时刻只能执行一个任务,但Linux操作系统将CPU时间分片,并把这些时间片分别安排给多个进程。因为CPU运行很快,在操作者看来,所有程序(进程)都在同时运行。
多用户(Multi-users):Linux又是一个多用户操作系统,它允许多个用户同时使用。在Linux中,每位用户运行自己的或公用的程序,好象拥有一台单独的机器。DOS操作系统是单用户的操作系统,只允许一个用户同时使用。
管道:Linux允许一个程序的输出作为另外一个程序输入,多个程序串起来好像一条管道一样。通过各个简单任务的组合,就可以完成比较复杂的任务,并极大提高了操作的方便性。晚期版本的DOS操作系统也借鉴并提供了这种机制。
功能强大的Shell:Linux的命令解释器由Shell实现。Linux提供了多种功能强大的Shell,每种Shell本身就是一种解释型高级语言,通过用户编程就可创造无数命令,使用方便。
安全保护机制:Linux提供了非常强大的安全保护机制,防止系统及其数据未经许可而被非法访问。
Linux文件目录结构
- 在Linux操作系统中,一切皆是文件
- Linux的文件目录结构是树形,"/"称为根目录

!tip
Linux下的哲学核心思想是"一切皆文件"。"一切皆文件",指的是对所有文件(目录、字符设备、块设备、套接字、打印机、进程、线程、管道等)操作,读写都可用fopen()/fclose()/fwrite()/fread()等函数进行处理。
openEuler简介
openEuler出现的背景
- EulerOS是一款基于Linux内核的服务器操作系统,支持x86和ARM等多种处理器架构,适用于数据库、大数据、云计算、人工智能等应用场景
- 在近10年的发展中,EulerOS成功支持了华为各种产品解决方案,以安全、稳定、高效被业界认可
- 随着云计算的兴起和鲲鹏芯片的发展,EulerOS成为与鲲鹏芯片配套最合适的软件基础设施
- 为推动鲲鹏生态的发展,繁荣国内和全球的计算产业,2019年底EulerOS被正式推送开源社区,命名为openEuler
openEuler操作系统介绍
- openEuler是一个开源、免费的Linux发行平台
- 支持x86、ARM、RISC-V等多种处理器架构
- 所有开发者、企业、商业组织都可以使用openEuler社区版本,也可以基于社区版本发布自己二次开发的操作系统版本
- https://openeuler.org/
- https://gitee.com/openeuler/
openEuler和主流OS系的关系
- openEuler与SuSE、Debian、RedHat的上游社区都是kernel社区www.kernel.org
- openEuler社区发行LTS免费版本,使能OSV发展商业发行版,如麒麟软件、普华、中科软、万里开源等

openEuler文件系统简介
文件系统概述
- 文件系统是操作系统用于明确存储设备或分区上的文件的方法和数据结构,即在存储设备上组织文件的方法
- 操作系统中负责管理和存储文件信息的软件机构称为文件管理系统,简称文件系统

!tip
作用:文件系统是对文件存储设备的空间进行组织和分配,负责文件存储并对存入的文件进行保护和检索的系统。具体地说,它负责为用户建立文件,存入、读出、修改、转储文件,控制文件的存取,当用户不再使用时撤销文件等。文件系统的功能包括:管理和调度文件的存储空间,提供文件的逻辑结构、物理结构和存储方法;实现文件从标识到实际地址的映射,实现文件的控制操作和存取操作,实现文件信息的共享并提供可靠的文件保密和保护措施,提供文件的安全措施。
openEuler文件系统
- openEuler内核源于Linux,Linux内核支持十多种不同类型的文件系统,比如Btrfs、JFS、ReiserFS、Ext、Ext2、Ext3、Ext4、ISO9660、XFS、Minix、MSDOS、UMSDOS、VFAT、NTFS、HPFS、SMB、SysV、PROC等,表格中列举常用几种并做说明
- openEluer默认文件系统为Ext4
| 常用文件系统 | 说明 |
|---|---|
| Ext | 专门为Linux设计的文件系统类型,目前最新版本Ext4 |
| XFS | 一种高性能的日志文件系统,最早于1993年,由Silicon Graphics为他们的IRIX操作系统而开发,之后被移植到Linux内核上,特别擅长处理大文件,同时提供平滑的数据传输 |
| VFAT | VFAT是Linux对DOS,Windows系统下的FAT(包括FAT16和FAT32)文件系统的一个统称 |
| ISO 9600 | 该文件系统中光盘所使用的标准文件系统,Linux对该文件系统也有很好的支持,不仅能读取光盘和光盘ISO映像文件,而且还支持在Linux环境中刻录光盘 |
openEuler基础操作
Linux命令行基础知识
Linux的GUI与CLI
- GUI:Graphical User Interface,图形用户界面。用户界面的所有元素图形化,主要使用鼠标作为输入工具,使用按钮、菜单、对话框等进行交互,追求易用
- CLI:Command Line Interface,命令行界面。用户界面字符化,使用键盘作为输入工具,输入命令、选项、参数执行程序,追求高效
!tip
示例:
在Windows系统中通过GUI启动"计算器":开始→所有程序→附件→计算器,在这个计算器中,用鼠标点击上面的按键输入表达式,或者某些程序要求你输入密码的时候,弹出一个小键盘,要求你点击上面的数字......不得不说,这种设置十分的人性化,计算器看起来跟真的很像,到银行取钱,也有用于输入密码的小键盘......不过问题的关键在于,这种图形界面模拟的键盘是用手来按的,而不是用鼠标点的。
在CLI下使用计算器,只要输入bc就可以启动计算器,输入一个复杂的公式1+1,回车,得到结果2。
为什么要使用Linux命令行
- 命令行更高效
- Linux系统中使用键盘操作速度要比鼠标更快
- 图形化界面不可重复,而命令行可以编写脚本完成所有过程(例如:删除过期日志文件)
- 图形化界面开销大
- 运行图形化界面会占用很多的系统资源,运行命令行可以将系统资源释放给更应该做的事情
- 命令行有时候是唯一的选择
- 大部分服务器操作系统不会安装图形界面(GUI)
- 联网设备的维护管理工具本来就没有图形化界面供我们使用
Linux命令行操作技巧
- Tab键补全
- 可以用来自动补全命令或文件名,省时准确
- 未输入命令状态下,连按两次"Tab"键列出所有可用命令
- 已输入部分命令名或文件名,按"Tab"键自动补全
- 光标
- "up方向键上":可以调出输入历史执行记录,快速执行命令
- "down方向键下":配合"up"选择历史执行记录
- "Home":移动光标到本行开头
- "Ctrl + A":移动光标到行首
- "Ctrl + E":移动光标到行尾
- "Ctrl + L":清理屏幕显示
如何登录Linux
- Linux登录方式主要有如下两种:
- 本地登录

- 远程登录
可以通过PuTTY、Xshell等工具远程登录到openEuler
!tip
以root管理员登录系统后,提示符为"#"。
修改密码
- 密码关系到系统和数据的安全
- 为保障系统安全,您需要做:
- 初次登录系统时修改密码
- 定期修改密码
- 设置高复杂度的密码,如八位以上字符,且包含大写字母、小写字母、数字和特殊字符中三种及以上的字符
- 可以通过passwd修改密码:
bash
[root@openEuler ~]# passwd # 修改当前用户自己的密码
Changing password for user root.
New password: # 此处输入新密码
Retype new password: # 重复输入新密码
passwd: all authentication tokens updated successfully
[root@openEuler ~]# passwd test1 # 管理员root修改普通用户的密码
Changing password for user test1.
New password:
BAD PASSWORD: The password is a palindrome
Retype new password:
passwd: all authentication tokens updated successfully.
!tip
为了安全起见,openEuler系统默认在输入密码时不会显示密码,而且也不会用任何字符进行位数反馈。
Linux用户分类
- Linux系统中,使用UID来表示不同的用户身份,且每个用户的UID是唯一的
- Linux系统根据用户UID的不同,将用户分为以下不同的类型(以openEuler为例):
- 超级用户
也叫超级管理员,其UID=0,拥有系统所有权限,类似Windows的Administrator - 系统用户
也叫程序用户,其 1<=UID<=999,一般都是由程序创建,用于程序或者服务运行时候的身份 - 普通用户
一般是由管理员root创建,用于对系统进行有限的管理维护操作,1000<=UID<=60000
- 超级用户
Linux用户创建及删除
用户创建(默认普通用户):useradd username用户查看:id username用户切换:su - username用户删除:userdel username
bash
[root@openEuler ~]# useradd user01 # 创建用户user01
[root@openEuler ~]# id user01 # 管理员查看user01信息
uid=1001(user01) gid=1001(user01) groups=1001(user01)
[root@openEuler ~]# su - user01 # 切换到user01用户,提示符为$符号
[user01@openEuler ~]$ id # id命令默认查看当前用户信息
uid=1001(user01) gid=1001(user01) groups=1001(user01)
[user01@openEuler ~]$ exit # 退出当前用户
logout
[root@openEuler ~]# userdel user01 # 删除user01用户
openEuler基础命令
电源命令 - 关机与重启
- shutdown命令的作用是关闭计算机,使用权限是超级用户
主要参数:- -h:关机后关闭电源
- -r:关机后打开电源(相当于重启)
- -p:明确表示将关闭系统并切断主电源
- reboot命令的作用是重新启动计算机,使用权限是系统管理者
主要参数:- -w:并不会真的重开机,只是把记录写到/var/log/wtmp文件里
- -d:不把记录写到/var/log/wtmp文件里
- -i:关闭网络设置之后再重新启动系统
bash
shutdown -h now # 立即关机
shutdown -r now # 立即重启
reboot # 重启系统
!tip
shutdown命令可以安全地将系统关机,使用直接断掉电源的方式来关闭Linux系统十分危险。
Linux与Windows不同,其后台运行着许多进程,所以强制关机可能会导致进程的数据丢失,使系统处于不稳定的状态,甚至在有的系统中会损坏硬件设备。
在系统关机前使用shutdown命令,系统管理员会通知所有登录的用户系统将要关闭,并且login指令会被冻结,即新的用户不能再登录。
文件路径表示
- 绝对路径:指从根"/"路径开始来表示文件,例如:/root/Desktop
- 相对路径:指从当前路径开始来表示文件,例如:./Desktop
- 其中"./或."表示当前路径;".../或..."表示当前路径的上一级目录
- 查看当前路径命令:pwd
- 路径切换命令:cd
bash
[root@localhost ~]# pwd # 查看当前路径
/root
[root@localhost ~]# cd /root/Desktop # 进入Desktop目录(绝对路径表示)
[root@localhost Desktop]# cd # cd回车默认进入当前用户的家目录
[root@localhost ~]#
[root@localhost ~]# cd ./Desktop # 进入Desktop目录(相对路径表示)
[root@localhost Desktop]# pwd
/root/Desktop
[root@localhost Desktop]# cd ~ # 切换到用户家目录。~表示用户的家目录
[root@localhost ~]# pwd
/root
!tip
cd命令用于改变当前工作目录。
语法:cd dir
cd /usr:进入目录/usr中。
cd ...:进入(退到)上一层目录,两个点代表父目录。
cd .:进入当前目录
cd:不带参数,则默认回到家目录。
cd -:进入前一个目录,适用于在两个目录之间快速切换。
cd ~:进入家目录
文件的查看
- 查看目录里的内容:
ls - 普通文件的查看:
cat、tail、head
bash
[root@localhost ~]# ls -a # 显示所有文件及目录
ifcfg-eth0 ifdown-eth ifdown-isdn ifdown-routes
[root@localhost ~]# ls -l # 显示文件型态、权限、拥有者、文件大小等详细信息
total 228
-rw-r--r-- 1 root root 86 Jun 15 19:03 ifcfg-eth0
-rw-r--r-- 1 root root 254 Jun 15 19:03 ifcfg-lo
[root@localhost ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0 # 读取该文件全部内容
DEVICE="eth0"
BOOTPROTO="dhcp"
ONBOOT="yes"
TYPE="Ethernet"
PERSISTENT_DHCLIENT="yes"
[root@localhost ~]# tail -2 /etc/sysconfig/network-scripts/ifcfg-eth0 # 查看该文件最后2行内容
TYPE="Ethernet"
PERSISTENT_DHCLIENT="yes"
[root@localhost ~]# head -2 /etc/sysconfig/network-scripts/ifcfg-eth0 # 查看文件前2行内容
DEVICE="eth0"
BOOTPROTO="dhcp"
!tip
ls命令:用于查看目录里的文件:
-a:查看所有文件,包含隐藏文件;
-l:以长格式显示文件的详细信息;
-R:递归列出目录文件中的文件;
-t:按文件的修改时间排序列出。
cat命令:一般用于查看小文件,将文件从第一行到最后一行显示到屏幕。
tail命令:默认查看文件的后10行内容:
-n:后面接数字(如5),表示查看文件的后5行,可以省略-n参数直接接数字;
-f:动态显示文件的变化,一般用户查看日志文件。
head命令:默认查看文件的前10行内容。
less和more:一般用于查看大文件。"q"表示退出,可以在文件中进行搜索查找,按斜杠"/"+关键字。
文件的创建
- 目录(文件夹)创建:
mkdir,选项-p:递归级联创建目录 - 普通文件的创建:
touch
bash
[root@localhost ~]# mkdir my_dir_01 # 创建文件夹my_dir_01
[root@localhost ~]# ls
anaconda-ks.cfg my_dir_01
[root@localhost ~]# mkdir -p my_dir_02/sub_dir # 创建文件夹my_dir_02及子目录sub_dir
[root@localhost ~]# touch test01.log test02.log # 创建文件test01.log test02.log
[root@localhost ~]# ls -lt
total 0
-rw------- 1 root root 0 Jul 29 15:06 test01.log
-rw------- 1 root root 0 Jul 29 15:06 test02.log
文件的复制
cp命令:拷贝复制文件或目录- 选项
-a:复制目录时保留链接、文件属性并复制目录下的所有文件 - 选项
-r:复制目录下所有子目录和文件,并保留属性信息
- 选项
bash
[root@localhost ~]# ls
test01.log test02.log
[root@localhost ~]# cp /etc/passwd passwd.back # 拷贝/etc/passwd文件内容至当前目录并重命名为passwd.back
[root@localhost ~]# cp -r /var/log/audit ./ # 拷贝audit目录及目录下所有文件至当前目录
[root@localhost ~]# ls
audit passwd.back test01.log test02.log
[root@localhost ~]# cp -s /etc/passwd passwd_link # 将passwd_link作为passwd文件的链接文件
[root@localhost ~]# ls
audit passwd.back passwd_link test01.log test02.log
[root@localhost ~]# ls -l
total 8
drwx------. 2 root root 4096 Jul 29 15:24 audit
-rw-------. 1 root root 2546 Jul 29 15:24 passwd.back
lrwxrwxrwx. 1 root root 11 Jul 29 15:25 passwd_link -> /etc/passwd
-rw-------. 1 root root 0 Jan 2 19:20 test01.log
-rw-------. 1 root root 0 Jul 29 19:20 test02.log
!tip
cp命令用于复制文件或者目录,可以一次复制单个文件,也可以一次复制多个文件(cp命令属于高危命令,使用不慎就会有丢失数据的危险)。
语法:cp OPTION... SOURCE... DIRECTORY:
-a:此选项通常在复制目录时使用,它保留链接、文件属性,并复制目录下的所有内容;
-p:除复制文件的内容外,还把修改时间和访问权限也复制到新文件中;
-r:若给出的源文件是一个目录文件,此时将复制该目录下所有的子目录和文件;
-l:不复制文件,只是生成链接文件;
-s:把目标文件建立为源文件的软链接文件,而不是复制源文件。
cp f1 f2:把文件f1复制一份,新文件名为f2。
cp f1 d1/:复制f1到目录d1下,新文件名字不变。
cp f1 f2 f3 d1/:复制多个文件到同一个目录中。
cp -i f1 f2:如果f2已经存在,则覆盖之前等用户确认。
cp -r d1 d2:复制目录时需要-r参数。
cp -rv d1 d2:-v参数显示复制的过程。
cp -s d1 d2:把目标文件建立为源文件的软链接文件,而不是复制源文件。
cp -a f1 f2:-a参数保留原文件的属性,可用于复制块设备,字符设备,管道文件等。
cp命令默认情况下在覆盖文件之前不会询问用户,所以通常情况下shell里面已经对它做了别名,加入了-i参数。cp命令的-f参数不是强制覆盖的意思。
文件的移动和重命名
mv命令:移动或重命名文件(高危命令,使用不慎就会有丢失数据的危险)- 若原文件和目标文件在同一个目录里面,则
mv命令的效果就相当于给文件重命名
bash
[root@localhost ~]# ls
passwd_link test01.log test02.log
[root@localhost ~]# mv test02.log test03.log # 将文件test02.log改名为test03.log
[root@localhost ~]# ls
passwd_link test01.log test03.log
[root@localhost ~]# mv test01.log /root/test # 将文件test01.log移动到/root/test目录
[root@localhost ~]# mv -f test01.log test03.log # 以test01.log内容强制覆盖test03.log
!tip
mv命令用于移动件或者目录(高危命令,使用不慎就会有丢失数据的危险)。
如果原文件和目标文件在同一个父目录里面,则mv命令的效果就相当于给文件改名。
语法:mv 选项 源文件或目录 目标文件或目录。
-b:若需覆盖文件,则覆盖前先行备份。
-f:force强制的意思,如果目标文件已经存在,不会询问而直接覆盖。
-i:若目标文件(destination)已经存在时,就会询问是否覆盖。
-u:若目标文件已经存在,且source比较新,才会更新(update)。
文件的删除
rm命令:删除文件或目录rm命令属于高危命令,没有一个工具能够100%恢复rm命令删除的文件,rm命令删除文件时并不是把文件放到类似图形界面的"回收站"里,所以没有"撤销删除"操作可用
bash
[root@localhost ~]# ls
audit_back passwd.back test01.log test03.log
[root@localhost ~]# rm test01.log # 删除test01.log文件,删除前询问
rm: remove regular empty file 'test01.log'? yes
[root@localhost ~]# rm -rf test03.log # 强制删除test03.log文件
[root@localhost ~]# rm -rf audit_back # 删除audit_back目录及其目录下所有文件和目录
[root@localhost ~]# ls
passwd.back
!tip
语法:rm OPTION file_or_dir
-f,--force:忽略不存在的文件,从不给出提示。
-i,--interactive:进行交互式删除。
-r,-R, --recursive:指示rm将参数中列出的全部目录和子目录均递归地删除。
-v,--verbose:详细显示进行的步骤。
命令如何获取帮助
help命令:获取命令的简单帮助- 在Linux系统中,命令太多,记全几乎不太可能。但是,我们可以通过help命令获取帮助
- 语法:
command --help或help command
bash
[root@localhost ~]# help pwd
pwd: pwd [-LP]
Print the name of the current working directory.
Options:
-L print the value of $PWD if it names the current working directory
-P print the physical directory, without any symbolic links
By default, `pwd' behaves as if `-L' were specified.
Exit Status:
Returns 0 unless an invalid option is given or the current directory cannot be read.
[root@localhost ~]# systemctl --help
systemctl [OPTIONS...] {COMMAND} ...
Query or send control commands to the systemd manager.
-h --help Show this help
--version Show package version
--system Connect to system manager
-H --host=[USER@]HOST......
!tip
在Linux系统中,命令太多,记全几乎不太可能,但是,我们可以通过help命令获取帮助。
命令语法:
help 选项 命令
其中,选项内容包括如下:
-d:显示命令简短主题描述
-s:显示命令简短语法描述
openEuler的文本处理
Linux文本编辑器 - vim
- vim是从Vi(VisualEditor)发展出来的一个高度可定制的文本编辑器,在Vi原有的基础上改进和增加了很多特性
- vim常用的操作:
- 命令行模式(普通模式):文本复制粘贴、删除、撤销、光标来回跳转等操作
- 插入模式(编辑模式):文本的编辑、修改等操作
- 底行模式(普通模式的一种):在普通模式下按":"冒号,可以进行文本的保存、退出、搜索替换等操作

!tip
openEuler 20.03 LTS系统安装后默认没有安装vim,需要手动安装vim。
vim编辑器命令模式
- 命令格式:默认情况下使用vim打开文件就会进入到命令模式(普通模式)下
bash
vim [options] [file]... 编辑指定文件
vim [options] - 从标准输入(stdin)读取文本
vim [options] -t tag 编辑tag定义出的文件
vim [options] -q [errorfile] 编辑第一个出错处的文件
- 常见参数:
- -c:打开文件前先执行指定的命令
- -R:以只读方式打开,但是可以强制保存
- -M:以只读方式打开,不可以强制保存
- -r:恢复崩溃的会话
- +num:从第num行开始
vim命令模式常见操作
- 快速移动光标
上下左右键或k、j、h、l键上下左右移动光标0:移动到行首g0:移到光标所在屏幕行行首:n:移动到第n行gg:到文件头部G:到文件尾部
- 数据操作
yy or Y:复制整行文本y[n]w:复制一(n)个词d[n]w:删除(剪切)1(n)个单词[n] dd:删除(剪切)1(n)行
vim编辑器插入模式
- 命令行使用
vim filename打开文件,默认进入命令模式,输入i/I/a/A/o/O等命令就会进入到编辑模式 - 如果
filename文件存在,则会打开文件并显示文件内容 - 如果
filename文件不存在,vim会在下面提示"New File",并且会在第一次保存时创建该文件 - 按
Esc可以退出插入模式,回到命令模式(普通模式)
bash
[root@openEuler ~]# vim test.txt #默认进入命令模式
~
"test.txt" [New File]
[root@openEuler ~]# vim test.txt #按i/I/a/A/o/O等命令会进入编辑模式
-- INSERT --
vim编辑器底行模式
- 查找
:/word 或者/word :查找一个字符串word,按"n"向后继续搜索,"shift+n"向上搜索
- 替换
:1,5s/word1/word2/g:将文档中1-5行的word1替换为word2,不加"g"则只替换每行的第一个word1%s/word1/word2/gi:将文档所有的word1替换为word2,不区分大小写
- 保存退出
:w:保存文档不退出:wq:保存文档并退出:q:退出不保存文档:q!:文档修改后退出不保存强制退出:wq!:强制保存退出
openEuler的网络管理
openEuler系统网络重要概念
- 主机网络设备:主机内的网卡
- 接口
- 为使用设备,驱动程序在设备上创建了接口
- 广播地址
- 到达本网段上所有主机的地址
- 子网掩码
- 将IP地址划分成网络地址和主机地址两部分的掩码
- 路由
- IP包跨网段访问时候的下一跳地址
- 链路:设备到网络的连接
查看IP地址相关命令
-
使用ip、ifconfig命令可以查看当前主机的IP地址信息
-
查看主机所有网卡信息:
bash
[root@openEuler ~]# ifconfig -a
[root@openEuler ~]# ip addr show
- 查看主机某个接口信息:
bash
[root@openEuler ~]# ifconfig enp0s3
[root@openEuler ~]# ip addr show enp0s3
!tip
查看所有接口的当前IP地址和子网掩码:ip addr。
配置静态IP地址 - 修改网卡配置文件
- 网卡配置文件存放路径
bash
[root@openEuler ~]# ls /etc/sysconfig/network-scripts/ifcfg-*
/etc/sysconfig/network-scripts/ifcfg-enp0s3 /etc/sysconfig/network-scripts/ifcfg-enp0s8
- 配置文件参数说明
| 参数 | 说明 |
|---|---|
| TYPE | 配置文件接口类型 |
| BOOTPROTO | 系统启动地址协议 |
| ONBOOT | 系统启动时是否激活 |
| IPADDR | IP地址 |
| NETMASK | 子网掩码 |
| GATEWAY | 网关地址 |
| BROADCAST | 广播地址 |
| HWADDR/MACADDR | MAC地址,只需设置其中一个,同时设置时不能相互冲突 |
| PEERDNS | 是否指定DNS,如果使用DHCP协议,默认为yes |
| DNS{1, 2} | DNS地址 |
| USERCTL | 用户权限控制 |
| NAME | 网络连接名称 |
| DEVICE | 物理接口名称 |
配置IP地址 - 配置文件示例
- 配置enp0s3接口的静态IP地址:192.168.56.100/24
bash
TYPE=Ethernet
BOOTPROTO=static
NAME=enp0s3
DEVICE=enp0s3
ONBOOT=yes
IPADDR=192.168.56.100
NETMASK=255.255.255.0
- 重启网络
bash
[root@openEuler ~]# nmcli connection reload enp0s3
[root@openEuler ~]# nmcli connection up enp0s3
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/12)
!tip
有时过多配置项反而会增加网络排障难度。
配置静态IP地址 - nmcli命令配置
- 查看当前主机网络连接
bash
[root@openEuler ~]# nmcli connection show
NAME UUID TYPE DEVICE
enp0s3 3c36b8c2-334b-57c7-91b6-4401f3489c69 ethernet enp0s3
enp0s8 00cb8299-feb9-55b6-a378-3fdc720e0bc6 ethernet enp0s8
- 配置静态IP地址
bash
[root@openEuler ~]# nmcli connection modify enp0s3 ipv4.method manual ipv4.addresses "10.0.2.10/24" ipv4.gateway "10.0.2.2"
- 重启网络
bash
[root@openEuler ~]# nmcli connection reload enp0s3
[root@openEuler ~]# nmcli connection up enp0s3
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/12)
- 查看IP
bash
[root@openEuler ~]# ip addr show enp0s3
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 08:00:27:7d:e1:a5 brd ff:ff:ff:ff:ff:ff
inet 10.0.2.10/24 brd 10.0.2.255 scope global noprefixroute enp0s3
valid_lft forever preferred_lft forever
!tip
conn:connection,表示要对连接进行操作
add:添加(连接)
type:类型
con-name:连接名称
ifname:网卡名称
mod:modify,表示要修改(连接)
路由介绍
- 要让不同子网的两台主机能够相互通讯,就需要有一种能够描述如何从一台主机到另一台主机的机制,这一机制称为:路由选择(Routing),路由选择通过路由项进行描述
- 路由项是一对预先定义的地址,包括:目的地(Destination)和网关(Gateway)
- 路由项的含义是通过网关能够完成与目的地的通讯;路由表是多个路由项的集合
!tip
关于系统中路由的详细描述:https://www.freebsd.org/doc/zh_CN/books/handbook/network-routing.html
路由管理与配置
- openEuler中,使用
route命令查看、配置、管理本机路由 - 除了
route命令,ip命令也可以用来管理系统路由 - 这些命令作用于系统中的路由表,系统运行时,路由表加载到内存中,由系统内核进行维护
!tip
route、ip、nmcli都可以用来管理路由,这里以route为例介绍。
route查看路由表
- 使用route命令查看路由表,如下:
bash
[root@openEuler ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.110.254 0.0.0.0 UG 100 0 0 enp4s0
192.168.110.0 0.0.0.0 255.255.255.0 U 100 0 0 enp4s0
192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0
!tip
使用route -n参数显示路由时,Destination字段显示的是IP。
采用route命令查看路由时,共有八个字段,字段意义说明如下:
U Up,表示此路由当前为启动状态;
H Host,表示此网关为一主机;
G Gateway,表示此网关为一路由器;
R Reinstate Route,使用动态路由重新初始化的路由;
D Dynamically,此路由是动态性地写入;
M Modified,此路由是由路由守护程序或导向器动态修改;
!,表示此路由当前为关闭状态。
route新增路由
- 新增一条到网段或主机的路由,如下(临时生效):
bash
route [-f] [-p] [Command [Destination] [mask Netmask] [Gateway] [metric Metric]] [if Interface]]
- 举例:
bash
[root@openEuler ~]# route add -net 192.168.101.0 netmask 255.255.255.0 dev enp4s0
[root@openEuler ~]# route add -host 192.168.100.10 dev enp4s0
[root@openEuler ~]# route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default _gateway 0.0.0.0 UG 100 0 0 enp4s0
192.168.100.10 0.0.0.0 255.255.255.255 UH 0 0 0 enp4s0
192.168.101.0 0.0.0.0 255.255.255.0 U 0 0 0 enp4s0
192.168.110.0 0.0.0.0 255.255.255.0 U 100 0 0 enp4s0
192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0
!tip
使用route命令可以新增路由数据,新增路由数据保存在内存中,重启后失效。
route add -net 192.168.101.0 netmask 255.255.255.0 dev enp3s0,代表新增到192.168.101.0/24网段路由,经由enp3s0发送出去。
route add -host 192.168.101.100 dev enp3s0,代表新增到192.168.101.100主机路由,经由enp3s0发送出去。
通过route查看路由表,可知,到主机的路由优先于到网段的路由。
route删除路由
- 使用route del命令删除到网段或者主机的路由
- 语法:
bash
route del [-net|-host] [netmask Nm] [gw Gw] [[dev] If]
- 举例:
bash
[root@openEuler ~]# route del -host 192.168.100.10 dev enp4s0
[root@openEuler ~]# route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default _gateway 0.0.0.0 UG 100 0 0 enp4s0
192.168.101.0 0.0.0.0 255.255.255.0 U 0 0 0 enp4s0
192.168.110.0 0.0.0.0 255.255.255.0 U 100 0 0 enp4s0
192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0
!tip
route del -net 192.168.101.0 netmask 255.255.255.0 dev enp3s0,代表删除到192.168.101.0/24网段路由。删除网段路由时,网段和掩码这两个参数一定需要携带,dev参数可以不携带。
route del -host 192.168.101.100 dev enp3s0,代表删除到192.168.101.100主机路由。后面的dev参数可以不带。
删除route文件中的路由,采用vi编辑,然后重启网络即可。
主机名
- 主机名是用来在一个局域网中标识一台机器的名称
- 这台机器不一定是一台物理机器,也可以是一台虚拟机
- 主机名信息存放在文件/etc/hostname中
bash
[root@openEuler ~]# cat /etc/hostname
openEuler
设置主机名
- 临时设置主机名:hostname new-name
- 永久设置主机名:hostnamectl set-hostname new-name
- 通过修改文件设置主机名:在/etc/hostname文件中写入new-name
bash
[root@openEuler ~]# hostname
openEuler
[root@openEuler ~]# hostname huawei
[root@openEuler ~]# hostname
huawei
[root@openEuler ~]# hostnamectl set-hostname openEuler01
[root@openEuler ~]# hostname
openEuler01
[root@openEuler ~]# echo "HCIA-openEuler" > /etc/hostname
!tip
设置完成后并不会立即生效,重新登录后才能在命令提示符中看到,或者 source .bashrc。
使用hostname命令查看当前系统的主机名。
hosts文件介绍
- 局域网中存在着一些主机,我们可以通过IP地址去访问它们
- 随着局域网中主机数量增加,IP地址较难记忆,我们希望通过主机名直接访问其他主机
- 这时我们可以通过一张记录主机名和IP地址对应的表找到这些主机,这张表就是hosts文件
bash
[root@openEuler ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
!tip
hosts是一个没有扩展名的系统文件,其基本作用就是将一些常用的网址域名与其对应的IP地址建立一个关联"数据库"。
当用户在浏览器中输入一个需要登录的网址时,系统会首先自动从hosts文件中寻找对应的IP地址,一旦找到,系统就会立即打开对应网页。
如果没有找到,则系统会将网址提交DNS域名解析服务器进行IP地址的解析。
查看hosts文件:cat /etc/hosts。
修改hosts文件
- 可以用编辑器修改hosts文件内容,格式:
bash
# Ip domain.com
192.168.10.20 www.example.com
- 若想去掉某条记录,加#注释即可,如:
bash
#ip domain.com
#192.168.10.20 www.example.com
root@openEuler \~# echo "HCIA-openEuler" > /etc/hostname
> [!tip]
>
> 设置完成后并不会立即生效,重新登录后才能在命令提示符中看到,或者 source .bashrc。
> 使用hostname命令查看当前系统的主机名。
**hosts文件介绍**
- 局域网中存在着一些主机,我们可以通过IP地址去访问它们
- 随着局域网中主机数量增加,IP地址较难记忆,我们希望通过主机名直接访问其他主机
- 这时我们可以通过一张记录主机名和IP地址对应的表找到这些主机,这张表就是hosts文件
```bash
[root@openEuler ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
!tip
hosts是一个没有扩展名的系统文件,其基本作用就是将一些常用的网址域名与其对应的IP地址建立一个关联"数据库"。
当用户在浏览器中输入一个需要登录的网址时,系统会首先自动从hosts文件中寻找对应的IP地址,一旦找到,系统就会立即打开对应网页。
如果没有找到,则系统会将网址提交DNS域名解析服务器进行IP地址的解析。
查看hosts文件:cat /etc/hosts。