1.什么是操作系统
人与硬件沟通的桥梁;
组成:硬件、内核、解释器(bash/dash/python)、软件应用程序
我们常见的linux系统,全称为GNU/Linux,GNU是一个自由的操作系统,是GNU计划的主要目标,GNU计划开发了大量的自由软件,基于GPL条款发布。只不过GNU内核还未完成完整功能开发。而当时正好Linux诞生了,且Linux兼容Unix并同样在GPL条款发布,所以Linux很快火了起来。因此,Linux系统往往被称为GNU/Linux。
所以普通的开发工作,掌握几种解析器是非常有必要的,至少要掌握bash的简单编写。如果要深度开发与优化系统,熟悉操作系统的内核也是重要的一步。
2.虚拟机配置
3.子网与私网的区别?
1.私有地址可以理解为内网IP,它是IP设计中取某些段规定这些是内网IP,用于局域网。
2.子网划分是指将大段的某段IP地址划分是若干小段,各小段之间不能直接通信,从而达到缩小广播域,减少广播风暴。而网络小了,相对安全性能提高,出来问题也能相对容易找出问题节点。
3.子网划分可以划分某段公网IP,也可以划分某段私有地址。
4.子网与子网掩码
子网掩码与ip地址对应,1为网络地址。
1.为了实现更小的广播域,需要子网划分。
2.避免主机过多而拥堵或过少而IP浪费,需要子网划分。
即内网ip地址和子网掩码可以计算得出网络地址。
5.NAT模式与桥接模式的区别
NAT模式:即地址转换协议,虚拟机链接主机,能不能上网取决于主机。上网时虚拟机ip转换为主机ip地址。
优点:不容易出现局域网中IP地址冲突
缺点:其它宿主机不能直接访问当前虚拟机
桥接模式:即虚拟机单独链接路由器(必须时路由器),能不能上网取决于上级子网能不能上网,与主机没有关系。ip是路由分配的。
优点:容易出现局域网中IP地址冲突
缺点:其它宿主机能直接访问当前虚拟机
6.公网与私网
内网要想和外部Internet链接就需要转换成公网唯一IP与外部链接,需要使用路由NAT转换。
7.32位与64位系统的区别?
1、数据处理能力不同:32位就是32bit即一次可以处理4个字节的数据;64位就是64bit即一次可以处理8个字节;
2、内存容量支持上限不同:32位的操作系统最多支持4GB的内存,实质是3.25GB;而64位系统理论上能够支持无限大小的内存,只要有相对应的产品和足够的内存插槽;
3、软件运行版本不同:64位的系统能够兼容32位的软件,但32位的不能向上兼容;
8.网卡名称
centos6之前默认为ethx,之后默认为ensxx
9.系统安装配置过程
网络:网卡(eth0)激活、静态配置网络:ip、子网掩码、网关、dns地址;动态配置:dhcp
磁盘分区:
1.通用分区方案
swap分区即预留的虚拟内存空间。
2.其它分区方案
10.系统安全的配置
11.时区配置
根据指定的NTP服务器对时。
12.系统软件的预安装
根据需求自行决定。
13.用户创建并设置密码
root与user用户
14.文件不小心删除怎么办?
linux系统可以通过快照进行备份,可以以时间和说明进行标记当前节点。
15.DNS域名服务器
几个常见的公共DNS地址:8.8.8.8、114.114.114.114、223.5.5.5、223.6.6.6
16.默认网关
定义:网关实质上是一个网络通向其他网络的IP地址。比如有网络A和网络B,网络A的IP地址范围为 “192.168.1.1-192. 168.1.254”,子网掩码为255.255.255.0;网络B的IP地址范围为 “192.168.2.1~192.168.2.254”,子网掩码为255.255.255.0。在没有路由器的情况下,两个网络之间是不能进行 TCP/IP通信的,即使是两个网络连接在同一台交换机(或集线器)上,TCP/IP协议也会根据子网掩码(255.255.255.0)判定两个网络中的主机处在不同的网络里(一个网络是192.168.2.0一个是192.168.1.0)。而要实现这两个网络之间的通信,则必须通过网关。如果网络A中的主机发现数据包的目的主机不在本地网络中,就把数据包转发给它自己的网关,再由网关转发给网络B的网关,网络B的网关再转发给网络B的某个主机。网络B向网络A转发数据包的过程也是如此。
所以说,只有设置好网关的IP地址,TCP/IP协议才能实现不同网络之间的相互通信。那么这个IP地址是哪台机器的IP地址呢?网关的IP地址是具有路由功能的设备的 IP地址,具有路由功能的设备有路由器、启用了路由协议的服务器(实质上相当于一台路由器)、代理服务器(也相当于一台路由器)。
默认网关:如果搞清了什么是网关,默认网关也就好理解了。就好像一个房间可以有多扇门一样,一台主机可以有多个网关。默认网关的意思是一台主机如果找不到可用的网关,就把数据包发给默认指定的网关,由这个网关来处理数据包。现在主机使用的网关,一般指的是默认网关。
DHCP服务器会自动给网络中的电脑分配IP地址、子网掩码和默认网关
17.磁盘io
每次读取一个block都会进行一次磁盘io。可以怎么缓解磁盘io紧张呢?
1.扩大内存缓存和缓冲区,等buffer满了再写入磁盘,也可以定时写入磁盘。
2.扩大block块。由于数据块在硬盘上非连续存储,普通硬盘因为需要移动磁头,所以随机寻址较慢,读越多的数据块就增大了总的硬盘寻道时间。当硬盘寻道时间比io时间还要长的多时,那么硬盘寻道时间就成了系统的一个瓶颈。合适的块大小有助于减少硬盘寻道时间,提高系统吞吐量。
问题:扩大block有个问题?越大系统启动加载时间越久。而且大的block块可能会浪费磁盘空间,需要结合情况考虑。
ps:每个文件至少占用一个inode和一个block
18.软硬连接
软链接:inode号码不一样,相当于原文件的快捷方式,删除原文件后失去入口找不到磁盘中的文件存储内容。
硬链接:同一个分区中inode号码一样,相当于多创建了一个访问磁盘中文件内容的入口,删除原文件后,照样可以访问。但是修改文件后硬连接文件因为访问的还是磁盘中的文件,因此也是看到修改的内容(不能防止文件被修改,只能防止被删除,因此需要提前备份文件)
系统中找硬连接文件命令:find -inum xxx
不能给目录创建硬连接!(不然cd…应该跳到哪个目录呢inode可是都一样的)
扩展:当linux系统不小心删除了重要的信息后,磁盘中的内容并没有删除,只是访问磁盘的inode信息入口被删除了,通过数据恢复公司操作可以在磁盘中找到数据恢复,因此当我们对重要的数据进行误删除操作时,尽量不要有其它操作,以防数据在磁盘中的信息有变化难以恢复。
19.xargs和exec的区别
说明:xargs会将前面的数据变成一行,配合cp等命令的-i/-t参数进行使用。-exec则会将数据一行一行的处理。
即:exec参数是一个一个传递的,传递一个参数执行一次命令;xargs一次将参数传给命令,可以使用-n控制参数个数。
ps:mtime查找内容修改指定日期范围的文件。-ctime为文件属性修改时间,atime为文件创建时间。
20.没有引号可以识别通配符信息
21.find与正则表达式
工作中经常需要使用到正则表达式,但是正常情况下我们使用的是通配符,find支持正则表达式**-regex**,在shell脚本中我们常用set -f 取消使用通配符开启正则表达式。
22.备份文件简化操作
即利用组合的方式来实现。
备份信息还原操作:cp test1.sh{.bak,}
ps:1.清空文件快捷方式>xxx.txt
2.输出到正确和错误可以将2>&1放在后面也可以用>&放在文件前面简写(工作中可用)
23.正则表达式与扩展正则表达式说明
+、|、()、{}、?属于扩展正则符号,grep和sed默认不支持扩展正则符号,需要使用参数grep -E/sed -r来支持,awk、egrep支持扩展正则符号。
ps:可以通过撬棍符号将扩展正则符号降级就不用参数来调用了。比如+、(xxx)等等。
ps:()的作用:后项引用前项。\1代表第一个括号的内容。
{}的作用:指定前面字符匹配的次数。
24.三剑客之一sed
查
添加
测试:
删除
测试:
修改
ps:企业实践中,i后面尽量跟.bak备份文件。i参数放在最后面。
特别注意:
实践:
更专业的批量修改文件名称方法:
rename ‘s/.jpg/.txt/’ oldboy*.jpg
总结:
25.三剑客之一awk
结构:sed 【参数】 条件-处理方式 文件
例如:sed -n ‘3p’ test.txt(打印第三行)
结构:awk 【参数】 模式-动作 文件
例如:awk ‘/liyun/{print $1,$3}’ test.txt(打印liyun所在行的一三列)
特殊情况:当多个分隔符紧贴的时候可以通过[ :]+来表示空格和冒号各自都是分隔符或者一起组成的" :"也是分隔符。
测试:
当有多列情况时,想对某一列进行匹配可以使用$x~进行模式匹配。
在~前加"i"代表取反。
column -t可以令输出以表格的形式展示。
gsub可以替换信息:格式gsub(/需要替换信息/,”目标信息“,第几列进行修改)
BEGIN 的作用:进行计算、修改内置变量(FS\NF\NR)
-v参数可以指定变量
awk的统计分析能力:利用BEGIN和END和变量来实现
26.系统启动流程
centos6
centos7
ps:debian系统的启动流程参考https://www.pianshen.com/article/2168148574/
27.用户管理
权限问题:sh脚本没有可执行权限也可以执行的原因:
普通用户能删除root用户创建文件的原因:
ps:有读权限时,所有用户都可以读写
注意:
对于目录而言:读权限代表可以读取文件属性,写权限代表可以增删改查文件,执行权限代表可以进入目录中。
对于普通用户可以修改root用户创建文件的原因:可以理解为普通用户对自己的家目录是有绝对权限的。
演示:
常见问题:
1.以下情况是因为目录不具有执行权限,可以读取目录中存在文件,因此可以获得名称信息。但是由于不能进入目录所以获取不到目录中文件inode信息(属性存在inode中),因此显示???。
2.
3.
28./etc/skel目录的作用
29.读写文件的原理
从根目录开始,查找目录/文件的inode信息定位到具体的block,如果目录没有执行权限则不能进入到目录中查看inode信息也就找不到下一个文件/目录的索引位置(inode存有索引和文件属性信息)。
30.系统用户权限相关
1.创建普通用户和虚拟用户
useradd参数的作用:
usermod主要参数:
userdel主要参数:
chown的主要参数:
查看用户信息:
31.权限相关
root赋予普通用户权限,普通用户用sudo执行指令。
特殊权限位设置:
给文件加锁,谁都不能修改:
相当于上锁后将钥匙藏起来。
32.定时任务
介绍:
特殊符号的意义:
一些结论:
实际操作:
注意事项:
33.磁盘
概念:
结构:
raid类型:
效率高,不安全
效率低,更安全
效率较高,安全性较高。至少要三块磁盘,radi5阵列最多只能损坏一块磁盘。可以通过其它几个磁盘反推缺失的数据。
raid10与raid01是组合方案,最终都是兼顾效率和安全来部署的。
MBR引导记录
磁盘分区操作方法:
1.分成四个主分区:
命令参数的功能:
2.分成三个主分区加一个扩展分区
扩展分区不能直接使用,可以进一步分成逻辑分区。
此时保存分区操作生效,fdisk -l可以查看,分好区后需要执行以下操作。
重要:需要让系统可以加载识别分区信息:partprobe /dev/sdb
第二步:格式化(创建文件系统)
- mkfs -t xfs /dev/sbd
第三步:挂载磁盘
如何开机自动挂载?
企业常见问题:
磁盘空间不足,不能添加内容:
原因一:block空间不足
解决方法:找到大文件删除。
ps:du查看目录大小
原因二:inode空间不足(df -i)
如何调整swap分区大小?
2021/5/6补充:
关于login shell和non-login shell的区别和环境变量的读取参考此文章:
https://blog.csdn.net/lws123253/article/details/89315218
2121/9/4:
linux执行文件的四种方式:
source file:当前bash执行,可以获取当前bash的变量
. file:当前bash执行,可以获取当前bash的变量
./file:启动子进程bash执行,文件中获取不到父进程bash变量。需要文件有可执行权限。
bash file:启动子进程bash执行,文件中获取不到父进程bash变量。
参考:https://blog.csdn.net/qq_36255988/article/details/100172528
此博文为个人实习后的学习总结,部分简单的知识没有系统化总结。仅供学习参考。