Linux介绍和开源协议
Linux的桌面是通过桌面软件(GNOME、KDE、UKUI)
驱动程序:
windows的驱动程序由厂家开发
Linux的驱动程序由开源社区爱好者和贡献者开发
软件:
windows大部分软件需要“许可证”,付费软件
Linux大部分软件为开源软件,免费
开源:公开源代码,所有人都可以访问下载
开源 != 免费,有限制的开源,受到开源许可证的制约
自由软件基金会定义了四大自由:
允许以任何目的进行使用软件(可以收费)
允许学习和修改软件源代码(增加、删除、修改源代码)
允许重新发布软件(将你的开源软件拿过来修改再次发布)
允许开发衍生版本的软件(将源代码作为蓝本,进行二次开发)
常见的开源许可证(开源协议):
GPL协议:GNU 公共许可证
用你的源代码开发的软件,也要开源
BSD:伯克利软件发布版
可以修改、重新发布开源软件,并且卖钱
Apache:
可以修改开源软件并且进行商用但是需要声明修改的地方
MIT:麻省理工学院
只需要在源代码中保留作者的许可信息
国内的开源协议:
木兰宽松许可证—openeuler
在进行分发的时候需要把“许可证”副本也分发出去
开源的好处?和闭源软件的对比:
透明:
任何人都可以看到源代码;非法人士不会头铁将恶意代码写到开源软件中
低成本:
开源社区的爱好者和贡献者开发,为爱发电,几乎没有成本
闭源软件需要商业公司的开发团队开发,需要投入研发和人头费用
风险低:
开源社区的人群基数大,由开源社区维护
质量高:
开源软件由开源社区发行和维护更新
Linux发展史
Linux是一个操作系统;操作系统=内核+应用程序
内核是操作系统的心脏,管控网络、进程、文件系统等
Linux的发展历程:
Bell、MIT、GE三者共同研发Multics(多路信息计算系统);目的是为了让多个用户和多个终端同时使用一个操作系统。
unix的诞生:
unix之父---->肯汤普逊;C语言之父---->丹尼斯(汤普逊的好友)。最开始是汇编语言编写unix,后面丹尼斯通过C语言重新编写了unix。系统开始具有移植性。unix开源流行各个高校。后面Bell实验室的老大AT&T重新收回unix版本,变为收费模式,unix进入收费时代。
Minix的诞生:
由于unix的收费,安德鲁教授为了教学目的重新编写了一个操作系统叫做Minix,只是为了在学校中教学。后面为了防止Minix被商业公司拿去售卖,停止了Minix的开发
GNU和自由软件基金会的诞生:
斯托曼发起了GNU计划,创建了自由软件基金会;目的是为了创建一个完全自由的操作系统,并且同时开发了gcc编译器。
Linux的诞生:
Linus Torvalds 林纳斯这个大学生基于GNU协议开发了Linux内核,后面开源发布到互联网上,全球各地的开发者共同开发和维护。
Redhat的诞生:
Bob Young是红帽的创始人。他在Linux内核的基础之上结合GNU工具以及各种的开源软件,发布了RHEL操作系统。(软件不收费,提供的技术服务、补丁更新等服务收费)
红帽的发行版本
RHEL:Redhat Enterprise Linux 红帽企业级Linux
Fedora:个人桌面版本
CentOS:社区企业级系统
发行顺序:
在2019年前:
最先发行:Fedora
其次发行:Centos
最后发行:RHEL
Centos和RHEL是一比一进行复刻;rhel提供技术支持等服务,Centos什么都没有
在2019年后:
最先发行:Fedora
其次发行:Centos-Stream(滚动更新版,更新速度快,为了让用户第一时间体验技术和软件)
最后发行:RHEL
RHEL永远是最稳定的版本
基于RPM的迁移
使用convet2rhel进行系统迁移
centos迁移到rhel,收费
centos迁移到centos-stream…其他Linux发行版本,免费
红帽认证体系
金字塔类型,需要一级一级的考试;例如要考RHCE,就必须先通过RHCSA的考试认证。全部都是上机考试都是实验。
8和9版本的区别,RHCSA变化不大,RHCE加入了用容器管理自动化的概念
RHCSA:红帽系统管理员
(入门基础命令,网络配置,磁盘管理、安全、容器等)
RHCE:红帽工程师
(自动化方向,ansible的剧本、角色、变量、模块的使用)
RHCA:红帽架构师
五个方向的证书--->五合一变成RHCA证书
CL210 openstack 云计算
CL260 ceph分布式存储
RH358 自动化服务和管理
RH442 性能调优
DO447 高级ansible自动化
从2024年1月1日开始,CL210不支持线下考试;改为线上预约红帽的环境进行考试。DO447升级为DO374,无法进行DO447的考试
如何安装RHEL操作系统
- 需要底层的硬件:CPU、内存、网卡、磁盘等等
- 安装系统的安装介质:ISO镜像文件
1.通过vmware workstation软件虚拟出一套硬件(CPU 内存 硬盘硬件设备等),也叫做虚拟机
推荐是15.5版本以上,最新是17,越新越好
VMware Desktop Hypervisors for Windows, Linux, and Mac
2.获取ISO镜像介质
需要注册账号,登录账号
如果要下载ISO镜像介质,需要订阅红帽
开发者订阅--->免费 Red Hat Developers | Red Hat Developer
rhel-baseos-9.0-x86_64-dvd.iso
rhel:操作系统名称
baseos:基础操作系统
9.0:系统的版本
X86:CPU架构(intel amd)
64:操作系统位数;64位操作系统支持4G以上的内存;32位只支持4G以下
.iso:镜像文件后缀名
DVD:标准的镜像;下载此镜像
Boot:启动镜像;启动计算机,不能安装系统(可以间接安装系统,通过联网的形式安装软件包)
qcow2:虚拟化的镜像模板,里面有虚拟机(导入kvm虚拟机)
virtio:只是一个虚拟化的驱动程序安装包,用于优化虚拟机的性能(提供读写性能)
3.安装操作系统
磁盘分区,必须分的几个区
/boot分区,保存系统的引导程序和内核文件;推荐500M
内核100-200M
swap分区,内存交换分区(类似于windows中的虚拟内存);将内存中的数据临时存放到磁盘当中;(如果内存是小于32G大小,推荐分为物理内存的2倍;大于32G,根据情况随意给)
/ 分区
kdump内核保护机制,默认会使用内存的空间;当内核崩溃后,会记录内核崩溃的信息保存到文件中
公有云安装RHEL系统
以华为云为例:
通过私有镜像创建rhel系统;需要先将ISO镜像文件上传到对象存储的桶当中,再通过桶创建私有镜像;
上传的ISO镜像,通过在镜像服务IMS进行安装服务器;在创建弹性云服务器选择私有镜像不会显示;
登录系统的方式
- 图形化登录
- 命令行(字符页面)登录
都是Linux控制台登录的;在Linux中 系统一共有6个控制台
第一种和第二种都是图形化页面
第三种到第6种都是命令行页面
为什么要多个控制台?防止一个控制台的应用程序持续运行,占据前端的命令页面,导致不能操作命令;防止一个控制台的程序卡住,导致控制台无法使用;
切换控制台:
Ctrl + Alt + F[1-6]
- 浏览器web页面登录
RHEL7开始(Centos7)支持web页面登录
启动cockpit.socket
命令:systemctl enable --now cockpit.socket
浏览器网址:https://ip地址:9090
认识命令行和基础命令的使用
[ root@rhel9 ~ ]# 命令提示符
root:当前登录系统的用户
@:分隔符
rhel9:主机名;这个地方只会显示部分的主机名。如果是一个完整的域名(主机名),只会显示前面的部分主机名;例如rhel9.example.com,只会显示rhel9
修改主机名:hostnamectl set-hostname 主机名
让主机名生效:bash
~:表示的是用户当前的目录,也就是在哪个路径下;如果是~则表示用户的家目录(用户保存文件的默认目录)
#:表示的是特权提示符;如果是#号则表示当前的用户是root用户;如果是$则表示当前的用户是普通用户
基础命令使用:
date 查看系统的时间和日期
CST 中央标准时间(Asia/Shanghai)
UTC 世界协调时间
cal 查看系统的日历
useradd 创建用户
id 用户 查看用户是否创建
su 切换用户
使用su – memeda01切换用户;不要使用su memda01切换用户
exit 退出用户
ls 列出文件和目录
如果是蓝色,表示是目录
如果是白色,表示是文件
如果是绿色,表示是可执行文件(可执行程序)
如果是红色,表示是归档文件(理解为windows种的压缩包)
vim 编辑器
vim 文件(此文件已经存在),修改内容保存;
vim 文件(此文件不存在),如果不保存直接退出,文件不会创建;
如果保存并退出,文件会创建;
用法:打开文件后,按i键进入编辑模式(修改文件的内容),按Esc键退出编辑模式,wq保存并退出(如果修改了内容不想保存,直接q!)
P:修改系统语言
vim /etc/locale.conf 打开这个文件
LANG="en_US.UTF-8"’ 修改此内容
中文:zh_CN.UTF-8
英文:en_US.UTF-8
按i键,进入编辑模式,才能修改内容
按Esc键,退出编辑模式
按shift + : 号,然后输入wq保存并且退出;w是保存,q是退出,!是强制
w! q! wq!
重启系统reboot
history 查看历史记录
! + 数字 例如:!126,调用系统第126条历史记录
!+ 字符串 例如:!l,调用最近一条以l开头的历史记录
Alt + . 调用上一次命令的最后一个参数
!+ $ 调用最后一个参数
Ctrl + r 使用历史搜索功能
tab键 补全指令,补全的对象可以是命令、文件、目录等等
例如: user
tab补全的指令需要具有唯一性,才能够完全补全;
如果指令不唯一的话,不会补全,需要按2下tab键查看以user开头的指令;
如果tab不出来,表示以user开头的指令有很多
Linux当中的小技巧:
如果在Linux当中敲打命令,终端没有回显信息大概率是执行成功;
通过方向键的 ↑ ↓来查看历史命令;
熟练tab键补全;
清屏:clear / Ctrl + l
创建新的终端:Ctrl + Shift + t
关闭终端:Ctrl + d (终端上没有任何的东西)
扩大终端:Ctrl + Shift + +
缩小终端:Ctrl + -
切换标签页:Alt + [1 2 3 …]
光标的跳转:
跳转到最前:Ctrl + A 或 home键
跳转到最后:Ctrl + E 或 end 键
剪切光标前面的内容: Ctrl + U
剪切光标后面的内容: Ctrl + K
粘贴剪切的内容:Ctrl + Y
强制退出:Ctrl + C
停止任务:Ctrl + Z
复制/粘贴:Ctrl + Shift + C/V (需要鼠标选中内容)
Linux用户和密码
用户的分类:
超级管理员:root用户
系统用户:各类服务的使用用户
普通用户:root用户手动创建的用户
创建用户:useradd
修改密码:passwd
passwd修改用户的密码,密码不可见;如果后面不接用户,则修改当前用户的密码
root用户可以修改所有用户的密码,普通用户只能修改自己的密码
root用户修改密码可以无视密码策略,普通用户需要遵守密码策略
用户的切换: su –
root用户切换其他普通用户,不需要验证密码
普通用户切换为其他用户,需要验证密码
(如果普通用户没有设置密码,则其他普通用户无法进行登录;root无视可以直接登录用户)
Linux命令的语法
命令的组成结构、语法
命令 + 选项 + 参数
命令:实现指定的功能(ls、useradd、date)
选项:对命令的扩展和补充(ls -a)
参数:命令操作的对象,对象可以是文件、目录、用户等等
选项可以省略,参数不一定能够省略;
可以使用 ;来接上多个指令
PS:选项的内容
ls举例
ls -a 列出当前目录的所有文件和子目录
ls --all 列出当前目录的所有文件和子目录
短格式都是 – 开头
长格式都是 – 开头
长格式是选项完整的意思,短格式是长格式的缩写 -a 等价于 –all
短格式的出现是为了简写
不是所有的长格式都有短格式,一般都有
长格式不支持连写,短格式支持连写并且顺序没有要求
命令的格式:命令、选项、参数之间使用空格进行隔开;这样才是一个完整的指令
-
- 命令和选项之间使用空格隔开(ls -a)
- 命令和参数之间使用空格隔开(useradd user10)
- 选项和选项之间使用空格隔开(ls -a -l)
- 选项和参数之间使用空格隔开(ls -a /opt)
- 参数和参数之间使用空格隔开(ls /root /opt)
查看命令的帮助
whatis 命令
第一次使用的时候可能无法正常查看;whatis 查询的是系统的帮助手册(man手册),基于索引进行查询(mandb手动生成索引)。如果man手册没有记录这个命令,whatis 查询不到。
查询选项的帮助
--help 查询的是命令的选项帮助;命令开发者开发的 定义的
ls [OPTION]... [FILE]...
[ ]表示可选项,可以不加选项也可以加选项
…表示列表,可以接多个选项和参数
大小字母,表示必须有,不可以省略
+FORMAT,表示特定格式
-u|--utc|--universal,表示多选一
MMDDhhmm[[CC]YY][.ss],表示特定的格式
man手册
man date
man -k 关键字
man -f 命令 === whatis 命令
man手册的章节
- 用户的命令
- 系统调用的内核
- 函数库
- 设备文件
- 文件格式
- 游戏
- 软件包
- 超级管理员命令
- 内核信息
结构名称 | 描述 |
NAME | 名称及简要说明 |
SYNOPSYS | 格式和使用方法说明 |
DESCRIPTION | 详细说明 |
OPTIONS | 可用选项及其介绍说明 |
EXAMPLES | 示例(附带简单说明) |
FILES | 相关文件 |
ENVIRONMENT | 环境变量 |
SEE ALSO | 其它帮助参考 |
man打开之后,按q键退出;按/进行搜索,按n/N进行关键字跳转
info/pinfo 查看更加详细的帮助
查询红帽的门户网站查询案例和帮助文档:access.redhat.com
软件的帮助手册(需要安装软件服务,例如httpd vsftpd nfs),会自带软件帮助文档教导配置
帮助手册的保存路径:/usr/share/doc下
--->www.baidu.com
文件系统结构和目录的作用
Linux文件系统结构:单根倒树状结构;所有的文件和目录都是从 /根目录开始
windows文件系统结构:多根多树状结构;每一个盘符都是一个树根
文件:windows不区别大小写;Linux区别大小写
命令:windows不区别大小写;Linux区别大小写
/etc/sysconfig/
/:根目录
/:路径分隔符
sysconfig属于etc下面的子目录,etc是属于/目录下的子目录
目录的作用
/root:超级管理员的家目录(root用户的默认保存路径)
/home/{username}:(username是用户名)普通用户的家目录(会以用户名的名字作为目录名)
/usr:安装自定软件保存的目录
/usr/bin:保存普通用户和root用户可以执行的命令
/usr/sbin:保存root用户可以使用的命令,普通用户一般无法执行
/usr/local:安装自定软件保存的目录
源码包
/etc:系统配置文件主目录,例如配置网卡,修改主机名…(软件的配置文件)等
/var:系统的日志文件,网站的数据文件(应用程序的日志),http、ftp、邮件的内容
/tmp:系统的临时目录;临时的去缓存文件和目录,重启系统情况临时文件
/boot:系统的启动目录,系统的内核和引导程序存放到此目录下;
/dev:系统设备文件所在的目录,比如磁盘、U盘、CPU、内存等
/proc:存放系统运行的数据(存放到内存);每一个目录都是一个进程ID(pid),退出进程后目录被删除,无法通过rm删除目录来实现退出进程。系统关机删除
目录和文件的命名要求
名称不能超过255个字符
/ 不能作为目录和文件的名字,/是分隔符
名字大小写敏感
不要使用特殊字符进行命名,如果非要使用,记得用单引号包括起来
不推荐使用双引号,因为有些符号具有特殊意义
eg: touch “!400” ;
文件的路径
指的是文件在系统上的保存的位置
绝对路径、相对路径
绝对路径:以 / 开头的路径
在任何位置都可以使用
相对路径:不以 / 开头的路径
在指定的位置才能使用
每一个目录下都有. 和..目录
.目录代表当前目录
..目录代表当前目录的上一级目录
常用命令
cd 切换工作目录
cd 指定路径
cd .. 切换到上一级目录
cd / cd ~ 切换到当前用户的家目录
cd ~user 切换指定用户的家目录
cd - 切换到上一次所在的目录
touch 创建文件
第一种情况:文件不存在
touch file 直接创建一个空文件
第二种情况:文件已存在
touch file 更新文件的时间戳
stat file 查看文件的时间戳
时间戳的作用:
用于安全检测:系统检测到文件时间戳修改,能够判断文件是否被入侵访问
用于文件的备份和同步:系统检测到文件的modify时间变化,则判断文件内容被修改,可以同步到其他的服务器上
Access: 2023-12-16 11:00:30.937651381 +0800
Modify: 2023-12-16 11:00:30.937651381 +0800
Change: 2023-12-16 11:00:30.937651381 +0800
Birth: 2023-12-16 11:00:13.705571592 +0800
+0800 代表UTC(世界协调)时间+8个小时
Access:最后一次访问文件的时间(查看文件的内容)
Modify:最后一次修改文件的时间(vim编辑文件内容)
Change:最后一次文件被改变的时间(文件的属性,文件的权限、文件的拥有人、拥有组)
Birth:文件创建的时间,在rhel9之前位空
touch -md '2024-12-12 10:59:01' file 手动修改文件的时间戳
rm 删除文件和目录
删除文件:rm 文件
-f 强制删除
-i 交互式删除,提醒是否删除 y删除 n不删除
删除目录:
-r 删除目录,递归删除
-rf 强制递归删除,推荐删除目录使用此命令(非常危险,Linux中没有回收站的概念,删除是真的删除了)
rmdir 删除空目录。如果目录中有文件,无法进行删除
mv 移动和重命名
mv 源目标 目的路径
如果目的路径没有源文件,则移动
eg: mv aaa /opt/
如果目的路径有源文件,则提示覆盖,内容也会覆盖
eg:mv aaa /opt
如果目的路径没有源文件,怎么进行移动并改名
eg:mv aaa /opt/bbb
如果处于同一个路径,mv则是修改文件名
eg: mv bbb ccc
eg:mv /root/ddd /opt/eee 移动文件并且修改文件名
ls 列出当前目录的文件和子目录(内容)
ls 指定路径
-l 以长格式的方式列出(更加详细,可以查看权限、拥有人等信息)
-a 查看目录下所有的内容(包括隐藏文件-以.开头的都是隐藏文件和目录)
-h 以人类可读的方式(大小格式转换)
-R 以树状的形式列出(看到每个目录下的内容)
-d 查看目录(-ld 查看目录的详细信息)
mkdir 创建目录
mkdir 目录
-p 递归创建目录
eg: mkdir /a/b/c/d/e -p
cp 拷贝文件和目录
cp 源目标 目的目标
如果目的目标是一个目录,则将源文件拷贝到指定目录下
eg:cp test /opt 等价于 cp test /opt/test
cp test /opt/test1
如果目的目标已经存在源文件,则覆盖
eg:cp test /opt
cp -r 拷贝目录
cp -a 拷贝文件/目录(保留文件的属性信息)
file 查看文件类型