零、计算机知识
1.缓冲和缓存
-
1.buffer(缓冲):是为了提高 内存和硬盘或其他I/0设备 之间的数据交换的速度而设计的.
- 当创建buffer对象时, 会先创建一个缓冲区数组. 然后当我们读一个文件时, 先从硬盘中读到缓冲区, 待缓冲区 满后 再进行传送. 这样会大大减少读写次数,这样就可以节省很多时间, 效率会更高.
-
2.cache(缓存):是为了提高 cpu和内存 之间的数据交换速度而设计.
- 高速缓冲存储器, 读写速度很快,几乎与CPU一样。由于CPU的运算速度太快,内存的数据存取速度无法跟上CPU的速度,所以在cpu与内存间设置了cache为cpu的数据快取区。
- 当计算机执行程序时,数据与地址管理部件会 预测可能要用到的数据和指令, 并将这些数据和指令预先从内存中读出送到Cache.
- 一旦需要时,先检查Cache,若有就从Cache中读取,若无再访问内存,现在的CPU还有一级cache,二级cache。
- 简单来说,Cache就是用来解决CPU与内存之间速度不匹配的问题,避免内存与辅助内存频繁存取数据,这样就提高了系统的执行效率. 设置缓存的理论基础, 是程序访问的局部性原理. 缓存的功能均由硬件实现,对程序员是透明的.
2.root用户密码忘记
-
- 重启服务器系统,按e进入编辑模式
-
- 移动光标到第二个选项,按e进入编辑界面
-
- 在末尾追加参数1,回车,再按下b键启动操作系统,单用户模式登录
-
- 进入命令行后,使用passwd命令更改密码
一、Linux
1. Linux概述
系统 | 共同点 | 区别 |
---|---|---|
Linux | 操作系统 | 免费、稳定 |
Windows | 操作系统 | 收费、有漏洞 |
2. Linux发展
组织 | 人 | 人 | 人 |
---|---|---|---|
Unix贝尔实验室 | 谭宁邦 | 斯托曼 | 托瓦兹 |
- | Mint(mini unix) | 组织:自由软件基金会FSF | Linux内核 |
- | - | 规则、协议:GPL(公共通用许可) | - |
- | - | 要求:1.所有软件开源,可以随意修改 2.改完之后的内容也要开源 | - |
- | - | 项目:GUN项目,开发一个系统 | - |
3. Linux组成
(外围应用程序 **软件**
(命令解释器 shell **bash命令解释器**
(系统核心 kernel lib API **Linux内核**
(计算机硬件)))
4. Linux发行版本
- 发行版本:内核+命令解释器+不同应用程序
主流Linux系统 | 子系统 |
---|---|
Debian系列 | Debian(稳定)、Ubuntu(桌面美观,开发使用) |
红帽系列 | Redhat Enterprise Linux (RHEL)、CentOS(最常用的系统) |
国产系列 | 中标麒麟国产Linux(有桌面、有服务器)、红旗Linux |
其他 | Suse |
5. Linux版本选型
- 推荐选择LTS版本或者稳定版
系统版本 | 型号 |
---|---|
Ubuntu | LTS 22.04 |
CentOS | 无LTS。CentOS7.x 7.9 |
6. 命令行格式
用户名、主机名、当前目录
7. 命令格式
rm -f /tmp/oldbot.txt
命令、选项、参数
格式 | 说明 |
---|---|
命令 | Linux下通过命令控制整个系统 |
选项 | option,同一个命令的不同功能 |
参数 | 命令处理的目标 |
8. 开机流程
1)开机流程图
2)开机流程
第一步 :加载BIOS
第二步 :读取MBR
第三步 : Boot Loader
第四步 : 加载内核
第五步 : 用户层init依据inittab文件来设定运行等级
第六步 :init进程执行rc.sysinit
第七步 :启动内核
第八步 :执行不同运行级别的脚本程序
第九步 :执行/etc/rc.d/rc.local
第十步 :执行/bin/login程序,进入登录状态
- POST开机自检
- 加载BIOS(基本输入输出系统),检查计算机是否满足运行的基本要求。(主板、CPU、内存、磁盘、网卡、声卡、显卡、鼠标、键盘、显示器等
- 读取MBR
- 硬盘上第0磁道第一个扇区被称为MBR,也就是Master Boot Record,即主引导记录,它的大小是512字节,可里面却存放了预启动信息、分区表信息。
- 可分为两部分:第一部分为引导(PRE-BOOT)区,占了 446个字节;第二部分为分区表(PARTITION PABLE),共有66个字节,记录硬盘的分区信息。
- 预引导区的作用之一是找到标记为活动(ACTIVE)的分区,并将活动分区的引导区读入内存。
- 系统找到BIOS所指定的硬盘的MBR后,就会将其复制到0×7c00地址所在的物理内存中。其实被复制到物理内存的内容就是Boot Loader,而具体到你的电脑,那就是lilo或者grub了。
- 加载Grub菜单(重操作系统引导管理器)
- 在MBR程序中找到其前446字节的Boot Loader。Boot Loader即为在操作系统内核运行前运行的一段小程序。通过这段小程序,我们可以初始化硬件设备、建立内存空间的眏射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核做准备。
- Boot Loader的种类很多,其中有Grub、Lilo和spfdisk,常见的是Loader。
- 系统可以读取内存中的grub配置信息(一般为menu.lst或grub.lst),并依照此配置信息来启动不同的操作系统。
- 加载内核
- 根据grub设定的内核映像所在路径,系统读取内存映像,并进行解压缩操作。此时,屏幕一般会输出“Uncompressing Linux”的提示。当解压缩内核完成后,屏幕输出“OK, booting the kernel”。
- 系统将解压后的内核放置在内存之中,并调用start_kernel()函数来启动一系列的初始化函数并初始化各种设备,完成Linux核心环境的建立。至此,Linux内核已经建立起来了,基于Linux的程序应该可以正常运行了。
- 从全局启动历程start_kernel开始,
- 内核完成任务主要有:硬件的检测;硬件驱动的初始化,挂载根文件系统(根切换);启动init进程。
- 内核在系统启动后的功能:进程的调度,内存管理,文件系统的管理,硬件驱动,管理网络等
- 运行init进程
- 内核被加载后,第一个运行的程序便是/sbin/init。给文件会读取/etc/inittab文,并依据该文件进行初始化。
- 读取/etc/inittab 设置运行级别
- 其中 /etc/inittab文件最主要的作用就是设定Linux的运行级别,其设定形式为:“🆔5:initdefault:” ,这就说明Linux需要运行在等级5上。
- 0:-halt 关机
- 1:-single user mode单用户模式
- 2:-Multi-user,without NFS无网络支持的多用户模式
- 3:-Full multi-user mode:有网络支持的多用户模式
- 4:-unused保留,未使用
- 5:-X11有网络支持有X-Window支持的多用户模式
- 6:-reboot:重新引导系统——重启。
- 运行初始化脚本rc.sysinit
- 在设定了运行级别后,Linux系统执行的第一个用户层文件就是/etc/rc.d/rc.sysinit脚本程序,它做的工作很多,包括设定网络配置(/etc/sysconfig/network)、启动swap分区、设定/proc等等。
- 执行不同运行级别的脚本程序
- 根据运行级别的不同,系统会运行rc0.d到rc6.d中的相应脚本程序,来完成相应的初始化工作和启动相应的服务。
- 加载/etc/rc.d/rc.local自启动程序
- 该文件为一切初始化工作后,Linux留给用户进行个性化设置的地方。用户可以把自己想设置和启动的东西放在这里。
- 执行/bin/login程序,进入登录状态
9. shell的类型
二、搭建虚拟机
1. 虚拟机故障
- 故障描述:Win10、11蓝屏
- 原因:
-
1.需要开启虚拟化支持 vt-x
-
2.hyper-v冲突,关闭
-
2. 系统版本、内核版本、主机名
3. ip地址
ip类别 | 说明 | 来源 |
---|---|---|
局域网ip | 只能在某个范围使用,教师、办公室 | 网络设备分配 |
公网ip | 可以在任何有网络的地方使用,数量有限ipv4、ipv6 | 购买获得 |
4. 远程连接排错
-
检查连通性
ping ip地址或域名
-
检查防火墙
防火墙,安全设备,安全拦截
-
检查是否提供服务
检查端口是否开放
telnet ip地址 端口号
三、Linux目录
1. Linux目录介绍
2. 查询帮助
查询方式 | 说明 |
---|---|
命令网站 | cmd.oldboyedu.com |
man | man 命令 (查询帮助) |
–help | 命令 --help (查询精简的帮助) |
info | info 命令 |
help | help 命令 |
3. Linux快捷键
类别 | 子类 | 快捷键 |
---|---|---|
移动光标快捷键 | 光标移动到行首 | ctrl + a |
- | 光标移动到行尾 | ctrl + e |
删除、剪切类快捷键 | 把光标所在位置到行首的内容删除、剪切 <— | ctrl + u |
- | 把光标所在位置到行尾的内容删除、剪切 —> | ctrl + k |
功能性 | 清屏 | ctrl + l |
- | 取消当前命令 | ctrl + c |
四、Linux核心命令
0. 常见符号
-
${}
-
引用变量
- b=${a}
-
截取字符串
- ${parameter:offset}
-
切片
- ${parameter:offset:length}
-
获取字符串长度
- ${#word}
-
字符串处理
-
变量赋值判断
-
-
$()等价于``
- 解析命令
- echo $(date +%Y%m%d)
- 解析命令
-
$[]等价于$(())
- 数学运算
- echo $[1+2]
- 数学运算
-
[]判断表达式
- [ $a > 5 ]
-
[[]]
- [[]]是[]的增强版,其返回值也是0或者非0,并且,在[[ ]]中使用> 、< 等符号不需要转义
- [[ $a > 5 ]]
-
(())
-
(())除了结合 进行数学运算之外,还可以用于 f o r 或 w h i l e 循环命令中控制循环,类似于 c 语言,当改变变量的值时,且不需要使用 进行数学运算之外,还可以用于for或while循环命令中控制循环,类似于c语言,当改变变量的值时,且不需要使用 进行数学运算之外,还可以用于for或while循环命令中控制循环,类似于c语言,当改变变量的值时,且不需要使用
$# 是传给脚本的参数个数 $0 是脚本本身的名字 $1 是传递给该shell脚本的第一个参数 $2 是传递给该shell的脚本的第二个参数 $@ 是传给脚本的所有参数的列表,代表目标文件(target) $* 是以一个单字符串显示所有向脚本传递的参数,与位置变量不同,参数可超过9个 $$ 是脚本运行的当前进程ID号 $? 是显示最后命令的退出状态,0表示没有错误,其他表示有错误 @ 这个符串通常用在“规则”行中,表示不显示命令本身,而只显示它的结果 $^ 代表所有的依赖文件(components)
-
1. 关机重启
- shutdown(关机重启)
- -r 重启
- -h 关机
- halt(关机)
- poweroff(关机关电)
- init(切换运行级别)
- init 0 关机
- init 6 重启
2. 基础命令
- cd (进入某个目录)
- cd /tmp/
- ls (列表显示目录内容)
- ls /etc
- ls -l /etc/ == ll /etc/
- -l 显示详细信息(时间、大小、所有这)
- -t 按照修改时间排序
- -c 文件属性发生改变的时间
- -a 文件内容被访问的时间
- -r 逆序排序
- -a 显示所有文件
- -d 只显示目录
- -i 显示inode
- -h 人性化显示
- -p 区分文件或目录
- tree(以树形结构显示目录或文件)
- -L 数字 指定层数
- -d 只显示目录
- pwd (显示自己所在目录)
- pwd
- mkdir (创建目录)
- mkdir -p /a/b/c (-p 递归创建目录)
- mkdir dira dirb dirc
- mkdir data{1…3}
- touch (创建文件)
- touch oldbot.txt b.txt
- touch a b c d e f
- touch data{1…3}/oldboy{1…3}(必须先有目录)
- mv (移动)
- 改名: mv a.txt b.txt
- 移动: mv /oldboy/oldboy.txt /tmp/
- cp (复制,拷贝)
- cp /etc/hostname /oldboy/
- cp -a /etc/ /oldboy (-a 复制所有)
- -r 递归复制
- -p 保持属性不变
- vim (编辑于修改)
- runlevel(查看运行级别)
- init 数字 (切换运行级别)
- hostnamectl set-hostname 名字 (修改主机名)
- rm (删除)
- rm /oldboy/oldboy.txt
- -f 强制删除文件
- -r 递归删除,删除目录
- 不要删除文件,替换rm命令
- echo (输出到屏幕)
- echo oldboy lidao996
- echo oldboy lidao996 > /oldboy/oldboy.txt
- echo {0…10}
- echo {a…z}
- echo {01…10}
- echo {01…100} (自动保持三位,前面补0)
- echo oldbot{01…10}
- -e 支持转移字符 echo -e “oldboy\t\toldboy”
- cat (显示文件内容)
- cat /etc/password
- -n 显示行号
- tr (内容替换)
- tr ‘string1’ ‘string2’ < filename
- ps(查看当前系统进程状态)
- a 显示现行终端机下的所有程序,包括其他用户的程序
- u 以用户为主的格式来显示程序状况
- x 显示所有程序,不以终端机来区分。
- alias(查看系统当前设置的别名列表、设置指令的别名)
- -p打印已经设置的命令别名
- alias
- alias df=‘df -h’
- unalias(设置指令的别名)
- -a删除全部已定义的别名
- unalias df
- file 查看文件属性
- file d.txt
- ln(创建链接)
- 默认创建硬链接
- -s 创建软链接
- ln -s /usr/mengqc/mub1(源) /usr/liu/abc(目标)
- stat (查看文件属性)
- 修改时间 modify
- 修改属性时间 change
- 内容访问时间 access
- cut (按列切割)
- -d 指定分隔符(-d “.”,以.为分隔符)
- -f 指定列 (-f1,3,取第一列第三列;f1-3,1到3列,通常与-d配合使用)
- -c 取指定列的值(-c1-6,取第1到6列的字符,按字符分列)
- watch (监控)
- -n 间隔
- -d 高亮显示变化区域
- watch -n 1 “grep ‘model name’ /proc/cpuinfo | sort | uniq -c”
- rename
注意:
> 重定向
>>追加重定向
3. 常见命令
expr
五、目录结构深入(文件了解)
1. /etc/
/etc/文件 | 说明 | 企业应用 |
---|---|---|
/etc/hostname | 主机名配置文件 | 每个Linux主机配置主机名,根据主机名区别不同功能 |
/etc/hosts | 主机名和ip的对应关系(本地域名解析文件) | 在网站中做访问使用 |
/etc/resolv.conf | Linux系统 DNS客户端的配置文件 | DNS |
/etc/sysconfig/network-scripts/ifcfg-ens33 | 配置网卡文件 | 物理机要改,云服务器自动 |
/etc/rc.local | 开机自启动的文件 | 把需要开机时自动运行的命令、服务放到这个文件中 |
/etc/fstab | 开机自动挂载的配置文件 | 配置挂载磁盘 |
/etc/motd | 文件的内容会在用户的登录系统后显示 | eg:温馨提示:佛祖保佑,永不宕机 |
/etc/issue /etc/issue.net | 文件的内容会在用户的登录系统前显示 | eg:这是我的Linux |
/etc/profile 或者 /etc/bashrc | 配置系统的环境变量/别名等的文件,各种配置的永久配置文件 | 环境变量 |
/etc/sysctl.conf | Linux内核参数设置文件 | - |
/etc/redhat-release | 查看系统版本 |
1) 修改主机名
hostnamectl set-hostname oldboy100
cat /etc/hostname
#oldboy100
2)网卡配置
- /etc/ 各种配置的目录
- /etc/sysconfig 系统配置文件
- /etc/sysconfig/network-scripts 网络配置文件
- /etc/sysconfig/network-scripts/ifcfg-ens33 网卡配置信息
3) 开机自启配置文件
#第一次使用时,给/etc/rc.d/rc.local增加权限
chmod +x /etc/rc.d/rc.loacl
补充
/etc/rc.local是/etc/rc.d/rc.local的软链接
2. /var/
/var/经常变化的内容 | 说明 | 应用建议 |
---|---|---|
/var/log/ | 系统及服务的各种日志 | - |
/var/log/secure | 存放用户登录情日志 | 分析是否有恶意破解情况 |
/var/log/messages | 通用各种服务的日志 | 分析服务,系统异常 |
3. /proc/
/proc/系统、进程信息、内核 | 说明 | 应用建议 |
---|---|---|
/proc/cpuinfo | cpu信息 | 监控使用,获取cpu指标 (free -m 查看内存) |
/proc/meminfo | 内存信息 | 监控使用,获取内存指标 |
/proc/loadayg | 系统负载信息,衡量系统繁忙程度 | - |
/proc/mounts | 系统挂载信息 | - |
1) cpu信息
- cpu颗数,cpu核心数
- cpu颗数,有多少个物理cpu
- cpu核心数:一颗cpu有多少个核心
# 查看cpu信息,核心数,颗数
lscpu
六、Linux环境优化
- 检查是否能联网
ping baidu.com
- 配置yum源(安装软件的软件仓库)
cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
yum install -y tree vim wget bash-completion bash-completion-extras lrzsz net-tools sysstat iotop iftop htop unzip nc nmap telnet bc psmisc httpd-tools bind-utils nethogs expect
yum install ysl cowsay
七、vi、vim编辑器详解
1. vi、vim的区别
内容 | 区别 |
---|---|
vi | 系统自带 |
vim | 额外安装,vi升级版 |
2. vi、vim的基本使用
1) vim打开文件
vim使用选项 | 说明 |
---|---|
vim + filename | 打开文件,并将光标置于最后一行的首部 |
vi +n filename | 打开文件,并将光标置于第 n 行的首部 |
vi +/pattern filename | 打幵文件,并将光标置于第一个与 pattern 匹配的位置 |
2) 命令模式
快捷键 | 功能 |
---|---|
jkhl | 上下左右移动光标 |
gg | 光标移动到文档首行 |
G | 光标移动到文档尾行 |
v | 进行字符选中 |
V | 进行行选中 |
y | 复制已选中的文本到剪贴板 |
数字+yy | 复制光标所在行,此命令前可以加数字,可复制多行 |
dd | 剪切光标所在行 |
p | 黏贴 |
数字+dd | 此命令前可以加数字,向下剪切指定行数 |
x | 删除光标所在位置的字符 |
:数字a,数字bd | 删除从a 行到 b 行的文本内容 |
u | 撤销 |
U | 撤销所有编辑 |
3) 底行模式(查找、替换、查询帮助、保持退出) : ? /
快捷键 | 功能 |
---|---|
:w filename | 另存到 filename |
/abc | 从光标所在位置向前查找字符串 abc |
?abc | 从光标所在位置向后查找字符串 abc |
:%s/a1/a2/g或者 :%s#world#oldgirl#g | 替换所有行中,所有符合条件的内容 (s是替换 g表示全局) |
:n1,n2 s/a1/a2/g | 将文件中 n1 到 n2 行中第一处 a1 都用 a2 替换 |
:set nu | 行号显示 |
:set nonu | 行号显示 |
:100 | 定位到100行 |
4) 编辑模式 i
快捷键 | 功能 |
---|---|
i | 在当前光标所在位置插入,光标后的文本相应向右移动 |
5) 可视模式 shift+v
#1.批量删除某部分内容
ctrl + v 进入可是模式
移动光标,选择区域
d,删除
#2.批量写入内容
ctrl + v 进入可是模式
移动光标,选择区域
shift+i 进入编辑模式
写入内容
原因
- vim编辑文件时,会生成临时文件
- 通过保存退出,隐藏文件会消失
- 异常断电、同时编辑文件,会有提示
解决
- 删除临时文件,即可
- 恢复未保存数据 R
bc
?abc|从光标所在位置向后查找字符串 abc
:%s/a1/a2/g或者 :%s#world#oldgirl#g|替换所有行中,所有符合条件的内容 (s是替换 g表示全局)
:n1,n2 s/a1/a2/g|将文件中 n1 到 n2 行中第一处 a1 都用 a2 替换
:set nu|行号显示
:set nonu|行号显示
:100|定位到100行
4) 编辑模式 i
快捷键 | 功能 |
---|---|
i | 在当前光标所在位置插入,光标后的文本相应向右移动 |
5) 可视模式 shift+v
#1.批量删除某部分内容
ctrl + v 进入可是模式
移动光标,选择区域
d,删除
#2.批量写入内容
ctrl + v 进入可是模式
移动光标,选择区域
shift+i 进入编辑模式
写入内容
原因
- vim编辑文件时,会生成临时文件
- 通过保存退出,隐藏文件会消失
- 异常断电、同时编辑文件,会有提示
解决
- 删除临时文件,即可
- 恢复未保存数据 R