菜鸡运维成长记-第一周

 


计算机的发展史:

第一代:真空管(电子管)计算机

代表机型:世界上第一台通用计算机“ENIAC”于1946年2月14日在美国宾夕法尼亚大学诞生。发明人是美国人莫克利(JohnW.Mauchly)和艾克特(J.>代表机型:世界上第一台通用计算机“ENIAC”于1946年2月14日在美国宾夕法尼亚大学诞生。发明人是美国人莫克利(JohnW.Mauchly)和艾克特(J. Presper Eckert) ENIAC以电子管作为元器件,所以又被称为电子管计算机,是计算机的第一代。电子管计算机由于使用的电子管体积很大,耗电量大,易发热,因而工作的时间不能太长。

第二代:晶体管计算机

代表机型:1955年,贝尔实验室研制出世界上第一台全晶体管计算机TRADIC,它装有800只晶体管,只有100瓦功率,占地也仅有3立方英尺。 TRADIC相比上一代真空管计算机大幅降低了功耗与体积。与电子管计算机相比,晶体管计算机包含了操作系统,它能够为输入输出、内存管理、存储和其他的资源管理活动提供标准化的程序。

第三代:集成电路计算机

代表机型:1964年4月7日,IBM推出了划时代的System/360大型电脑,这一系列是世界上首个指令集可兼容计算机。从前,计算机厂商要针对每种主机量身定做操作系统,System/360的问世则让单一操作系统适用于整系列的计算机。

第四代:超大规模集成电路计算机

代表机型:美国ILLIAC-IV计算机,是第一台全面使用大规模集成电路作为逻辑元件和存储器的计算机,它的出现标志着计算机的发展已到了第四代。

第五代:智能计算机

第五代计算机是把信息采集、存储、处理、通信同人工智能结合在一起的智能计算机系统。它能进行数值计算或处理一般的信息,主要能面向知识处理,具有形式化推理、联想、学习和解释的能力,能够帮助人们进行判断、决策、开拓未知领域和获得新的知识。人-机之间可以直接通过自然语言(声音、文字)或图形图象交换信息。

服务器硬件相关知识:

服务器其实就是一台配置更高的计算机,它的内部结构也和普通的计算机大同小异。

电源

电源相当于人体的心脏,需保障电力供应,如果要买服务器,应选择质量好一点的电源。另外需要注意的是,在实际使用场景中,如果只是配置一个服务器负责核心业务,那么最好使用双电源,并且分别接不同的机房线路;如果服务器是集群中的一台(若干机器做一件事),则可以不用双电源。除此之外,运维工作中就不用再过多考虑电源的其他问题了。

CPU处理器

CPU 处理器相当于人体的大脑,负责整个服务器的运算和控制,是影响其性能效率的最核心部件。

精简指令集的 CPU:设计代表有 SUN 公司的 SPARC 系列和 ARM 系列等,这类 CPU 的设计特点是指令集精简,每个指令执行的时间很短,操作很简单、效率较高。

复杂指令集的 CPU:设计代表有大家熟知的 Intel 至强系列(XEON)和 AMD 系列(应用不多)等,这类 CPU 的设计特点是指令数量多,指令集复杂,且执行的时间较长,但能处理的事务更多、更丰富。

内存(RAM)

内存是 CPU 和硬盘之间的缓冲设备,是临时存储器(用于存放数据),这就意味着,如果突然断电,那么位于内存中的数据很可能会丢失。

程序运行的时候,一般会被调度到内存中执行,服务器关闭或程序关闭之后,数据将自动从内存中释放掉。

硬盘(磁盘)

硬盘就是永久存放数据的存储器,如今常用的硬盘都是 3.5 英寸的,且生产的单块硬盘的容量越来越大,体积却越来越小,速度也越来越快,其中常见的硬盘有300GB、600GB、1TB、3TB、4TB等规格。

注意,对于工业级(企业级)硬盘计算,以 1000 为单位进行换算,即1TB=1000GB。

根据实际场景的需要,硬盘的接口有 IDE、SCSI、SAS、SATA 等几类(其中 IDE、SCSI 已退出历史舞台),硬盘的类型也分为机械硬盘和SSD(固态硬盘)两种。

从性能和价格的角度,可以对现有几类硬盘进行排序(从高到低),依次是 SAS接口固态硬盘 > SATA固态硬盘 > SAS机械硬盘 > SATA机械硬盘。

Raid卡(阵列卡)

Raid 称为磁盘冗余阵列,其功能是,当企业的网站(业务)数据量很大,单块盘装不下的时候,若购买多块硬盘存放数据,就需要利用 Raid 技术将所有硬盘整合成一个大硬盘,然后才能在这个大硬盘上分区(划分隔断、虚拟硬盘)存放数据。

但是,硬盘多了势必会有损坏,可数据是不能丢的,针对这种情况,Raid 还具备一个功能,就是多块硬盘放置在一起可以配置冗余(备份),由此可以确保即使若干硬盘有损坏,数据也不会丢失。

远程管理卡

远程管理卡是服务器特有的远程管理部件,在家用电脑及笔记本电脑上是不存在的。它的作用是通过网络远程(异地)开关服务器,并可以查看服务器开关的过程等信息。

主板

主板实际上就是一块电路板,相当于人体的骨架,CPU、内存、硬盘、Raid 卡等所有硬件设备最终都要连接在主板上,才能正常工作。

VMware下安装Rocky和Ubuntu:

安装前网络设置:

安装镜像下载地址:

Rocky镜像下载:https://dl.rockylinux.org/vault/rocky/

Ubuntu镜像下载:https://cn.ubuntu.com/download

安装时WM中操作:

Rocky选择:

Ubuntu选择:

选择完继续下一步:

安装Rocky,选择Rocky的镜像并启动:

磁盘分区:

开启网络,设置主机名:

设置时区时间:

设置管理员密码:

等待安装:

安装Ubuntu,选择Ubuntu的镜像并启动:

等待安装完用xhell链接:

ubuntu设置root登陆:

设置登陆密码:sudo passwd root

修改配置文件:sudo vim /etc/ssh/sshd_config

找到PermitRootLogin将PermitRootLogin后面的prohibit-password改为yes,保存配置文件

重启ssh服务使配置文件生效:sudo service ssh restart

Linux常用基本命令用法:

查看硬件信息

1.查看cpu

lscpu

2.查看内存

free

3.查看硬盘和分区情况

lsblk

查看系统版本信息

1.查看系统架构

arch

2.查看内核版本

uname -r

3.查看操作系统发行版本

cat /etc/os-release

日期和时间

1.查看系统时间

date "+%F %T"

2.查看硬件时间

hwclock

3.设置时区

timedatectl set-timezone Asia/Shanghai

4.查看日历

cal 11 2023

关机和重启

shutdown 程序会广播己登录的用户,被看作是安全的关机命令是一个计划关机任务,可撤销.

shutdown +10 10分钟后关机

shutdown -r now现在重启

shutdown -h now现在关机

shutdown -c 取消关机计划

用户登陆信息查看命令

whoami: 显示当前登录有效用户

who: 系统当前所有的登录会话

w: 系统当前所有的登录会话及所做的操作

输出信息echo

echo [-neE] [字符串]

-n 输出完成后不换行

-e 转义特定字符串

-E 不转义,原样输出,默认选项

比较''(单引号),""(双引号),``(反单引号)三者的区别

单引号:命令变量都不识别

[root@ubuntu22 ~]# echo 'echo $HOSTNAME'

echo $HOSTNAME

双引号:识别变量不识别命令

[root@ubuntu22 ~]# echo "echo $HOSTNAME"

echo ubuntu22

反单引号:命令变量都识别

[root@ubuntu22 ~]# echo `echo $HOSTNAME`

ubuntu22

bash的快捷键

Ctrl + l 清屏,相当于clear命令

Ctrl + a 光标移到命令行首,相当于Home

Ctrl + e 光标移到命令行尾,相当于End

Ctrl + u 从光标处删除至命令行首

Ctrl + k 从光标处删除至命令行尾

Alt + r 删除当前整行

Ctrl + w 从光标处向左删除至单词首

Alt + d 从光标处向右删除至单词尾

Ctrl + y 粘贴至光标后

Linux文件系统相关:

Linux下文件类型:

- d l b c p s
普通文件 目录文件 符号链接文件 块设备文件 字符设备文件 管道文件 套接字文件

文件和目录操作相关:

绝对路径:
1. 以正斜杠/ 即根目录开始
2. 描述完整的文件的位置路径
3. 可用于任何想指定一个文件名的时候

相对路径:
1. 不以斜线开始,而是以当前所在的位置开始
2. 一般情况下,是指相对于当前工作目录的路径,特殊场景下,是相对于某目录的位置
3. 可以作为一个简短的形式指定一个文件名

1.显示当前目录的绝对路径pwd

当前目录 $PWD

上一次目录 $OLDPWD

显示真实物理跊径 pwd -P

显示链接路径(默认) pwd -L

2.更改目录cd

切换至链接目录,默认选项 cd -P

切换至父目录 cd ..

切换到上一个目录 cd -

切换至当前用户家目录 cd|cd ~

切换至指定用户家目录 cd ~username

3.列出目录内容ls

显示额外的信息 -l

按从大到小排序 -S

按mtime排序,时间新的靠前 -t

配合-t选项,显示并按atime从新到旧排序 -u

4.查看文件状态stat

显示相关的文件系统信息,所谓文件系统,对应的就是windows下面的硬盘分区>显示相关的文件系统信息,所谓文件系统,对应的就是windows下面的硬盘分区 -f|--file-system

atime access time 访问时间,即读取文件内容时间,此字段值会延时更新,以降低IO负载

mtime modify time 修改内容的时间

ctime change time 元数据发生变化的时间

5.确定文件内容file

使用file命令检查文件的类型,然后确定适当的打开命令或应用程序使用

点击查看代码
[mmy@ubuntu22 mmy]$ file list.zip 
list.zip: Zip archive data, at least v1.0 to extract, compression method=store

6.文件通配符

{}会先展开命令在执行,[]会先匹配在交给ls

匹配零个或多个字符,但不匹配 "." 开头的文件,即隐藏文件 *

匹配任何单个字符,一个汉字也算一个字符 ?

匹配数字范围 [0-9]

一个小写字母 [a-z]

一个大写字母 [A-Z]

匹配列表中的任何的一个字符 [wang]

匹配列表中的所有字符以外的字符 [^wang]

匹配列表中的所有字符以外的字符 [^a-z]

7.创建空文件和刷新时间touch

touch命令可以用来创建空文件或刷新文件的时间

改变atime,ctime -a

改变mtime,ctime -m

指定修改时间和访问时间,而不是采用当前系统时间 -d|--date

如果文件不存在,不创建 -c|--no-create

8.复制文件和目录cp

利用 cp(copy)命令可以实现文件或目录的复制

推荐执行cp命令时 加 -ib选项

如果目标文件己存在,则提示是否覆盖 -i|--iteractive

先备份再覆盖 -b

目标存在,覆盖前先备份加数字后缀,形式为filename.~#~ ,可以保留多个版本 --backup=numbered

目标是否存在?不存在存在且为文件存在且为目录
一个文件新建DEST,并将SRC中内容填充至DEST将SRC中的内容覆盖至DEST中注意数据丢失风险!!建议用-i选项在DEST下新建与源文件同名的文件并将SRC中的内容填充至新文件中
多个文件提示错误提示错误在DEST下新建与源文件同名的文件,并将源文件内容复制到新文件中
目录须使用-r选项新建指定DEST同名目录,复制SRC目录中所有文件至DEST下提示错误在DEST下新建与原目录同名的目录,并将原文件内容复制到新目录中

9.移动和重命名文件mv

mv 命令可以实现文件或目录的移动和改名

同一分区移动数据,速度很快,数据位置没有变化

不同分区移动数据,速度相对慢,数据位置发生了变化

如果目标存在,则先备份 -b

如果目标文件己存在,则提示是否覆盖 -i

10.目录操作

10.1显示目录树tree

显示所有,包括隐藏目录和文件 -a

只显示目录 -d

在执行文件,目录,Socket,符号链接,管道文件,各自加上"*","/","=","@","|"号 -F

只显示n层目录 -L n

10.2创建目录mkdir

如果要创建的目录父级目录不存在,则一起创建,是递归的意思 -p|--parents

10.3删除空目录rmdir

rmdir只能删除空目录,如果想删除非空目录,可以使用rm -r 命令,递归删除目录树

文件元数据和节点表结构:

inode:

在Linux系统中,一切皆文件.

每个文件,又分为文件元数据和具体内容两部分.

一个文件元数据和其他具体内容数据,在磁盘分区上是分开存放的.

存储文件元数据的区域叫做inode,中文:"索引节点"

存储具体内容数据的区域叫block,中文:数据块

每个文件都有一个inode和n(n>=1)个block数据块

磁盘在格式化时,系统会自动将磁盘分为两个区域

inode区(inode table),存放文件的inode

数据区,分为多个block(数据块),用来存放文件具体的内容

一个磁盘分区上有多少个inode和多少个block,是有系统自行决定的,跟文件系统,磁盘分区大小,数据块大小有关

一个磁盘分区,能存放多少个文件,由文件大小,磁盘分区大小,inode数量决定

inode编号可重复使用,当删除一个文件之后,其inode编号会被收回,供下次新文件使用

查看磁盘分区inode编号使用情况 df

-i查看磁盘分区使用情况 df -lh

链接:

硬链接:

硬链接的作用是允许一个文件拥有多个有效的路径名,新增一个文件,指向某个文件的inode,这样,这两个文件就互为硬链接,也就是多个文件名,都是指向同一个inode,这是硬链接的本质。

硬链接特性:

1. 创建硬链接会在对应的目录中增加额外的记录项以引用文件

2. 对应于同一文件系统上一个物理文件

3. 每个文件引用相同的inode号

4. 创建时链接数递增

5. 删除文件时:rm命令递减计数的链接,文件要存在,至少有一个链接数,当链接数为零时,该文件被删除

6. 不能跨越驱动器或分区

7. 不支持对目录创建硬链接

软链接:

类似于windows 中的快捷方式,软链接是建立一个独立的文件,这个文件的指向的是目标的文件名。

软链接特性:

1. 一个符号链接的内容是它引用文件的名称

2. 可以对目录创建软链接

3. 可以跨分区的文件实现

4. 指向的是另一个文件的路径;其大小为指向的路径字符串的长度;不增加或减少目标文件inode的引用计数

5. 软链接如果使用相对路径,是相对于源文件的路径,而非相对于当前目录

6. 删除软链接本身,不会删除源目录内容

7. 删除源目录的文件,不会删除链接文件

硬链接与软链接区别:

属性硬链接软连接
本质同一个文件不是同一个文件
跨设备不支持支持
inode相同不相同
连接数创建新硬链接,链接数会增加,删除会减少创建或删除,链接数都不会变
文件夹不支持支持
相对路径原始文件相对路径相对于当前目录原始文件相对路径相对于链接文件的相对路径
删源文件连接数减1,但链接文件的访问不受影响链接文件将无法访问
文件类型和源文件相同链接文件,和源文件无关

IO 重定向和管道:

标准输入输出:

Linux系统中有三个最基本的IO设备

1. 标准输入设备(stdin):对应终端键盘

2. 标准输出设备(stdout):对应终端的显示器

3. 标准错误输出设备(stderr):对应终端的显示器

在Linux系统中,一切皆文件,所以,这三个设备也是以文件的形式存在于系统中;

程序从标准输入文件中获取数据,再将运行结果和错误信息输出到标准输出设备和标准错误输出设备;

在虚拟终端中,标准输入输出设备都是当前的终端窗口

点击查看代码
[root@ubuntu22 mmy]# ll ll /dev/std*
lrwxrwxrwx 1 root root 15 Nov 18 14:47 /dev/stderr -> /proc/self/fd/2
lrwxrwxrwx 1 root root 15 Nov 18 14:47 /dev/stdin -> /proc/self/fd/0
lrwxrwxrwx 1 root root 15 Nov 18 14:47 /dev/stdout -> /proc/self/fd/1
[root@ubuntu2204 ~]# ll /proc/self/fd/
total 0
lrwx------ 1 root root 64 Jul 12 17:47 0 -> /dev/pts/1
lrwx------ 1 root root 64 Jul 12 17:47 1 -> /dev/pts/1
lrwx------ 1 root root 64 Jul 12 17:47 2 -> /dev/pts/1
[root@ubuntu2204 ~]# tty
/dev/pts/0`

IO重定向:

I/O重定向:将默认的输入,输出或错误对应的设备改变,指向新的目标

把STDOUT重定向到文件 > 等价于 1>

把STDERR重定向到文件 2>

把标准输出和错误都重定向 &>

追加操作符,在原有文件的基础上追加内容

追加标准输出重定向至文件 >> 等价于1>>

追加标准错误重定向至文件 2>>

使用 "<<终止词" 命令从键盘把多行重导向给STDIN,直到终止词位置之前的所有文本都发送给STDIN,有时被称为就地文本(here documents),其中终止词可以是任何一个或多个符号,比如:!,@,$,EOF(End Of File),magedu等,其中EOF比较常用

终止词不固定 开始与结束统一即可

点击查看代码
[root@ubuntu22 mmy]# cat <<EOF >123.txt
> 床前明月光
> 疑是地上霜
> 举头望明月
> 低头思故乡
> EOF

tr:

用于转换字符、删除字符和压缩重复的字符。它从标准输入读取数据并将结果输出到标准输出

点击查看代码
用SET2替换SET1中没有包含的字符  -c|-C|--complement
[root@ubuntu22 mmy]# tr -c 2 3 <./issue> /dev/pts/0
33333332233333333333333333
删除SET1中所有的字符,不转换    -d|--delete
[root@ubuntu22 mmy]# tr -d 2  <./issue> /dev/pts/0
Ubuntu.04.3 LTS \n \l
压缩SET1中重复的字符,即删陊连续重复的字符    -s|--squeeze-repeats
[root@ubuntu22 mmy]# tr -s '2' <./issue> /dev/pts/0
Ubuntu 2.04.3 LTS \n \l
将SET1用SET2替换,SET2中不够的,就不处理    -t|--truncate-set1
[root@ubuntu22 mmy]# tr -t 'u' 'a' <./issue> /dev/pts/0
Ubanta 22.0.3 LTS \n \l

管道:

在shell>在shell 中,可以将两个或多个命令(程序|进程)连接起来,将前一个命令的输出作为后一个命令的输入,就像拿水管将两个命令连起来;

使用管道,要求前一个命令必须支持标准输出,后一个命令必须支持标准输入

点击查看代码
[root@ubuntu22 mmy]# echo 23456|tr -t 2 8
83456

注意:STDERR默认不能通过管道转发,可利用2>&1 或 |& 实现,格式如下

点击查看代码
[root@ubuntu22 mmy]# echo22 23456|&tr -t 2 8
echo88: command not found
[root@ubuntu22 mmy]# echo22 23456 2>&1|tr -t 2 8
echo88: command not found

tee:

将标准输入复制到每个指定文件,并显示到标准输出

点击查看代码
输出
[root@ubuntu22 mmy]# echo hello |tee info.log
hello
[root@ubuntu22 mmy]# cat info.log
hello
追加
[root@ubuntu22 mmy]# echo hello |tee -a info.log
hello
[root@ubuntu22 mmy]# cat info.og
hello
hello

Linux安全模型:

3A认证:

Authentication:认证,验证用户身份

Authorization:授权,不同的用户设置不同权限

Accouting:审计 ,事后行为

登陆日志:

rocky: cat /var/log/secure

ubuntu:tail /var/log/auth.log

用户:

Linux系统是多用户系统,可以同时存在多个用户,每个用户之间都是互相隔离的。

在Linux系统中,每个用户是通过User Id (UID)来唯一标识的.

在Linux中,root以下,都是普能用户,其用户id为1-60000

用户类型用户名用户ID(uid)作用
超级管理员root0超级管理员
普通用户-系统用户自定义Centos前1-499
Centos7后1-999
给后台程序使用
普通用户-登陆用户自定义Centos前500起
Centos7后1000起
给用户进行交互式登陆

用户组:

Linux中可以将一个或多个用户加入用户组中,组就是包含0个或多个用户的集合,用户组是通过GroupID(GID) 来唯一标识的。

组类型组名组ID(gid)作用
超级管理员组root0超级管理员使用
普通用户组-系统用户组自定义Centos前1-499
Centos7后1-999
给后台程序使用
普通用户组-普通组自定义Centos前500起
Centos7后1000起
给登陆用户使用

用户和用户组的关系:

1. 一个用户至少有一个组,也可以有多个组;

2.一个组至少有0个用户,也可以有多个用户;

3.用户的主要组(primary group):又称私有组,一个用户必须属于且只有一个主组,创建用户时,默认会创建与其同名的组作为主组;

4.用户的附加组(supplementary group):又称辅助组,一个用户可以属于0个或多个附加组;

5.使用组,可以对用户进行批量管理,比如对一个组授权,则该组下所有的用户能能继承这个组的权限;

安全上下文:

什么是程序?

一个程序或一个命令,本质上也是一个可执行的二进制文件或一个可执行的脚本文件;

在服务器上有很多文件,只有那些特定的,可以被执行的二进制文件,才能被称为程序;

什么是进程?

运行中的程序,就是进程

前提:进程有属主和属组;文件有属主和属组

任何一个可执行程序文件能不能启动为进程,取决发起者对程序文件是否拥有执行权限

启动为进程之后,其进程的属主为发起者,进程的属组为发起者所属的组

进程访问文件时的权限,取决于进程的发起者

程序与进程,用户之间的关系?

只有可以被执行的文件,才能叫作程序;

对于同一个程序,也不是所有用户都可以运行的,这要取决于当前用户对该程序有没有可执行权限

进程的访问资源

一个进程能不能访问某些资源,是由进程发起者决定的(跟进程本身的程序文件无关),比如某进程要读写某个文件,则要看该进程发起者有没有权限读取该文件;

Vim常见操作:

如果该文件存在,文件被打开并显示内容

如果该文件不存在,当编辑后第一次存盘时创建它

如果后面打开的是一个目录,则会列出目录中所有内容,可以用方向键进行选择

三种模式:

命令或普通(Normal)模式:默认模式,可以实现移动光标,剪切/粘贴文本

插入(Insert)或编辑模式:用于修改文本

扩展命令(extended command )或命令(末)行模式:保存,退出等

三种模式切换:

命令模式→插入模式i|I|a|A|o|O
命令模式→扩展命令模式直接冒号 :
插入模式→命令模式ESC键
插入模式→扩展命令模式先ESC,再:
扩展命令模式→命令模式ESC或者回车
扩展命令模式→插入模式先ESC或退格,在i|I|a|A|o|O

插入模式相关:

i:insert, 在光标所在处输入

I:在当前光标所在行的行首输入

a:append, 在光标所在处后面输入

A:在当前光标所在行的行尾输入

o:在当前光标所在行的下方打开一个新行

O:在当前光标所在行的上方打开一个新行

扩展命令模式相关:

:w:写(存)磁盘文件

:wq等价于:x:写入并退出

:X:加密

:q!:不保存退出

:f filename:读文件内容到当前文本

:w filename:将当前文件内容写入到另一个文件

:r!command:读入命令的输出

:上下方向键:查看命令历史记录

posted @   努力的搬砖人  阅读(58)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
点击右上角即可分享
微信分享提示