Linux中常见命令:

ping命令:可测试网络是否通畅。ping命令使用的是网络层的ICMP协议,但从命令本身来看是属于第七层应用层。
traceroute:电脑网络工具,可显示数据包在IP网络经过的路由器的IP地址。
iostat命令可以查看磁盘IO状态。
free命令查看的是内存占用情况,可以显示当前系统未使用的和已使用的内存数目,还可以显示被内核使用的内存缓冲区。
uptime命令:能够打印系统总共运行了多长时间和系统的平均负载。uptime可以显示的信息依次为:现在时间,
系统已经运行了多长时间,目前有多少个登录用户,系统在过去1,5,15分钟内的平均负载。
uptime -v 指定版本信息
find命令删除指定大小的文件:
find /var/mail/ -size +50M -exec rm -fr {} \;
lsof命令:一个列出当前系统的打开文件工具,Linux一切皆文件,每行显示一个打开的文件,若不指定条件默认
将显示进程的所有文件。
mount命令:可以查看磁盘的挂载状态。
du:统计目录(或文件)所占磁盘空间的大小。
df:用于显示文件系统的磁盘使用情况。
vmstat:命令报告关于内核线程,虚拟内存,磁盘陷阱和CPU活动的统计信息。
getconf PAGE_SIZE查看Linux内存页,一般为4KB。

静态变量和非静态变量的区别:

静态变量被所有的对象所共享,在内存中只有一个副本,当且仅当类在初次加载会被初始化。
非静态常量是对象所拥有的,在创建对象的时候被初始化存在多个副本,static在不同实例中地址一样,存在全局区。

僵尸进程和孤儿进程:

僵尸进程:一个子进程在其父进程还没有调用wait或waitpid()情况下退出。
孤儿进程:一个父进程在子进程运行时退出,孤儿进程将被init进程所收养。
僵尸进程会导致浪费资源,孤儿进程不会。

TCP的三次握手和四次挥手:

三次握手过程:

四次挥手过程:

在第四次挥手时,为什么A要先进入TiME-WAIT状态,等待2MSL时间才进入closed状态?

为了保证B能收到A的确认应答,若A发送完应答直接进入CLOSED状态,如果该应答丢失,B等待超时后会重新发送释放请求,
但此时A已经关闭,不会有任何响应,因此B永远无法正常关闭。

TCP和UDP的区别:

TCP--传输控制协议,面向连接,可靠的字节流服务,在客户端和服务器交换数据前,必须在双方建立一个TCP连接才
可以传输数据,TCP提供超时重发,丢弃重复数据,检验数据,流量控制,保证数据从一端到另外一端。
UDP---用户数据报协议,面向无连接的,是一个简单的面向数据报的传输协议,UDP不提供可靠性,只是把应用程序
传递给IP层的数据报发送出去,并不可保证是否到达,UDP传输不需要建立连接,且没有超时重发等机制,传输速度快。
TCP		 ------   UDP
打电话  ------     发短信

TCP和UDP的应用场景:

	若通信数据完整性需让位于通信实时性,则应该选择TCP协议。(文本传输,重要状态的更新等),反之则使用
	UDP协议(如视频传输,实时通信等)

	TCP协议适用于对效率要求相对低,但对准确性要求相对高的场景下,或者是有一种连接概念的场景下;而UDP
	协议适用于对效率要求相对高,对准确性要求相对低的场景。

	TCP一般用于文件传输(FTP HTTP 对数据准确性要求高,速度可以相对慢)远程登录(TELNET SSH 对数据
	准确性有一定要求,有连接的概念)等等;UDP一般用于即时通信(QQ聊天 对数据准确性和丢包要求比较低,
	但速度必须快),在线视频(RTSP 速度一定要快,保证视频连续,但是偶尔花了一个图像帧,人们还是能接受
	的),网络语音电话(VoIP 语音数据包一般比较小,需要高速发送,偶尔断音或串音也没有问题)等等。

	比如,TCP可以用于网络数据库,分布式高精度计算系统的数据传输;UDP可以用于服务系统内部之间的
	数据传输,因为数据可能比较多,内部系统局域网内的丢包错包率又很低,即便丢包,顶多是操作无效,
	这种情况下,UDP经常被使用。

TCP的流量控制:

	如果发送方发送数据过快,接收方来不及接受不造成数据的丢失。
	TCP的流量控制利用滑动窗口机制来实现的,接收方在返回的ACK包中会包含自己的接受窗口大小,以控制发送方的数据发送。
问题:当ACK报文丢失,出现A等待B确认,B等待A发送数据的死锁状态。
	利用rwnd值实现接收方对发送方的流量控制。
	当A收到rwnd=0时,启用持续计时器,时间到了则发送一个探测报文,询问B是否很忙或者ACK丢失,B回应自身接受窗口大小
	,若返回仍为0,则重复步骤。

TCP的拥塞控制:

网络的需求超过自己的工作极限出现拥塞,拥塞控制是为了防止过多的数据注入到网络中,可以使网络中的路由器或者链路不过载。
1.慢开始和拥塞避免结合。
慢开始是指发送数据开始,并不清楚网络中的负荷情况,会先发送一个字节试探报文,以指数类推。
小于门槛值,使用慢开始算法加倍。
大于门槛值使用拥塞避免算法缓慢加1。

快重传和快恢复算法:

快重传和快恢复算法旨在快速恢复丢失的数据包。快重传当接受方发现M3丢失,则立即发送对M2的重复确认,一旦发送方
接连收到三个M2的重复确认,立即重传M3,也就是发送方收到第四个确认时。
快恢复算法:
当发送方在cmnd=24连续收到三确认,把慢开始门限值减半为12.
用拥塞避免算法替换慢开始算法使拥塞窗口缓慢放大。

SYN攻击以及解决办法:

SYN攻击就是利用TCP协议的缺陷,来导致系统服务器停止正常的响应。
SYN攻击原理:
TCP在发送数据前需要经过三次握手,SYN攻击的原理就是向服务器发送SYN数据包,并伪造源IP地址,在服务器收到SYN包
时,会将连接加入backlog队列,并向源IP发送SYN-ACK数据包并等待ACK,以完成三次连接。由于源IP地址是伪造的不存在的
主机IP,所以服务器无法收到ACK包并不断重发,同时backlog队列会被不断攻击的SYN连接占满,导致无法处理正常的连接。
SYN攻击处理:
1.减少ACK包的重发次数。
2.使用SYN cookie技术,返回SYN-ACK包时,不分配专门的数据包,根据SYN包计算出一个cookie值,在服务器收到SYN-ACK
包时,利用cookie值检测是否合法,若合法再分配数据包。
3.增加backlog队列(默认为1024)
4.限制SYN并发数。

后退n帧协议和选择重传协议:

后退n帧协议:
发送窗口的大小为n,接收的大小仍为1,这里假设n=9,发送方一次发送10个帧,前两个帧已经正确返回,后面的帧出现错误,
发送方要重新发送2-8,接收方也必须丢失之前接受的3-8这几个帧。
选择重传协议:
为了解决后退n帧协议的总要重发该帧之后的所有帧,会导致进一步恶化网络,接收方首先缓存所有收到的帧,某个帧出现错误时
只重传该帧,只有当某个序号之后所有帧正确收到后,才一起提交给高层应用,缺点在于需要更多的缓存。

nginx为啥叫做反向代理服务器?:

	反向代理方式是指以代理服务器来接受客户端的连接请求,然后将请求转发到网络上的web服务器(apache,nginx等),
	并将从web服务器上得到的结果返回给请求连接的客户端,此时代理服务器对外就表现为一个服务器。而且nginx作为
	反向代理服务器可以根据用户请求的内容转发到不同的后端服务器。

正向代理:

一个标准的代理缓冲器用于缓冲静态网页,当页面被再次访问时,浏览器将直接从本地代理服务器获取请求数据
而不向原web站点请求数据,只需在每一个内部主机指明IP地址和端口号,客户端上网时,每次交给代理服务器即可。

BGP和OSPF的区别:

BGP:用来处理不同网络之间的协议。
OSPF:用来处理同一网络内部的链路协议。

什么是IPV4和IPV6?

IPV4指的是地址位数是32位,最多有2的32次方位主机可以连接到Internat。
IPV6采用128位地址空间,几乎不受限制的提供地址。

redis和memcache的区别:

1.redis中,并不是所有的数据都一直存储在内存中的,这是和memcache的最大区别。
2.redis多方面具备数据库的特征,或者说是一个数据库系统,而memcache只是一个简单的k/v缓存。
3.他们的扩展都需要做集群。
4.redis和memcache都是内存数据库。
5.memcache只支持简单的key/value的数据结构。无法进行持久化数据不能备份。redis支持多种数据结构,支持持久化操作。

如何交换a和b的数值:

1.不引入第三变量交换:
a=a+b
b=a-b
a=a-b
2.引入第三个变量交换:
c=a
a=b
b=c

Linux开机启动过程:

1.BIOS加电自检。
2.读取MBR主引导记录
3.运行引导程序grub加载kernel镜像初始化。
4.根据/etc/inittab中系统初始化配置执行/etc/rc.sysinit脚本。
5.根据第三步读到的运行级别(runlevel)值启动对应服务。

0:关机
1:单用户
2:无网络的多用户
3:命令行模式
4:未用
5:GUI图形化模式
6:重启
who -r 显示当前运行级别以及系统当前时间。
runlevel显示当前运行级别
init3/init5切换模式

6.运行/etc/rc.d/rc.local
7.生成终端等待用户登录。

Linux进程的三种状态:

运行态:占有CPU,并在CPU上运行。
就绪态:已经具备运行条件,但由于没有空闲CPU,暂时不能运行。
等待态:因等待某一件事而暂时不能运行,如等待读盘结果。

OSI四层模型:

应用层
传输层
网络互连层
网际层

OSI七层模型以及各层对应服务:
2018年秋招面试常见Linux运维知识点总结-LMLPHP

软链接和硬链接的区别:

硬链接:
文件有相同的inode及data block。
不能交叉文件系统进行硬链接的创建。
不可对目录,只可对文件创建。
删除硬链接并不影响其他有相同inode号文件。
软链接:
软链接有自己的文件属性和权限。
可对不存在的文件和目录创建软链接。
软链接可交叉文件系统。
软链接可对文件/目录创建。
创建软链接时,链接计数i_nlink不会增加。
删除软链接并不影响被指向的文件,但若被指向的文件被删除,则相关软链接就变成了死链接,若被指向路径的文件被重
新创建,死链接可以恢复。

Linux下的压缩命令:

1.gzip etc.tar压缩成gz格式。
  gunzip etc.tar.gz 解压gz格式的压缩包
2.bzip2 etc.tar 压缩成bz2的格式
   bunzip2 etc.tar.bz2 解压bz2格式压缩包
3.xz etc.tar 压缩成xz格式
   unxz etc.tar.xz 解压xz格式压缩包
4.zip -r etc.tar.zip etc.tar 压缩成zip格式
   unzip etc.tar.zip 解压zip格式压缩包
5.compress压缩.z文件
  uncompress解压.z文件

Linux可以查阅全部文件的三个命令:

cat,more,less
more命令:可以让屏幕在显示满一个屏幕时,按空格键可以继续显示下一个画面或按Q键停止。
less命令:可以分页显示文件。
cat命令:一次显示整个文件。

定时任务:

* * * * * command表示格式
分钟 小时 天 月 周 命令

交换分区:

在内存小于2G的情况下,交换分区为内存的2倍,超过2倍的话,交换分区为物理内存的两倍。

运维的工作用途:

1.保障系统的正常用途。
2.保障数据的安全可靠。
3.负责服务的稳定性,确保服务可以7*24小时不间断的为用户提供服务。
4.确保系统架构的优化来节约成本。
5.确保自动化部署。

man的级别:

1.查看命令的帮助
2.查看可被内核调用函数的帮助。
3.查看函数和函数库的帮助。
4.查看特殊文件的帮助。
5.查看配置文件的帮助。
6.查看游戏的帮助。
7.查看其它杂项的帮助。
8.查看系统管理员可用命令的帮助。

DNS高速缓存服务:

DNS解析过程:
1.本地客户机提出域名解析请求,查找本地HOST文件后将该请求发送给本地域名服务器。
2.当本地的域名服务器收到请求后,就先查询本地的缓存,如果有该记录项
服务器返回查询结果。
3.如果本地DNS缓存没有该记录,则本地域名服务器将请求发给根域名服务器,然后根域名服务器
再返回给本地域名服务器一个所查询的主域名服务器地址。
4.本地域名服务器再向上一步返回的域名服务器发送请求,然后接受请求的服务器查询自己的缓存。
5.重复第4步。
6.本地域名服务器把返回的结果保存到缓存以备下一次使用,将结果返回客户机。

DHCP:动态主机配置协议

作用于OSI的应用层,可以从指定的DHCP服务器获取配置信息的协议(IP地址,子网掩码,dns,网关)
DHCP的运作方式:(53端口)
	客户端传播广播包给整个物理网段内的所有主机,如局域网内有DHCP服务器时,才会响应客户端的IP参数要求
所以DHCP服务器与客户端应在同一个物理网段内。

常见的HTTP状态码:

200-ok     服务器成功返回网页
301 			请求的网页已经永久跳转到新位置
403-Forbidden  		禁止访问,服务器拒绝请求
404- Not found   		服务器找不到请求的页面
500以及500之后的都是内部服务器错误
可以用 curl -I www.baidu.com 查看状态码

HTTP长连接和短连接:

短连接:客户端和服务器每进行一次HTTP操作,就建立一次连接,任务结束中断连接。
长连接:用以保持连接特性,当一个网页打开完成,客户端和服务器的连接不会关闭,
再次访问时会继续使用已建立的连接。

HTTP协议中Get和Post的区别:

Get用于获取查询/获取信息,Post方法用于资源的更新。
1.get提交的数据放在url之后,以?分割url和传输数据,post方法把提交的数据放在HTTP包的Body中。
2.get提交的数据大小有限制,post方法提交的数据无限制。
3.get方法涉及安全问题。

HTTPS和HTTP的区别:

HTTPS以安全为目标HTTP通道,HTTP是超文本传输协议,无状态,信息明文传输。HTTPS是HTTP+SSL
协议构建的可进行加密传输,身份认证的网络协议,比HTTP协议安全
10-06 21:35