openEuler公开课
openEuler课程(7 Days)
虽然说是openEuler,不如说是Linux系统的观光旅游
Day 1
今天主要学习了什么是openEuler,如何将openEuler安装到云上
Day 2
开源许可证
GPL,GPL V2, LGPL, MulanPSL v2
学习Linux(基于openEuler)
Linux From Scratch
可以去构建并编译一个属于自己的Linux的操作系统
Linux内核只是一个符合POSIX标准的内核,提供一套应用程序接口(API),并不是一个完整的操作系统
openEuler脱胎于EulerOS,是华为发行的基于Linux内核的服务器操作系统
如何登录Linux
本地登录/远程登录
shell
shell是用c语言写的程序,是用户使用Linux的桥梁,用户通过shell命令来控制Linux
Linux用户
root是Linux是系统中的一个特殊管理员,拥有最高的权限,甚至无限破坏系统
使用su -username
的方式切换用户
Linux命令行基础知识
登录命令
login
使用Alt + F1-F6 来切换不同的虚拟控制台
last
显示近期用户或者终端的登录情况
exit
退出系统
电源管理
shutdown
关闭计算机,权限是超级用户
halt
关闭系统,权限是超级用户
reboot
重启,权限是系统管理者
文件管理命令
在Linux中,一切皆是文件
/
为根目录
/bin
binary 存放常用命令
/boot
存放Linux启动时的核心文件,包括镜像文件和连接文件
/dev
device 设备,存放外部设备
/etc
存放管理系统的配置文件和子目录
/lib
存放动态连接共享库
/mnt
让用户临时挂在别的文件系统,例如光驱
/opt
给主机额外安装软件的目录
/proc
提供系统内存映射,此目录是虚拟目录
/root
系统管理员目录
/run
临时文件系统,系统重启时会清空
/sbin
super bin 系统管理员目录
srv
server 存放一些服务启动后所需的数据
/sys
文件系统sysfs
/tmp
存放临时文件
/usr
用户的许多应用和文件
/var
存放不断扩充的东西,例如各种日志文件
/home
主目录
Linux文件路径
绝对路径:从根目录/
开始的路径
相对路径:相对于当前文件夹的路径
pwd
打印当前的目录
cd
改变目录
1 | cd .. 进入上一目录 |
ls
列出文件目录或文件信息
1 | ls -l 列出详细资料(后可以接指定文件) |
mkdir [name]
创建文件夹
touch
创建空文件或者修改文件的时间戳
cp
复制文件或者目录,一个或多个
mv
移动文件或目录
rm
删除文件或目录
1 | rm -r 将目录即子目录递归删除 |
cat
读取文件或者将多个文件合并为一个文件
head/tail
显示文件的前/后文件的x行
more
以一页一页的形式显示
1 | SPACE:下一屏 |
less
读取内容,附带搜索功能
1 | -f 强制打开 |
find
在指定目录下寻找文件
locate
快速查找文件系统内是否有指定文件
which
查看某个命令的位置及是否存在
gzip/tar
压缩包
ln
创建链接文件
软连接:类似快捷方式,删除源文件后失效,可以对目录链接甚至跨文件系统
硬链接:以副本形式存在,但不占用空间,不可跨文件系统,补课链接目录
1 | ln 默认为硬链接 |
Day 3
文本编辑器和文本处理
常用的有emacs vi vim nano gedit kedit
使用vim
自行查找文档
Day 4
用户和权限管理
管理用户和组
Linux是一个多用户的操作系统
每个用户使用系统资源前要先向系统管理员申请一个账号,再用这个账号进行登录
每个用户都会有一个单独的UID
超级用户,root用户 UID 0
普通用户 UID 1000-60000
虚拟用户 UID 1-999
使用id命令来查看用户的id和信息
每个用户有自己的用户名,密码,主目录等信息
useradd
用于创建用户账号,并保留在/etc/passwd
中
usermod
用于修改用户账号的各类信息
用户信息 name:password:uid:gid:comment:home:shell
1 | -c 修改备注 |
userdel
删除用户
1 | -f 强制删除 |
passwd
用于修改用户的密码及其相关的信息
1 | -n 设置修改密码最短天数 |
用户组的相关概念
用户组是具有相同特性用户的逻辑集合,通过组的形式来统一管理,每个用户组有一个特有的id号GID
每个用户添加时默认有一个与用户名同名且UID和GID相同的用户组
root组 UID0
普通用户组 UID500-60000
系统用户 UID1-499
管理用户组
groupadd
创建新的用户组,并将组的信息添加到系统文件
使用cat /etc/group查看是否创建成功
groupmod
用于修改用户组的识别码或者名称
groupdel
删除用户组,但用户需要先删除再删除用户组
gpasswd
添加或者删除用户到组中
1 | gpasswd -a user usergroup 将user用户关联到用户组usergroup |
用户和组的关联文件
/etc/passwd文件 用户账号信息
/etc/shadow文件 用户账号信息加密文件
/etc/group文件 组信息文件
/etc/gshadow文件 组加密文件
文件权限管理
文件权限的基本概念
文件权限一般分为读,写,执行
在Linux系统中,不同的用户所处的地位也不尽相同,不同地位的用户拥有不同的权限等级
分为三种:
- 只允许自己访问
- 允许一个特定的用户组访问
- 允许任意用户访问
文件的权限位说明
d r w x r - x r - x
文件类型 读 写 执行 读 - 执行 读 - 执行
属主权限 属组权限 其他用户权限
chmod
修改文件权限
操作对象 | 操作符 | 权限 |
---|---|---|
u 属主 | + 添加权限 | r 读 |
g 属组 | - 减少权限 | w 写 |
o 其他用户 | = 给予特定权限 | x 执行 |
a 所有用户 |
亦可以直接修改权限码
1 | chmod 644 usertxt |
chown
修改文件属主或属组
chgrp
修改文件属组
umask
遮罩码
1 | umask 查看权限掩码 |
文件的ACL(Access Control List)权限控制列表
ACL又文件系统支持,可以更加细化的去修改不同用户的权限
其他权限管理
su 仅切换用户身份
su - 切换用户身份和shell
sudo 允许普通用户执行管理员才能执行的命令
Day 5
安装软件并管理服务
rpm安装
rpm是一种用于互联网下载包的打包和自动安装工具,会生成具有.RPM拓展名的文件
命名格式name-version-release.arch.rpm
(名称-版本号-发行版号-处理器架构)
优点:
- 简单便捷兼容版本
- 参数信息记录在数据库中,便于查询,升级和卸载
缺点:
- 安装环境需要和打包环境一致
- 具有很强的依赖关系
DNF安装
配置DNF
创建本地软件源仓库
软件源是Linux系统的应用程序安装仓库
可以是网络服务器,光盘甚至是硬盘的一个目录
自动安装,方便更新,解决软件依赖,提高安装效率
目录/etc/dnf/dnf.conf
参数配置(目录etc/yum/yum.repos.d)
1 | cachedir: 缓存目录 |
管理软件包/软件包组
搜索软件包
更新
检查更新
源码安装
优点:
- 可以根据自身需求来设置参数
- 经过编译兼容性好
缺点:
- 过程繁琐
- 难以升级
安装过程
- 下载源码包,解压,校验完整性
- 创建makefile文件,
./configure
- 编译-通过make install安装命令,
默认安装路径为/usr/local/
configure/make/make install
使用systemd管理服务(systemctl)
systemd是与SysV和LSB初始化简本兼容的系统和服务管理器,开启systemd服务可以提供基于守护进程的按需启动策略
支持快照和系统状态恢复,维护挂载和自挂载点
使用systemctl命令
Day 6
文件系统
文件系统是操作系统用于明确存储设备或分区上的文件的方法和数据结构(fs: file system)
提供API,管理磁盘或分区
FAT, NTFS, NFS, RAW, Ext, XFS
系统交换空间
Linux系统交换空间(swap)就是磁盘上的一块区域,当物理内存资源紧张时,将内存中不常访问的资源保存到预先设定的硬盘上的交换空间来释放该资源占用的内存。
创建swap分区:fdisk,mkswap,swapon
创建swap文件:常见文件,mkswap格式化文件,swapon启用swap文件
磁盘的挂载和使用
磁盘类型
HDD:机械硬盘
SSD:固态硬盘
接口类型:
IDE
SCSI
SATA
SAS
FC
查看磁盘信息
1 | fdisk -l 查看所以磁盘的信息,包括已挂载和未挂载的 |
磁盘分区
磁盘分区将硬盘驱动分成多个逻辑存储单元,以实现不同的功能,例如多系统,限制应用和用户的使用空间
硬盘分区分为两部分,主分区和拓展分区,主分区不可再划分。拓展分局可以划分为多个逻辑分区
Linux没有盘符的概念,通过设备名来访问,设备名放在/dev/xxyN
xx代表磁盘类型,y为分区设备,N代表分区
/dev/sdb6
表示第二个SCSI硬盘的第二逻辑分区
MBR方案
主启动记录(Master Boot Record)分区方案指定了再运行BIOS的固件上的系统如何进行分区
SCSI接口的硬盘最多只能有15个,IDE接口最多63个(包括主分区和拓展分区,主分区最多4个)
磁盘大小限制为2TB
fdisk分区工具的使用(小于2TB)
选择某块硬盘,进入交互模式进行分区操作
fdisk /dev/sdb
创建拓展分区
n:创建新分区
e:创建拓展分区
回车默认起始柱面
回车默认使用全部空间
n:新建分区
l:创建逻辑分区
回车使用默认起始柱面
定义大小 柱面值/直接 + size
p:打印分区信息
w:保存退出
GPT方案
GPT意味GUID分区表,驱动器上的每个分区都有一个全局唯一的标识符,对于运行统一课拓展固件接口(UEFI)固件的系统,GPT是再物理英凡上布置分区的标砖
GPT方案没有主分区和逻辑分区之分
每个硬盘最多128个分区,最多支持18EB的分区大小
parted分区工具的使用
使用parted命令
选择某块硬盘,进入交换式
parted /dev/sdb
输入mklable gpt 创建分区表,用print查看分区表是否为gpt格式
输入mkpart 新建分区
q保存退出
格式化和挂载
磁盘格式化
使用mkfs命令
1 | mkfs.ext4 /dev/sdb2 |
格式化根下的sdb2分区,格式化类型为.ext4
磁盘挂载
磁盘格式化后需要挂载才可以使用
Linux下一切皆为文件,要使用磁盘需要先建立一个联系,这个联系就是一个目录,建立联系的过程我们叫做挂载
例如,我们要访问sdb2这个目录的时候,我们其实是在访问sdb2这个设备,这个目录就是我们和设备交互的接口
fsab
/etc/fstab文件用于存放文件系统的静态信息文件
当系统启动时,会自动从这个文件读取信息冰挂载。
逻辑卷管理
逻辑卷基础
LVM-逻辑卷管理是Linux环境中对磁盘分区进行管理的一种机制,是建立在硬盘和分区之上,文件系统之下的逻辑层
逻辑卷(lv)可以将多个磁盘分区或者块设备(pv)合并组织成为一个大的拓展分区,可以格式化成为不同的文件系统,挂载后使用
逻辑卷的创建
pvcreate
1 | pvcreate /dev/hda{6,7,8,9} 将磁盘hda的6-9分区创建成pv |
逻辑卷的管理
vgcreate用于创建LVM卷组
1 | bgcreate vg1000 /dev/sdb1 /dev/sdb2 创建卷组vg1000 并且将物理卷/dev/sdb1 和 /dev/sdb2添加进入 |
lvcreate命令用于创建LVM逻辑卷
逻辑卷是创建在卷组之上的
逻辑卷同样需要mkfs格式化创建文件系统,mount挂载至目录
动态调整逻辑卷
逻辑卷的拓展无需卸载,可以动态的扩容
- vgs查看空间是否足够
- 使用命令lvextend -L +SIZE lv_device
- 调整文件系统的大小resize2fs device lv_device
逻辑卷的缩容有风险,要卸载文件系统(umount)并强行检测(e2fsck -f)
系统管理
任务管理
计划执行at
at 命令可以直到Linux 在特定时刻运行脚本
atd 是 at 的守护进程,在系统启动时就会以后台模式运行
atd 会定期检查 /var/spool/at目录, 获取通过at命令写入的任务
1 | yum install -y at //安装 |
设置时间 绝对计时/相对计时
以2025年6月7日为例
1 | at now + 4 hours at 16:30 7.6.15 |
执行权限
对于普通用户,是否执行某个脚本和命令取决于/etc/at.allow 和 /etc/at.deny 文件
周期执行corn
搜索 /var/spool/cron 目录,寻找以/etc/passwd
文件中的用户名的命名的crontab文件,然后将crontab文件装入内存
1 | crontab -u //设置某个用户的corn |
格式
1 | minute hour day-of-month month-of-year day-of-week commands |
例 00 08 * * 1 commands
每周一早上8点执行命令
编辑配置文件
使用crontab配置是针对某个任务的,直接编辑/etc/crontab是针对系统的任务
网络管理
openEuler 系统网络
设备:主机内的网卡
广播地址:到达本网段上所有主机的地址
接口:为使用设备,驱动程序在设备上创建了接口
子网掩码:将IP地址分成网络地址和主机地址两部分的掩码
路由:IP包跨网段访问时候的下一跳地址
链路:身背到网络的链接
配置文件
/etc/sysconfig/network-scripts/ifcfg-*
修改后记得重启
1 | systemctl reload NetworkManager |
查看IP地址
1 | ip addr show [设备名] |
NetworkManager
NetworkManager是系统中动态控制及配置网络的守护进程
使用nmcli命令
1 | nmcli con add con-name 'Demo' type Ethernet ifname eth0 //创建链接 |
路由:要让网络上的两台主机能相互通信,就需要有一种能够描述如何从一台主机到另一台主机的机制,称为路由选(Routing)
路由项:一对预先定义的地址,包括目的地(Destination)和网关(Gateway)
路由项的意义在于能够通过网关完成通信,路由表是多个路由项的集合
openEuler使用route来查看配置管理本机路由
直接在命令行下执行route命令来添加路由,不会永久保存,当网卡重启或者机器重启之后,该路由就失效了;可以在/etc/rc.local
中添加route命令来保证该路由设置永久有效。
1 | route -n //查看路由表 |
主机名
主机名是一个局域网中唯一标识一台机器的名称
主机不一定是物理机器,也可以是虚拟机,信息存放于文件/etc/hostname中
1 | hostname new-name //临时设置主机名 |
host文件
主机可以通过IP访问
但是随着主机数量的增加,IP难以记忆,希望通过主机名直接访问其他主机
host就是一张记录主机名和IP地址的表
DNS
当host找不到域名对应的IP时,就会将域名提交给域名解析服务器(DNS),然后DNS返回IP给主机,这个过程成为域名解析
DNS就像是一个公共的hosts文件/分布式数据库
查询DNS
使用nslookup命令查询DNS中的记录
1 | nslookup domain [dns-server](非必选) |
进程管理
进程
进程(Process)是计算机中已运行程序的实体,是程序的一个具体实现
每个Linux进程被创建的时候会被分配给一段内存空间(PCB)
进程的生命周期
每个进程都有一个唯一的进程ID(PID),用于追踪
任何进程都可以通过复制自己地址空间的方式创建子进程,子进程中记录着父进程的(PID)
第一个系统进程是systemd,其他进程都是其后代
进程的优先级
CPU的资源(时间片)分配是按照进程的优先级(priority)
优先级高的进程有优先执行的权利
PRI 优先级
实时进程:0-99
非实时进程:100-139
使用nice和renice命令来调整进程的优先级
前台程序与后台程序
Day 7
shell脚本
shell是系统的用户界面,提供用户与内核进行交互操作的一种接口。将输入的命令提交到内核,并返回结果给用户
查看shell
1 | cat /etc/shells 查看系统默认安装shell |
一个程序和命令只做好一件事,复杂的问题通过多个命令的组合来解决
最简单的shell的脚本就是一系列命名构成的可执行文件,并且可以被其他脚本复用
没 有 银 弹
编写shell
在任意文本编辑器中均可编写
1 | vim demo.sh |
开头注明使用的解释器,和对脚本的描述
1 | ! /bin/bash |
shell是脚本语言,无需编译,仅是提供接口
执行脚本
执行时要注意权限
1 | ./demo.sh |
一个shell想要可执行,还得脚本所在的路径在$PATH变量中
后台执行脚本
1 | ./my_script.sh & 后台执行脚本 |
shell编程基础
文本流
标准输入,标准输出,标准错误
标准输入通过命令行输入,标准输出和错误将会回显
重定向
1 | command < inputfile 从右边的文件读取输入 |
管道
将一个命令的输出连到另一个命令的输入
字符变量和运算
# 注释
shell的变量是无类型的
变量分为环境变量和用户自定义的变量
用 printenv查看全局变量
结构化命令
条件
循环
for,while,until
1 | for var in list |
1 | for i in {1..100..2} |
展示目录下所有文件
1 | ! /bin/bash |