1-3章
特殊变量的意义以及Linux命令执行返回值意义
$0:shell本身的文件名
$1:添加到shell的各参数值。1是第一个参数,2是第二个参数
$*:所有参数列表
$$:pid即脚本运行的当前进程id号
$#:参数个数
$?:命令返回码。0表示执行正常,我们在脚本中可以通过判断上条命令执行的$?来进行下一步的操作
sh -x 测试或者说是预编译
read -p “提示输入”参数名称
test条件判定
文件名、文件类型
-e:该文件名是否存在;
-f:该文件名是否存在且为file;
-d:该文件名是否存在且为目录;
数字之间的判定
-eq:相等;
-ne:不相等;
-gt:大于;
-lt:小于;
-ge:大于等于;
-le:小于等于;
两个文件的比较
-nt(newer than):判断file1是否比file2新;
-ot(older than):判断file1是否比file2旧;
判断字符串的数据
test -z string:判断字符串是否为0,若为空返回true;
test -n string:判断字符串是否为0,若为空返回false;
test str1 = str2:判断str1是否等于str2,若相等返回true;!=则相反;
文件权限检测
-r:检测文件名是否存在且具有“可读”权限;
-u:检测文件名是否存在且具有“SUID”权限;
-g:检测文件名是否存在且具有“SGID”权限;
-k:检测文件名是否存在且具有“Sticky bit”权限;
多重条件的判断
-a:两个条件同时成立
-o:任何一个条件成立
tuned
tuned应用提供的配置文件分为以下几个类别:
节能型配置文件
性能提升型配置文件
性能提升型配置文件中包括侧重于以下方面的配置文件:
存储和网络的低延迟
存储和网络的高吞吐量
虚拟机性能
虚拟化主机性能
调优配置文件
随红帽企业Linux8分发的调优配置文件
调优配置文件 | 用途 |
均衡 | 非常适合需要在节能和性能之间进行折中的系统 |
desktop | 从balanced配置文件衍生而来加快交互式响应速度 |
throughput-performance | 调优系统以获得最大的吞吐量 |
latency-performance | 非常适合需要牺牲能耗来获取低延迟的服务器系统 |
网络延迟 | 从latency-performance配置文件衍生而来。它可以启用额外的网络调优参数,以提供低网络延迟 |
网络吞吐量 | 从throughput-performance配置文件衍生而来。应用其他网络调优参数,以获得最大网络吞吐量 |
节能 | 调优系统以最大程度实现节能 |
Oracle | 基于throughput-performance配置文件,针对Oracle数据库负载进行优化 |
Virtual-guest | 当系统在虚拟机上运行时,调优系统以获得最高性能 |
Virtual-host | 当系统充当虚拟机主机时,调优系统以获得最高性能 |
tuned-adm命令可用于更改tuned守护进程的设置,tuned-adm命令可以查询当前设置、列出可用的配置文件、为系统推荐调优配置文件、直接更改配置文件或关闭调优。系统管理员可以用tuned-adm active来确定当前活动的调优配置文件。
MBR分区
MBR的意思是“主引导记录”,它是存在于磁盘驱动器开始部分的一个特殊的启动扇区。
GPT分区
GPT的意思是“全局唯一标识磁盘分区表”。它是一种更加先进新颖的磁盘组织方式,一种使用UEFI启动的磁盘组织方式。
分区工具
1.fdisk
如果分区类型是MBR,且磁盘大小小于2T的情况下,可用采用fdisk
SAS:SATA,RAID5,RAID1
2.gdisk
如果分区类型是GPT,且大小小于2T的情况下,那么请使用gdisk工具
特别要注意:千万不要用gdisk去操作已经是MBR格式的分区
3.parted
只要你的磁盘大小是大于2T的,那么就可以使用parted。。不在乎你是MBR还是GPT
确实难用
parted对驱动器分区前,必须写入磁盘标签,规定分区类型。
parted /dev/sdb mklabel msdos(MBR)
parted /dev/sdb mklabel gpt(GPT)
开机自动挂载(/etc/fstab)
1.设备名称或者设备UUID
2.设备挂载点
3.文件系统类型
4.默认参数
5.dump 0为不启用
6.fsck 0为不检查
文件编辑完成后使用mount -a挂载,测试保证配置文件正确
swap(交换分区)
swap分区在系统的物理内存不够用的时候,把硬盘内存中的一部分空间释放出来,以供当前运行的程序使用。那些被释放的空间可能来自一些很长时间没有什么操作的程序,那些被释放的空间被临时保存到swap分区中,等到那些程序要运行时,再从swap分区中恢复保存的数据到内存中。
扩展或缩减文件系统
resize2fs针对EXT4
xfs_grows针对xfs文件
ACL(Access Control List)
ACL的全称是Access Control List(访问控制列表),一个针对文件/目录的访问控制列表。
它在UGO权限管理的基础上为文件提供一个额外的、更灵活的权限管理机制。
它被设计为UNIX文件权限管理的一个补充。ACL允许你给任何用户或用户组设置任何文件/目录的访问权限。
ACL是Linux里面常见的概念但不是Linux特有的。
ACL作用:
既然是作为UGO权限管理的补充,ACL自然要有UGO办不到或者很难办到的本事,
1.可以针对用户来设置权限
2.可以针对用户组来设置权限
3.子文件/目录继承父目录的权限
查询ACL功能是否启用(默认都启用)
selinux
Linux上传统的访问控制是自主访问控制Discretionary Access Control(DAC)。在这种形式下,一个软件或守护进程以User ID(UID)或Set owner User ID(SUID)的身份运行,并且拥有该用户的目标(文件、套接字、以及其它进程)权限。这使得恶意代码很容易运行在特定权限下,从而取得访问关键的子系统的权限。
另一方面,强制访问控制Mandatory Access Control(MAC)基于保密性和完整性强制信息的隔离以限制破坏。该限制单元独立于传统的Linux安全机制的运作,并且没有超级用户的概念。
selinux是美国国家安全局对于强制访问控制的实现,是Linux历史上最杰出的新安全子系统。selinux默认安装在Fedora和Red Hat Enterprise Linux上。
selinux工作方式:
主体Subjects
目标Objects
策略Policy
模式Mode
当一个主体Subject(如一个程序)尝试访问一个目标Object(如一个文件),selinux安全服务器selinux security server(在内核中)从策略数据库Policy Database中运行一个检查。基于当前的模式mode,如果selinux安全服务器授予权限,该主体就能够访问该目标。如果selinux安全服务器拒绝了权限,就会在/var/log/messages中记录一条拒绝信息。
selinux有三种模式:
Enforcing强制--selinux策略强制执行,基于selinux策略规则授予或拒绝主体对目标的访问
Permissive宽容--selinux策略不强制执行,不实际拒绝访问,但会有拒绝信息写入日志。
Disabled禁用--完全禁用selinux
传统linux,一切皆文件,由用户、组,权限控制访问。
而在Selinux中,一切皆对象(object),由存放在inode的扩展属性域的安全元素所控制其访问,所有文件及端口资源和进程都具备安全标签:安全上下文(security context)
查看文件或目录安全上下文:ls -Z
各个字段的意思:
SELinux:指定登陆系统的用户类型,多数都属于自由(unconfined)
Role:定义文件,进程和用户的用途
Type:指定数据类型
Level:限制访问的需要,由组织定义的分层安全级别,0-15,s0默认且是最低
File:
更改文件的安全上下文
用于更改的命令:semanage fcontext(首选)、restorecon和chcon
系统启动
选择system目标
systemd目标是一组系统应启动以达到所需状态的system单元。下表列出了最重要的目标。
目标 | 用途 |
graphical.target | 系统支持多用户、图形的登录 |
multi-user.target | 系统仅支持多用户基于文本的登录 |
rescue.target | 单用户模式 |
emergency.target | 紧急模式 |
启动过程
开机自检bios--> MBR引导-->GRUB菜单-->加载内核(kernel)-->init进程初始化
自动部署
composer
composer是RHEL8中提供的新工具.针对特殊用例,composer允许管理员构建自定义系统镜像,以便在云平台或虚拟环境中部署.
Composer使用Cockpit图形控制台.你也可以使用composer-cli命令,从命令行调用Composer.
系统配置:
ip
hostname
yum
selinux
firewall
容器(podman)
产生背景
存在问题:
1.开发和运维环境或配置不同,导致开发环境运行良好的交付产物在运维环境出现问题。
2.传统运维过程中,如果线上有十台机器部署同样的业务,每台都需要部署一次,重复劳动。
以上出现了两种解决方案:虚拟机、容器
虚拟机vs容器
虚拟机是使用虚拟化技术将底层硬件虚拟出一套硬件后,在虚拟硬件上面运行完整的操作系统,再在该系统上运行所需的应用,
虚拟机存在几个缺点:
1.资源占用多,虚拟启动需要占用几百M的内存。
2.冗余步骤多,系统级别的操作步骤,往往无法跳过,比如用户登录。
3.启动慢,往往几分钟,启动操作系统多久,启动虚拟机就需要多久。
容器的缺点:
安全性
什么是容器
Linux容器是由Linux内核所提供的具有特定隔离功能的进程,Linux容器技术能够让你对应用及整个运行时环境(包括全部所需文件)一起进行打包或隔离。从而让你在不同环境(如开发、测试和生产等环境)之间轻松迁移应用的同时,还可保留应用的全部功能。
Linux容器还有利于明确划分职责范围,减少开发和运维团队间的冲突。这样,开发人员可以全心投入应用开发,而运维团队则可专注于基础架构维护。由于Linux容器基于开源技术构建,还将便于你在未来轻松采用各种更新、更强的技术产品。包括CRI-O、Kubernetes和Docker在内的容器技术,可帮助你的团队有效简化、加速和编排应用的开发与部署。
总结,容器就是一个视图隔离、资源可限制、独立文件系统的进程集合。
podman
podman是一个开源的容器项目,可在大多数Linux平台上使用。podman是一个无守护进程的容器引擎,用于在Linux系统上开发,管理和运行Open Container Initiative(OCI)容器和容器镜像。Podman提供与Docker非常相似的功能。正如前面提到的那样,它不需要在你的系统上运行任何守护进程,并且它也可以在没有root权限的情况下运行。
podman可以管理和运行任何符合OCI规范的容器和容器镜像。podman提供了一个与Docker兼容的命令行前端来管理Docker镜像。
Linux提供了一组可用于执行此操作的容器工具,包括:
1.Podman-直接管理容器和容器镜像
2.Skopeo-可用于检查,复制,删除和签署镜像
3.Buildah-可用于创建新的容器镜像
镜像命名规则:
registry_name:仓库名
username:认证的用户名
Image_name:镜像名称
tag:镜像版本。默认的最新为lastest