admin管理员组

文章数量:1240606

Linux 启动运行五步曲

1、开机自检

主要对各种硬件设备进行检测,如CPU、内存、主板、硬盘、CMOS芯片等,

2、加载BIOS、主引导目录(MBR)

按照BIOS中设定的启动次序逐一查找可启动设备,加载主引导记录

3、加载内核,初始化initrd

initrd文件其实是一个虚拟的根文件系统,里面有bin、lib、lib64、sys、var、etc、sysroot、 dev、proc、tmp等根目录,它的功能就是让内核与真正的根建立联系,加载根文件的驱动程序,然后以读写方式挂载根文件系统,至此, 内核加载完成。

4、运行/sbin/init,进行系统初始化

内核挂载完根文件系统后,执行第一个用户进程init,init首先运行/etc/init/rcS.conf 脚本,调用了/etc/rc.d/rc.sysinit,对系统做初始化设置,比如

获得网络环境、是否启用SELinux、初始化硬件 、挂载设备、检验磁盘文件系统、加载自定义模块、设置主机名、同步存储器、清除开机过程当中的临时文件等。

5、打印登录提示符

系统初始化完成后,init 给出用户登 录提示符(login)或图形化登录界面,用户输入用户和密码登陆后,系统会为用户分配一个uid  、gid,用于检测用户运行程序时的身份验证。登录成功后,整个系统启动流程运行完毕



一、Linux 系统基础

1.系统安装与配置:系统的安装方法、初始化系统配置(用户管理等)

命令行提示符:[root@localhost ~]#

       [当前登录的用户@主机名 当前所在的目录]

       以#结尾表示当前登录的身份为root

       以$结尾表示当前登录的身份为普通用户

字体变大ctrl  shift  +

字体变小ctrl  -  

永久定义字体编辑-配置文件选项-自定义字体

关机poweroff

重启reboot

系统版本cat /etc/redhat-release

系统信息uname -a

内存信息 /proc/meminfo

cpu信息lscpu

Ctrl + c结束正在运行的命令

Ctrl + l清屏

Ctrl + u光标处清空至行首

Esc+. 或 Alt+.  粘贴上一个命令的参数

vim /etc/sysctl.conf修改内核参数 修改配置文件,重启程序才生效

                                     sysctl -p 可以使这些设置立即生效     

      hostnamectl  set-hostname  主机名 :设置永久主机名,重开终端后生效

      修改配置文件( /etc/hostname ) ,重启服务器

curl -i  网址  显示信息不保存

curl -o 目录 网址 下载文件到哪个目录

wget 网址 下载到当前路径

通配符

     *  任意多个任意字符

    ?  单个字符

    >  覆盖文件内容

    >> 追加文件内容 echo a >> /tmp/test.txt

    cat >> /tmp/test.txt  输入追加内容 ,ctrl+d 结束 

who 当前登录信息

last 查看最近登录信息

lastb 最近登录失败的信息

alias  查看已设置的别名

    alias  别名名称= '实际执行的命令行' 定义新的别名

    unalias  [别名名称]   取消已设置的别名

vim /root/.bashrc #修改别名文件后执行生效

                 source /root/.bashrc

history #管理/调用曾经执行过的命令,默认记录1000条

              history  -c  #清空历史命令

              !n  #执行命令历史中的第n条命令

             !str  #执行最近一次以str开头的历史命令

> /dev/null    从定向到空设备,即扔垃圾桶


源码包:没有经过编译,需要编译器GCC、C++编译后运行,一般以 .tar、. gz 、 .zip 结尾

二进制包:直接使用,一般以 .rpm 结尾

1、使用RPM工具对二进制包进行管理(RPM包有依赖,需要逐个下载)

-a     查询所有已安装软件包  

-q     查询是否安装

-l      列出软件包的详细列表

rpm -qa     软件名 #查询已安装的rpm包

rpm -qf   文件位置 #查询文件属于哪个rpm包

rpm -ivh 完整包名 #安装rpm包 (rpm不会解决依赖问题,yum为主)

rpm -e --nodeps   #卸载包,--nodeps表示不含依赖

2、使用YUM管理二进制包(从指定的服务器自动下载依赖)

yum会查找/etc/yum.repos.d下的.repo文件

配置内容

[源名称]   自定义名称,具有唯一性

name=   仓库的描述信息

baseurl=file:///mnt  (/mnt为挂载点)  指定YUM服务端的位置 

enabled=1  是否启用 (1为启用)

gpgcheck=0  是否验证红帽签名( 0不验证,1验证) gpgkey=  用于RPM软件包验证的密钥文件( 0不查,1查)

 当新机器没有yum包的时候,需要安装包 ——下载外网源使用,移动到/etc/repos.d下Centos下安装yum (简单亲测版)_centos 安装yum-CSDN博客

删除旧的源 rm -rf /etc/yum.repos.d/*  && cd /etc/yum.repos.d

阿里 wget  https://mirrors.aliyun/repo/Centos-7.repo

华为 wget https://repo.huaweicloud/repository/conf/CentOS-7-reg.repo

yum clean all && yum makecache && yum   repolist  

yum   remove 软件名

当镜像源更新报错时::[Errno 14] HTTP Error 404 - Not Found 正在尝试其它镜像。

CentOs7 解决yum更新源报错:[Errno 14] HTTP Error 404 - Not Found 正在尝试其它镜像。_centos7更新后提示找不到尝试其它源-CSDN博客

源码编译——支持开启第三方额外的功能,指定安装路径

     1、 安装开发工具gcc与make,释放源代码至指定目录

    2     ./configure    预编译,检测系统环境是否满足GCC环境,生成makefile文件,下载压缩包后进行解压后的包进行预编译

     3、 make  编译 && make install 安装,

tar压缩

      tar  选项   /路径/压缩包名字   /源数据... #可以压缩多个目录

     压缩格式 gz: gzip , bz2 : bzip2 ,xz :xz,对应选项: -z 、-j 、-J

     -c:创建归档

     -v:显示操作过程

     -f:指定归档文件名称,必须在所有选项最后

     -t:显示归档中的文件清单

tar 解压

     tar  选项  /路径/压缩包名字   选项   /释放的位置

     -x:释放归档

     -f:指定归档文件名称,必须在所有选项最后

     -C:指定释放路径

zip 压缩与解压

     zip  -r (打包目录)   /路径/压缩包名字   /源数据  (类似tar格式)

    unzip    /路径/压缩包名字    -d  /释放的位置(类似tar格式)


每个用户属于一个组,用户根据用户ID来识别。每个文件及文件夹,都有一个所属用户及组。

id    显示当前用户及用户组   id  qq  查看用户qq是否存在

passwd   修改用户密码

root用户     0

系统用户    1-499

普通用户    500

           /etc/passwd :用户基本信息

          /etc/shadow: 用户密码信息

用户名 : 密码占位符 : UID : 基本组GID : 用户描述信息 : 家目录 : 解释器      

        分割为9个字段(主要记忆前四个) 用户名:密码占位符:上次修改密码时间(从1970-1-1到上次日期):密码最短有效天数

       组名 : 密码占位符 : GID : 组成员列表

      组名 : 密码占位符 : 管理员列表 : 组成员列表

       配置文件:/etc/sudoers  

    (alice   web1=(root)  NOPASSWS : ALL)授权哪个用户,在哪个机器,以什么身份,进行免密登录

     切换用户:su - 用户

     普通用户使用root权限: sudo 命令

useradd   选项 用户名 #创建用户

     -u:指定 UID 标记号

    -d:指定宿主目录(家目录),默认在  /home/用户名

    -G:指定所属附加组

     -s:指定登录解释器  /sbin/nologin   禁止用户登录操作系统

usermod   选项 用户名 #修改用户

     -i:修改用户名(新用户名称,原用户名称)  其他选项同上边一致

    -a   添加新组,不删除原来的组

    -L   锁定用户账号

   -G  移到新的组

userdel -r  用户名    #删除用户 宿主目录/用户邮件也一并删除   -r  递归删除

组账户 唯一标识:GID(编号从0开始,默认最大60000)

           Linux一个用户必须至少属于一个组

          基本组:系统创建,与用户同名

          附加组:管理员创建,管理员进行加入

          /etc/group    :组基本信息  

          /etc/gshadow:组管理信息

groupadd   组名  #新建组

groupdel 组名  #删除组的时候,不可以删除基本组,只能删除附加组

gpasswd 选项 用户 组名  #修改组

    -a:添加组成员,每次一个

    -A:设置组管理员

    -d: 删除组成员,每次一个

    -M:覆盖组成员用户列表,可设置多个 m ’组成员,组成员‘

权限是针对用户的,创建用户得 root 去创建,服务器支持同时多人登录

归属关系

      所有者(属主):拥有此文件/目录的用户-user

      所属组(属组):拥有此文件/目录的组-group

      其他用户:除所有者、所属组以外的用户-other

其中权限UGO三位一组     rwxr-xrw-    

chmod    [u/g/o/a] [+/-/=] [r/w/x]    文件 ( -R:递归修改权限)——用户加权限

      chmod 数字 文件 r、w、x分别对应4、2、1 ——文件加权限

chown     -R 属主    文件    ( -R:递归修改归属关系)——修改文件所属主、所属组

chown     : 属组        文件

chown     属主:属组    文件

      附加权限( g+s 新建的文档会自动继承此目录的属组身份  、o+t 限制用户写入权,不能删改)

     ACL访问策略-– 能够对个别用户、个别组设置独立的权限

setfacl [选项] u:用户名:权限   文件

      setfacl [选项]  g:组名:权限     文件

getfacl  文件名  #查看ACL策略

     -m:修改ACL策略

     -x:清除指定的ACL策略

     -b:清除所有指定的ACL策略

     -R:清除递归设置指定的ACL策略,连用-Rm

     新建目录默认权限为755 , 新建文件默认权限为644(所有者:所属组:其他人)

 


UNIX诞生,1970-1-1

Linux平台:虚拟软件为 KVM 软件 ,占用资源少,内嵌服务少

windows:虚拟化软件 VMware,占用内存资源多,内嵌的服务多

Linux 的各个发行版本使用的是同一个内核,因此在内核层不存在什么兼容性问题。每个版本有不一样的感觉;

Linux 的发行版本分为两类

       商业公司维护的发行版,著名的 Red Hat 为代表;

       社区组织维护的发行版,以 Debian 为代表。

        Red Hat、CentOS、Ubuntu、Debian、SuSE、Gentoo、Fedora Core等都是发行版

一个完整的系统= Linux内核(硬件交互)+ 发行版(软件功能)

内核指的是一个进行进程管理、网络通信等功能的系统软件,是操作系统的核心。

内核参数

       net.ipv4.tcp_syncookies 开启SYN Cookies

       net.ipv4.tcp_max_syn_backlog 增加TCP SYN队列长度

      net.ipv4.tcp_tw_recycle 减少time_wait的时间

      net.ipv4.ip_forward 是否打开IP转发

      net.ipv4.conf.default.accept_source_route 是否允许源地址经过路由

     fs.nr_open 端口号范围

     kernel.pid_max 用户打开最大进程数

光驱设备

         /dev/cdrom (cdrom是快捷方式,真正的点是sr0)

        /dev/sr0

采用树形结构

 /:整个Linux文件系统的根目录

/root:管理员家目录

/home:普通用户家目录

/usr:存放安装程序(软件默认目录)

/opt:存放大型软件目录(非强制)

/bin、/sbin:存放系统命令、可执行的程序

/etc: 存放各种系统配置、系统服务配置文件

/dev:存放各种设备文件

/mnt:挂载点

/tmp: 临时文件

/var:经常变化的文件

/boot:内核与启动文件

/lib:系统库文件

. 当前目录

.. 上一级目录


2.命令行操作:使用命令行工具进行系统管理和故障排查 

--help     

whereis 查找文件,包括配置文件,程序文件

lsof -i:80 查找对应的端口占用

ls -l

     -d:目录本身属性

     -h:提供容量单位(K、M等)

     -A:显示包含隐藏数据的所有内容

     -R:递归显示所有内容(包含所有目录及文件)

pwd    #显示当前所在位置

touch   创建文件,可以同时创建多个

mkdir -p  创建目录(递归创建),可以同时创建多个

rm -rf   删除目录(递归删除、强制删除不提示)

mv    原文件   目标路径 #移动

\cp    选项 原文件....   目标路径 #复制

      -r(递归复制) -p(保留权限) \(强制覆盖不提示)

     复制可以支持两个以上的参数,永远把最后一个参数作为目标,其他所有参数都作为源数据    

rsync:远程同步数据,只传输变化过的数据  

    rsync -av --delete

       rsync  [选项...]  源目录     目标目录

       -n:测试不修改

       -a:归档模式

      -v:详细操作信息

     --delete:删除目标文件夹内多余的文档

      -z:传输过程中启用压缩/解压

    下载:rsync  [...]   user@host:远程目录    本地目录

    上传:rsync  [...]   本地目录    user@host:远程目录 

scp -r 远程传输

lrzsz :Linux/Unix同Windows进行文件传输的命令行工具

     yum  -y install lrzsz

      rz 命令:上传文件 (receive 接收) 从Windows传到Linux

     sz 命令 :下载文件 (send 发送) sz 文件名 从Linux发送到Windows

cat   -n   /etc/shells    显示行号

wc -l    /etc/shells     汇总行数

head、tail     查看文本文件部分信息(前几行、后几行) ,默认10行

      head  -数字(表示前几行) 文件名  

      tail    -数字 (表示后几行) 文件名

echo     打印字符   echo  ok > test.txt   ok字符覆盖掉test.txt的内容

             echo  ok >>  test.txt   ok字符追加进test.txt的内容里,在最末尾

find  [目录]  [条件]  -exec  处理命令  {}   \;    #高级查找并处理

  (find  /  -user student  -type  f  -exec cp  {}  /root/findfiles  \;)

    -type  类型(d(目录) 、f(文件) 、l(快捷方式))

    -name   "文档名称"

    -size  +/-文件大小(k、M、G)

    -user  用户名

    -mtime  修改时间

crontab 计划任务 ( crontab  -r 清除计划任务)

    编辑:crontab  -e  -u  用户名

    格式:分*    时 *    日  *     月 *   周 *     任务命令(绝对路径)

    每个星期一的上午8点到11点的第3和第15分钟执行命令: 3,15 8-11 * * 1 command


(2)文本处理命令 (grep、awk、sed 等) 

grep  [选项]   字符串   文本文件   #过滤查找

     -v 取反

     -i  忽略大小写

    ^word 以字符串word开头

    word$ 以字符串word结尾

    ^$ 表示空行

    -E 扩展正则

    -P 正则

sed  选项  条件 指令  被处理文档

    选项 : -n  屏蔽默认输出(不输出源文件,只出结果)    -r 支持扩展正则  -i  修改源文件

   条件 : 行号    /字符串/

    指令 : p  输出   d  删除   s 替换  

    sed -i '2,$d' test.txt #删除2到最后一行

awk 选项  条件 指令  被处理文档

    选项: -F 定义分隔符(当没有空格作为分列时,使用定义分隔符定义其他的)

    指令: print(输出)  

    条件 : 行号    /字符串/

    内置变量:  $1第一列   $2第二列   $3第三列 ... $0 所有列   NR行号    NF 列号(最后一列)

    awk '/^bin/{print NR,$0}'  user   找以bin开头的行,显示该行的行号,所有列

     处理时机,可以执行额外任务

     begin任务  执行1次,读取文档之前执行

     逐行任务   执行n次,读取文档时执行 

     end任务   执行1次,读取文档之后执行

 vim   文本编辑工具

     (1)命令行模式 esc

   gg首行,G行尾,3yy 复制3行 、p 粘贴(put放置)、3dd 删除3行、u 撤销最近一次操作

  d$     d表示删除,$表示行尾,删除到当前光标所在行的行尾所有内容,包括光标

 2yy    2表示2行,复制包括光标行在内的后5行

     (2)末行模式 :

 :w   保存

:q   离开

:wq!   强制保存退出

    :1,10s/root/new/g  替换第1-10行所有的root (g 表示一行)

    :%s/root/new/g 替换文件内所有的root

    :r  /etc/filesystems #读入其他文件内容

    :w  /etc/filesystems #另存为其他文件

    :wq 保存文件 :q 不保存文件 q! 强制不保存文件

    :nohl 取消高亮显示

     (3)文本模式  i

vim /root/.vimrc

    set nu 设置永久性开启行号( . 开头的都是隐藏文件)

    set hlsearch 设置高亮搜索(搜索都会显示高亮)

    修改文件时报错325:非法关闭导致linux生成了以.swp结尾的缓存文件,删除提示中出现swp文件即可。

   vim: error while loading shared libraries: /lib64/libgpm.so.2: file too short

解决步骤:

​
1、yum  reinstall -y gpm-libs

2、yum reinstall -y perl-libs

3、yum clean all

4、yum makecache

5、yum remove -y vim

6、yum install -y vim

​


(3)进程管理命令(ps、top、kil等)

ps -ef :显示系统内运行的所有进程

pstree  查看进程

     -a:显示完整的命令行

    -p:列出对应进程的PID编号

 pgrep — 搜索进程

    -l:输出进程名

    -U:指定用户

    -x:精确匹配

kill  终止进程

    kill  -9  PID #慢慢死

    killall  -9  进程名 #立刻死

    pkill   -9  查找条件     #沾边就死

top     #查看运行的内存、cpu,查看哪个进程占用系统内存和cpu最多。


3.服务管理与配置了解服务的安装、配置、启动、运行、停止原理和配置文件的修改方法

上帝进程:systemd,内核引导之后加载的第一个初始化进程(PID=1),开机服务并行启动,各系统服务间的精确依赖

systemctl restart sshd

systemctl  restart / start / stop / status /enable   服务名     #重起服务 / 开启 / 停止 / 开机自启状态

查看某个服务是否启动三种方法

      方法一:查看redis服务进程情况,这里拿redis服务举例,

     ps -ef | grep redis

     方法二:查看6379(为redis的端口号)端口号是否被占用

     lsof -i :6379

     方法三:显示tcp的端口和进程等相关情况

     netstat -nutlp | grep

进程信息:一个应用程序跑起来了,就有一个进程记录,任务管理器,去干掉,杀掉某个程序

端口:提供服务的一个窗口,应用程序需要暴露的一个窗口

常见的 Linux 服务,如

Web 服务 (Apache、 Nginx) 、

数据库服务 (MySQL.PostqresQL)、

邮件服务(Sendmail、Postfix) 

http-80-httpd

nginx-80

tomcat-8080

https-443-附带安全加密的超文本传输协议

ftp-21-vsftpd-上传下载的文件传输协议(TCP协议,安全性更高)

tftp-69-简单文件传输协议(UDP协议,安全性低)

ssh-22

telent-23

smtp-25(邮件传输协议)

dns-53-bind、bind-chroot

nfs-2049-nfs-utils

rsync-873

mysql-3306

redis-6379

zabbix:10050

php-fpm 9000



二、存储管理

按生产厂家分类

      希捷、西部数据、三星、闪迪、金士顿

按硬盘材质分类

        HDD(Hard Disk Driver):传统硬盘,即机械硬盘、

        SSD(Solid State Disk):固态硬盘

硬盘接口

硬盘与操作系统的连接部件,在硬盘缓存和主机内存之间传输数据,接口的优劣直接影响程序运行快慢和系统性能好坏

IDE接口——传统硬盘——家用、部分用于传统服务器——hda、hdb

SATA接口——固态硬盘——个人、低端服务器

SAS、SCSI接口——服务器

光纤——高端服务器

      /dev/sda:SCSI接口的硬盘,第一块

     /dev/sdb:SCSI接口的硬盘,第二块

     /dev/sdc:SCSI接口的硬盘,第三块

新添加的硬盘需要分区、格式化才能被Linux系统所使用。

UUID 是Linux系统为磁盘分区提供的唯一的标识字符串

 分区方案(分区模式): MBR与GPT

     (1)MBR分区模式——最大支持容量为 2.2TB 的磁盘

       分区类型:主分区、扩展分区(占用所有剩余空间)、逻辑分区,

       最多只能有4个主分区,可以没有扩展分区,至多有一个扩展分区,n个逻辑分区

       可以用于存储数据的分区:主分区与逻辑分区。

       扩展分区不能格式化,空间不能直接存储数据 ;

      (2) GPT分区模式

      全局唯一标识分区表,突破固定大小64字节的分区表限制

      最多可支持128个主分区,最大支持18EB, 1 EB = 1024 PB = 1024^2 TB

硬盘总容量=主分区的容量+扩展分区的容量+逻辑分区的容量

Windows常见的文件系统 :NTFS    FAT(兼容性强)

Linux常见的文件系统: ext4  、 xfs 、  swap

lsblk     #查看当前系统硬盘

fdisk -l    查看磁盘分区情况

fdisk    /dev/sdb  #开始开区 (MBR模式下分区指令)

      操作指令:n 新建、p 查看分区表、w 保存退出、q 不保存退出

     fdisk    /dev/sdb   →p(查看) →n(新建) →last(+5G) →w(保存)→ q(离开)

mkfs.ext4   /dev/sdb1    #对磁盘格式化,使用ext4文件系统

vim /etc/fstab   

       /dev/sdb1   /data   ext4   defaults  0   0    开机自动读取  

   (要挂载的设备/UUID、挂载点、文件格式、defaults 0 0 )

mount    设备路径   挂载点目录 ( 设备路径都在  /dev/cdrom )      #临时挂载

mount -a  永久挂载

blkid      /dev/sdb2       #查看文件系统

df -h   # 查看磁盘空间

df -Th # 查看挂载情况

free -m        #查看内存空间

swapon -s  #查看交换空间

        交换分区(虚拟内存) swapon  利用硬盘的空间,充当内存的空间 (交换空间是内存的两倍,把磁盘空间弄成内存)

       mkswap   /dev/sdd2    #格式化交换空间文件系统

        swapon   /dev/sdd2  #启用交换分区

         swapon -a     #激活交换分区

GPT格式分区采用parted命令(硬盘大于2T)

parted(GPT模式下分区指令)

parted -s  /dev/sdb  mklabel gpt     设置分区类型为gpt格式

mkfs.ext3  /dev/sdb     基于ext3文件系统类型格式化。

partprobe        #刷新分区表

mount  /dev/sdb   /data/      挂载/dev/sdb设备至/data/目录

umount   挂载点目录   #卸载

vgcreate   卷组名    设备路径..... #建立卷组

lvcreate  -L   大小G    -n   逻辑卷名字     卷组名    #建立逻辑卷 (先有卷组才有逻辑卷)

mkfs.xfs    /dev/systemvg/vo     #格式化逻辑卷xfs文件系统

xfs_growfs /dev/systemvg/vo    #刷新xfs文件系统
       resize2fs /dev/systemvg/vo    #刷新ext4文件系统


2.网络存储技术: 文件级的网络存储共享,学习网络存储技术,如 NFS、CIFS ,掌握配置和使用

IOPS:云硬盘每秒能进行多少次读写

IO读写时延:云硬盘每处理一个读写IO需要的时间

吞吐量:云硬盘每秒成功进行读写的数据量。

逻辑卷制作过程:将硬盘分区转化的众多的物理卷PV组建成卷组VG,再从卷组中划分出逻辑卷LV。

 查看  创建  删除  扩展

逻辑卷管理   lvs lvcreate lvremove lvextend——逻辑卷的扩展—前提是卷组有足够的剩余空间 

          扩展逻辑卷的文件系统(当空间扩展了时,也要扩展文件系统。即刷新文件系统)

         逻辑卷缩减: xfs文件系统:不支持缩减

                               ext4文件系统:支持缩减

卷组管理 vgs vgcreate vgremove vgextend——当卷组没有足够的剩余空间,向物理卷要扩展卷组的空间

         卷组划分空间的单位  PE  ,1PE=4M

         vgdisplay  卷组名     #查看PE大小 

         vgchange  -s  1M  卷组名    #修改PE大小

物理卷管理 pvs pvcreate pvremove

RAID 磁盘阵列 (把多块独立的物理硬盘组合起来形成一个硬盘组(逻辑硬盘),提供更高的存储性能和备份技术)

主板—>阵列卡—>磁盘—>操作系统—>数据

0(条带化存储):并行写入,分散存储(很高的传输率,没有冗余,一个磁盘失效将影响到所有数据),100%,2块磁盘

1(镜像存储): 镜像写入,复制存储(磁盘阵列中单位成本最高的,提供了很高的数据安全性和可用性)50%,2块磁盘

5:同时读写,可靠性高,允许坏1块盘,不影响所有数据,1块校验数据,n-1/n,3块磁盘

6:两块磁盘同时失效也不会影响数据的使用,2块校验数据,n-2/n,4块磁盘

0+1:先做镜像存储,再做条带存储,性能高,可靠性高,50%,4块磁盘

文件储存在硬盘上,硬盘的最小存储单位叫做"扇区"(Sector)。每个扇区储存512字节=0.5kb

操作系统会一次性连续读取多个扇区,即一次性读取多个扇区称为一个block(块)。大小常见的有1KB、2KB、4KB,常默认设置为4KB。

块是文件存取的最小单位,一个块只能存放一个文件。文件超过一个块大小,会自动占用更多的块。反之也会占用一个块。

1个文件10B,10000个文件理论上占用   10*10000/1024=97M

1个文件10B,10000个文件实际上占用   4096*10000/1024=40G

操作系统存放文件是基于文件系统,文件系统将文件内容放在块中,属性信息放在inode中

操作系统进行分区,会自动分成数据块和inode区,inode默认大小为128B或256B。

inode:记录文件属性信息、文件数据所在的块编号。每个文件都会占用一个inode,找到inode就能找到文件数据所在的块编号,就能读取文件内容。

inode和块的大小可以在格式化磁盘时指定。  mkfs.ext4 -b 4096 -I 256  /dev/sdb

一般情况下,文件名和inode号码是一一对应的,Linux系统中也可以多个文件名对应一个inod号码。

删除一个文件名,不影响文件访问,链接数会变化。改变文件内容,影响多个文件——硬链接(针对文件的,不能跨分区链接)

ln      /路径/源数据     /路径/快捷方式的名称

文件存在依赖访问,删除一个文件名影响文件访问,链接数不变化——软链接(针对文件和目录,可以跨分区)类似windows的快捷方式。

ln  -s   /路径/源数据    /路径/快捷方式的名称

这是软链接与硬链接最大的不同:文件A指向文件B的文件名,而不是文件B的inode号码,文件B的inode"链接数"不会因此发生变化。

inode信息中有一项叫做"链接数",记录指向该inode的文件名总数,这时就会增加1。删除一个文件名,就会使得inode节点中的"链接数"减1。当这个值减到0,表明没有文件名指向这个inode,系统就会回收这个inode号码,以及其所对应block区域。

有时,文件名包含特殊字符,无法正常删除。这时,直接删除inode节点,就能删除文件

NFS服务基础:Network File System,网络文件系统

用途:为客户机提供共享使用的文件夹

所需软件包:nfs-utils

系统服务:nfs-server

安装软件—创建共享目录—更改权限—重启服务—挂载


3.分布式存储系统:分布式存储系统的部署和管理,如 Ceph、GlusterFS 等。实现分布式存储

Cache:为了提高数据的读取速度,用于将频繁读取的内容放入缓存。(过期时间、命中率)

比如我们把经常用的数据从远处读取到一个离自己最近最快的缓存区后,这样再次使用这个数据,就可以直接从离自己最近最快的这个缓存区读取,提高性能。

CPU读取文件是要从内存来读取的,而且CPU的速度是远远高于内存的,那么如果每次CPU都从内存来读取显然是比较慢的。

于是CPU现在增加了缓存,一般服务器的CPU都支持三级缓存:

L1 Cache

L2 Cache

L3 Cache

Buffer:将数据写入到比自己相对慢的不是很多的中间区域就返回,然后最终再写入到目标地址,提高写入性能

内存的速度要比硬盘的速度快非常多,我们持久化的数据最终要保存到硬盘上。

但是硬盘又那么的慢,CPU要是等待数据完全写到硬盘上,那显然是不现实的。

所以会在内存设置一个缓冲区叫做“磁盘缓冲区”,更准确点称之为“内存的磁盘缓冲区”。

CPU把数据写入到“内存的磁盘缓冲区”之后就认为自己写完,然后转去做别的事情,而不用等数据最终写到硬盘。



三、网络配置与管理

1.网络基础: 掌握计算机网络的基本原理,包括 P 地址、子网掩码、网关、DNS 、 TCP/IP 协议等

主机与主机之间通信三要素

      –IP地址:用来标识一个节点(连网设备)的网络地址,IP地址的组成:网络位与主机位

      –子网掩码:标识IP地址的网络位与主机位,利用二进制的1标识网络位,利用二进制的0标识主机位,分为A类 255.0.0.0 B类 255.255.0.0 C类 255.255.255.0

      –网关:一个网络到另一个网络的关口地址,通常路由器充当。

IP地址(IP address)  (0是代表网段,不能用;255为保留地址,也不能用,掐头去尾的原则)

      配置方式:手动配置、DHCP自动获取

      地址的分类:判断的依据只需要查看IP地址的第一个十进制数

     一共32个二进制位(01),表示为4个十进制数(通过换算),以 . 隔开(点分十进制)

      –A类:1 ~ 127       1.0.0.0-127.255.255.255    第一段网络位,剩下三段为本地计算机

                                     子网掩码 255.0.0.0     子网掩码不能单独存在,区分网络位和本地计算机位

      –B类:128 ~ 191    128.0.0.0-191.255.255.255   第一二段网络位,剩下三四段为本地计算机

                                    子网掩码 255.255.0.0

      –C类:192 ~ 223    192.0.0.0-223.255.255.255    第一二三段网络位,剩下四段为本地计算机

                                    子网掩码 255.255.255.0

      –D类:224 ~ 239 组播     224.0.0.0-239.255.255.255

     –E类:240 ~ 254 科研      240.0.0.0-254.255.255.255

特殊地址

      0.0.0.0——本机地址

     255.255.255.255——子网的广播地址   

     不能以十进制127开头   127.0.0.0-127.255.255.255称为回环地址,作为回环测试

ifconfig 查看ip配置

      ens33:本机默认网卡,linux系统的随机名字

      lo:  本机回环接口   IP永远为127.0.0.1

echo 1 > /proc/sys/vm/drop_caches 清除系统缓存cache

测试网络通信的命令 ping

         ping 对方的IP地址    #默认进行4次通信 ,一次ping有去有回

        ping  -c  3  1  192.168.1.1 (丢失率为0%即为正常通信)

        -c 定义ping的次数    

       丢失率为0%即为正常通信

     永久禁止 ping 主机就是把这个配置写入文件 /etc/sysctl.conf (配置系统信息)永久保存

     (1)在该文件尾部追加 net.ipv4.icmp_echo_ignore_all = 1

     (2)保存退出,输入重启生效命令 sysctl -p

网关:一个网络到另一个网络的关口,实质上是一个网络通向其他网络的IP地址,主要用于不同网络间传输数据。

         两台不同的设备,在本机配置网关,内网数据通过网关→网关把数据转发到其他网络的网关→直到找到对方网络返回数据。

MAC地址:物理地址,硬件地址,网卡出厂时就设定,属于网络模型的第二层:数据链路层

                   和IP地址成对出现,MAC负责数据帧传输,IP负责数据包传输

网卡配置文件:/etc/sysconfig/network-scripts    ifcfg-ens33、ifcfg-eth1

                          eth0表示第一块网卡\eth1表示第二块网卡

       DEVICE=ens33            物理设备名

      ONBOOT=yes                     [yes|no](重启网卡是否激活网卡设备)

      BOOTPROTO=static          [none、static、bootp、dhcp](不使用协议、静态分配、BOOTP协议、IDHCP协议)。

     TYPE=Ethernet               网卡类型

      IPADDR=192.168.4.7          ip地址

     NETMASK=255.255.255.0                  子网掩码(192是C类)

     GATEWAY=192.168.4.254         #网关地址

      配置完成后,重启网卡服务        systemctl restart  network 激活网卡

DNS:将请求的域名转换为IP地址(网卡配置完成后,需上外网)

 /etc/hosts 文件直接解析域名,只为本机解析DNS服务器的功能

/etc/resolv.conf  

        nameserver 202.106.0.20       #主DNS

        nameserver 8.8.8.8                  #备DNS

        配置完成后,无需重启,立即生效。

ss -nutlp (Socket Statistics)显示更多更详细的有关 TCP 和连接状态的信息,比 netstat 更快

netstat -nutlp  显示网络状态

myip.ipip    #查看本地 ip 地址

ip   a    s                #查看IP地址

route   -n         #查看网关地址信息

Tcping  命令使用传输层协议,可以检测IP端口状态

           tcping 192.168.11.23  53

网络四种方法:一临时三永久

ip eth0 192.168.4.110/24 —临时配置IP

nmcli connection  modify eth0   ipv4.method manual  ipv4.address  192.168.4.7/24 ipv4.gateway  192.168.4.254 connection.autoconnect   yes

            nmcli connection up eth0     #激活


2.网络配置: 网络服务配置,如设置静态 P 地址、动态地址、NAT、VPN、防火墙等,实现网络的安全访问和资源共享。

网络变慢了。第一件事情就是,netstat -a | grep TIME_WAIT | wc -l 一下,

        如发现系统存在大量TIME_WAIT状态的连接,通过调整内核参数解决,

        vim /etc/sysctl.conf

       编辑文件,加入以下内容:

       net.ipv4.tcp_syncookies = 1

       net.ipv4.tcp_tw_reuse = 1

       net.ipv4.tcp_tw_recycle = 1

       net.ipv4.tcp_fin_timeout = 30

       然后执行 /sbin/sysctl -p 让参数生效。


3.网络虚拟化: 网络虚拟化,如 VXLAN 等,配置和管理虚拟网络,实现虚拟机之间的通信和网络隔离



四、容器技术

1.Docker: 
基本概念和原理,如镜像、容器、仓库等。安装和使用,能够创建、运行和管理容器。
使用 Docker Compose 进行多容器应用的编排和部署,实现应用的快速选代和部署


2.Kubernetes:
架构和核心概念,如 Pod、Service、 Deployment、ReplicaSet等。
安装和配置,能够使用 Kubernetes 进行容器化应用的部署、扩展和管理。
编写Kubernetes 的配置文件,实现应用的自动化运维和管理。



五、自动化运维与配置管理

1.脚本语言: 编写自动化脚本进行系统管理、任务调度和批量操作,如 Shell 脚本、Python 脚本

Linux默认解释器:/bin/bash

      为了加载用户首选项,bash 在每次启动时都会自动载入 bashrc 配置文件中的内容,这个 .bashrc 隐藏配置文件可以在每个用户的主目录中找到,它用于保存和加载不同用户的终端首选项和环境变量。

命令的执行依赖于解释器(默认解释器/bin/bash,多个解释器存在),用户--->解释器--->内核--->硬件。

Shell

       .bat   #windows批处理脚本

       .sh    #linux的脚本文件

        #! /bin/bash  用bash解释器执行,负责向内核翻译及传达用户/程序指令。

编写规范:解释器、注释、指令

       执行方式:(1)为脚本添加x权限后使用相对或者绝对路径执行  chmod u+x test01.sh                                                                                                                         ./test01.sh 

                        (2)使用解释器执行,无需x权限  bash test01.sh

                        (3)使用source命令执行脚本,无需x权限  source test01.sh   ( 在当前bash环境下读取并执行test01.sh中的命令)

重定向输出

         > 重定向标准输出         

       2> 重定向错误输出       

      &> 重定向所有输出         

     &> /dev/null //将不需要的信息扔黑洞   

变量: 

       自定义变量 ,  echo  $a  调用变量时使用$符号、echo ${a}RMB   变量名与后续字符发生混淆时,使用大括号隔开;

       环境变量:由系统提前定义好,使用时直接调用 :echo $HOSTNAME,每个用户都有自己的环境变量配置文件,~/.bash_profile ~/.bashrc,且以个人配置文件优先加载变量,读取以个人的优先生效。

       当需要给所有用户都使用某个变量,写入全局即可。/etc/profile

$0  脚本本身的名字

       $1  执行脚本时后面第1个位置参数

       $#  执行脚本时后面位置参数个数

       $*  执行脚本时后面所有位置参数、

       $$  当前进程号

       $?  判断上一条指令是否执行成功,0成功,非0失败

echo默认是换行输出,参数 -n(不换行输出) 举例 echo -n hello;echo hi

                                            -e (解析特殊符号) + \n(换行) 举例 echo -e "echo \n hi"

" " 双引号, 界定范围

' ' 单引号,界定范围且屏蔽特殊符号,即便 $ 也视为普通字符

\ 是转义符号,可以屏蔽身后一个特殊符号的功能

let命令:不输出结果,创建变量或者增减变量     

      let a=1+1 //创建变量   echo $a 输出             

     变量的自增减:                 

     常规写法                 主流写法

      let a=a+1              let a++   变量a加1         

     let a=a-1          let a-- 变量a减1

     let a=a+10           let a+=10 变量a加10     

    let a=a-10        let a-=10 变量a减10

    let a=a2              let a*=2 变量a乘以2       

    let a=a/2           let a/=2 变量a除以2       

    let a=a%3       let a%=3 变量a除以3取余数

符号:

       -z  为空   、  == 两边相等  、  != 两边不等

       当多个逻辑符号组合使用时,A && B   #A、B任务都成功算成功 ; A || B    #A、B 任务有一个成功算成功

     -eq 是否相等、 -ne 是否不等 、-gt 是否大于 (e等于,g大于,l小于)、 -ge 是否大于等 于、 -lt 是否小于、 -le 是否小于等于

read指令:自定义提示信息

        read -p "请输入用户名" u         #-p 是可以定义提示信息,u 相当于自定义变量名称

stty -echo 屏蔽回显 、stty echo 恢复回显

if 分支:单、双、多分支;

case 分支:功能类似if,编写时语句比if精简

for 循环:可以定义循环次数

while 循环:可以根据条件决定循环次数,也可以实现无限循环

函数(避免代码重复,分割功能模块,可读性强)

循环

       exit 终止循环,脚本终止

       break 终止循环,继续循环后的任务

       continue 终止当前循环,继续下一次循环

字符串的处理

      (1)字符串截取 ${变量名:截取位置:截取长度}   

         a=abcd   计算机从0位开始识别,a是0位     echo ${a:1:2} //从第二位截取两位

         n=$[RANDOM%62]     random是取随机数,后面的%62是指随机数的范围,得到0~61随机数存在变量n中

      (2)字符串替换 ${变量名/旧/新} 特殊用法: echo ${a//2/6}    2个//表示将所有字符2换成6

      (3)字符串删除 ${变量名#要删除的内容} 掐头: echo ${a#i}             精简写法,包括i本身也删除。${变量名%要删除的内容} 去尾: echo ${a%d*}      精简写法,包括d本身也删除

seq  选项  起始值  结束值 结束值为小于1的负数、零、正小数,不会报错,但输出为空;结束值等于1,则输出为1

        seq  1 2 10   #从1输出到10,中间间隔2,输出结果为1-3-5-7-9


2.配置管理工具:进行服务器的自动化配置、软件安装和更新管理,实现快速部署和一致性管理,掌握 Ansible、Puppet、Chef 等工具的使用


3.持续集成与持续部署 (CI/CD): 了解 CICD 的概念和流程,掌握Jenkins、GitLab CI等 CI/CD 工具的使用。搭建 CI/CD 流水线,实现代码的自动构建、测试和部署,提高软件开发和部署的效率



六、云计算平台与架构

1.OpenStack:
学习 OpenStack 的架构和组件,如 Nova (计算服务)、Neutron (网络服务)、Cinder (块存储服务)、Glance(镜像服务)等。
掌握 OpenStack 的安装和配置,能够使用 OpenStack 搭建私有云平台,提供计算、网络和存储等云服务

opsnstack

OpenStack是一个提供计算、网络、存储的云平台管理工具,通过身份认证给予用户权限,提供web端的可视化界面。

一套laas(基础设施服务)软件,管理“基础设施资源”,便于用户调用和使用,是OpenStack的首要任务。通过众多的组件,实现资源的灵活运用,弹性增删资源。

核心组件:Nova(虚拟机管理)、Glance (镜像管理)、Cinder(块设备管理)

Neutron(网络管理)、Swift(存储NoSQL 数据库)、Keystone(身份验证)、Horizon组件(Web控制面)


2.公有云平台:
了解主流的公有云平台,如阿里云、腾讯云、AWS 等的服务和产品。
掌握在公有云平台上创建和管理云服务器、云存储、云数据库等资源的方法

云计算:是一个laas、paas、saas服务模式,整合资源(存储、计算、网络等,通过虚拟化手段实现)租给有需要的用户。

Iaas:基础设施服务,付费按需使用计算资源——服务器、网络、存储

paas:平台即服务,提供硬件和软件,开发人员可以便捷创建web应用——中间件

saas:软件即服务,基于云的应用,通过网络访问使用——百度网盘,钉钉

以盖房子为例,laas:挖地基搭框架;paas:毛胚房,墙壁窗户都有了;saas:精装修,拎包入住

虚拟化:将不可拆分的实体资源拆分成可以自由划分的逻辑资源,实现资源整合、再分配。云计算就是利用了虚拟化的特点。

公有云:大厂平台——干洗店

私有云:企业自己搭建——自家洗衣机

混合云:敏感数据——私有云——安全性高,应用程序——公有云——成本低

IDC(Internet Data Center)互联网数据中心

SDK,即Software Development Kit的缩写,译作软件开发工具包,辅助开发某一类软件的相关文档、范例和工具的集合都可以叫SDK。

API是前端调用后端数据的一个通道,就是我们俗说的接口,通过这个通道可以无需调用源代码直接访问到后端的数据。实现和其他软件组件的交互

而SDK相当于是一个开发者集成的环境,实现产品软件某项功能的工具包,SDK不仅提供开发环境,还提供很多API。API则是基于SDK之下的数据接口,要在SDK的环境之下调用API数据。

可以把SDK想象成一个虚拟的程序包,在这个程序包中有一份做好的软件功能,这份程序包几乎是全封闭的,只有一个小小接口可以联通外界,这个接口就是API

 Windows系统自带PowerShell,收集日志、下载文件(类似linux种的wget)

        是一种命令行外壳程序和脚本环境,cmd是windows端的命令行窗口,powerShell就是cmd的增强版。

       powershell curl -o  "输出的文件名"  "下载的url"

     (linux 默认root,windows默认用户名Administrator,默认端口3389,修改了的话,远程要加上新的端口,win+r—mstsc)


"信创"理解就像它的字面意思,信息技术应用创新产业,旨在实现信息技术领域的自主可控,保障国家。主打的是国产化软件替代,包括基础硬件,基础软件,应用软件,网络安全,云设施等。

VPC 云上自定义的逻辑隔离网络空间, 子网是VPC内的一个IP地址范围

在VPC内可以创建多个子网,每个子网用于放置不同类型的实例,实例会从子网的IP地址范围内获取IP地址。

VPC就像是你在家里建立的一个独立的网络系统。比如一个办公室,你可以控制谁可以访问这个系统,谁不能。

子网 是在这个独立网络系统中进一步细分的小区域,比如办公室里有的是办公桌区,有的是会议室。每个区域都有自己的用途和规则



七、安全技术

1.系统安全: 
系统的安全配置和加固方法,如用户认证与授权、文件权限管理、SELinux 的使用等
系统漏洞扫描和修复的方法,能够及时发现和解决系统安全隐患

Linux内核定义的事件紧急程度

         分为 0~7 共8种优先级别,其数值越小,表示对应事件越紧急/重要

SELinux的运行模式:enforcing(强制)、permissive(宽松)、disabled(彻底禁用)

         永久配置文件:/etc/selinux/config 任何模式变成disabled模式,都要经历重启系统

         临时切换 :setenforce  1(强制)或 0(宽松),任何模式变成disabled模式,都要经历重启系统

         getenforce     #查看当前运行模式

破解root密码

         第一步:reboot —e—在linux16该行找到 ro 将其修改为 rw ,该行最后空格输入 rd.break —ctrl + x 启动,会看到switch_root#

        第二步: chroot    /sysroot      #切换到根分区环境

        第三步:如果SELinux不是强制模式, echo   123    |    passwd   --stdin    root #重置密码

        SELinux是强制模式,需要重设SELinux策略,  touch   /.autorelabel    #让SELinux失忆

        第四步: Exit #退出根分区文件系统——reboot -f

公钥登录( openssh软件包 、 配置文件 /etc/ssh/sshd_config 、 公私钥 ~/.ssh

      (1)ssh-keygen ,可以一路回车。

      (2)ssh-copy-id 用户名@ip 将公钥传送到远程主机 host 上面

    ~/.ssh 目录下,会新生成两个文件:id_rsa.pub 和 id_rsa。前者是你的公钥,后者是你的私钥。

        id_rsa(私钥):服务器上经过 rsa 算法生成的私钥。与公钥是一对的密钥对,用于连接其他服务器用。

       id_rsa.pub(公钥):服务器上经过 rsa 算法生成的公钥。与私钥是一对的密钥对,用于连接其他服务器用。

    (3)将主机 A 的 id_rsa.pub 内容 copy 到 B 主机的 authorized_keys 文件中,这样A主机就能不通过密码连接到B主机。

authorized_keys(授权文件):实现真正无密码连接,即为授权文件,

        known_hosts ——记录曾经链接过的机器

       方案一:rm -rf ~/.ssh/known_hosts    #删除以前远程过的已知主机

      方案二:ssh-keygen - R 连接地址        #重置连接地址

      服务名: systemctl  restart   sshd

连接不上:

       ip地址的改变—— /etc/sysconfig/network-scripts/ifcfg-eth0

       服务和端口—— ss -nutlp | grep 22 listen状态则正常,不正常则重启服务service sshd restart

       防火墙关闭——service firewalld status,永久关闭

       selinux关闭——getenforce

优化系统

(1)修改主机名、禁止主机被ping、添加普通用户用sudo授权、配置yum源、安装一些常用软件、清除不用的系统用户和组关闭selinux和防火墙、添加支持中文显示的字符

(2)修改密码策略及复杂度 vim /etc/shadow 最大最小天数、密码长度、到期前天数

在配置文件/etc/pam.d/system-auth(身份认证)中添加口令复杂度参数,password requisitepam_cracklib.so minlen=9 ucredit=-1(大写字母) lcredit=-1(小写字母) dcredit=-1(数字) ocredit=-1(特殊符号),修改后立即生效

登录失败及超时处理: 建议增加 /etc/pam.d/sshd 文件参数(在#%PAM-1.0的下一行进行配置否则不生效):auth required pam_tally2.so deny=3 unlock_time=300  root_unlock_time=300(登录失败3次锁定300秒,参数可据实际情况设置)

且在配置文件 etc/profile 文件中添加 export TMOUT=600 (600秒不做操作后断开连接,参数可根据实际情况而定)

(3)更改默认的远程连接SSH服务端口 vim /etc/ssh/sshd_config,找到#Port 22一段,修改后重启服务

(4)禁止root用户远程连接 vim /etc/sudoers,设立新账户拥有root一样的权限

vim /etc/passwd,root那一行启动脚本/bin/bash改成/usr/sbin/nologin 关闭root启动

sed -i 's/#PermitRootLogin yes/PermitRootLogin no/' /etc/ssh/sshd_config 关闭远程root连接

(5)优化内核参数,开启队列溢出用cookie处理、连接等待用于新的TCP连接、回收等待连接、修改系統默认的等待时间

系统中毒排查方法

(1)iftop 查看是否有外网连接的服务器流量剧增情况

(2)ss -nutlp 查看连接外网的 ip 和端口是否有问题

(3)last 查看最后一次登录的信息 who 谁登陆过

(4)top 找到CPU使用率高的进程,一般病毒文件命名会比较乱

(5)ps  查看是否有不明进程,找出病毒文件的位置

(6)rm -rf  删除病毒文件


2.网络安全:
掌握网络安全的技术,如防火墙配置、入侵检测系统 (IDS)/入侵防御系统(IPS)的使用、VPN 的配置等。
了解网络攻击的常见类型和防范方法,能够保障云计算环境的网络安全

 Nmap 扫描

系统扫描,扫描可以检测潜在的风险、寻找攻击目标、收集信息。通常扫描是攻击的前奏。

分为TCP扫描(半开、全开扫描)UDP扫描ICMP扫描

选项:-sF (FIN扫描)、-p (扫描指定端口)、-sT(TCP扫描)

     FIN 为 TCP会话结束标志,在FIN扫描中一个设置了FIN位的数据包被发送后,若响应RST数据包,则表示端口关闭,没有响应则表示开放。此类扫描同样不能准确判断windows系统上端口开发情况,适合探测Linux系统上的端口开放情况

在端口显示被filtered(过滤)的情况下,要想确定一个端口是否是开放的,通常可结合-sT和-sS、-sF等联合判断,如上图445端口在sT扫描的情况下,显示被过滤,在sF的扫描中显示open|filtered,则表明端口是开放的。

netstat 是一个命令行工具,可以提供有关网络连接的信息。

此命令中使用的选项具有以下含义:

  • -t-显示TCP端口。

  • -u -显示UDP端口。

  • -n -显示数字地址而不是解析主机。

  • -l -仅显示监听端口。

  • -p -显示侦听器进程的PID和名称。仅当你以root用户或 sudo 用户身份运行命令时,才会显示此信息

ss是新的netstat,它缺少netstat的某些功能,速度稍快

本文标签: 命令过程Linux