2018年秋招面试常见Linux运维知识点总结
Linux中常见命令:
ping命令:可测试网络是否通畅。ping命令使用的是网络层的ICMP协议,但从命令本身来看是属于第七层应用层。
traceroute:电脑网络工具,可显示数据包在IP网络经过的路由器的IP地址。
iostat命令可以查看磁盘IO状态。
free命令查看的是内存占用情况,可以显示当前系统未使用的和已使用的内存数目,还可以显示被内核使用的内存缓冲区。
uptime命令:能够打印系统总共运行了多长时间和系统的平均负载。uptime可以显示的信息依次为:现在时间,
系统已经运行了多长时间,目前有多少个登录用户,系统在过去1,5,15分钟内的平均负载。
top命令:性能分析工具,能够实时显示系统中各个进程的资源占用情况,top命令用于显示当前进程的状况。
uptime -v 指定版本信息
lsof命令:一个列出当前系统的打开文件工具,Linux一切皆文件,每行显示一个打开的文件,若不指定条件默认
将显示进程的所有文件。
mount命令:可以查看磁盘的挂载状态。
du:统计目录(或文件)所占磁盘空间的大小。
df:用于显示文件系统的磁盘使用情况。
vmstat:命令报告关于内核线程,虚拟内存,磁盘陷阱和CPU活动的统计信息。
getconf PAGE_SIZE查看Linux内存页,一般为4KB。
mkdir -p 表示创建目录A并创建目录B
usermod -u/-g 修改用户id和组id
TOP参数:监控系统负载工具:
s:修改进程刷新时间间隔
m:根据内存占有率进行排序
c:根据CPU占有率进行排序
u:后面跟用户名
大写P:结果按CPU占用降序排序
大写M:按内存占有降序排序
PS参数:进程管理
a 关于当前shell运行的所有进程
X | -A 所有进程,X显示状态,-A不显示
f 显示进程从属关系
e 显示进程调用环境工具的详细信息
l 长列表显示进程的详细信息
u 显示进程的用户信息
-a 显示shell前台运行命令的进程
ps ax --sort = %mem 按照内存负载排序
Linux下ps -ef 和 ps aux的区别:
ps aux 是用BSD的格式来显示Java这个进程。
ps -ef 是用标准格式显示Java进程
find命令:
find命令删除指定大小的文件:
find /var/mail/ -size +50M -exec rm -fr {} \;
find命令查找最近修改的当前目录下的.php文件:
find . -name '*.php' -mtime 0
查找指定大小和类型
find /etc -size +1M -type f
找出并删除七天前的文件
find /tmp/ -type f -mtime +7 -print -exec rm -f {} \;
-exec 指出要执行后面的系统命令;\结束符
tcpdump抓包工具:
tcpdump可以将网络层中的数据包的头完全截获下来提供分析。
抓包存取:
tcpdump -i eth1 host 172.16.7.206 and port 80 -w /tmp/
网关,DNS,selinux:
使用genenforce查看selinux状态,/etc/sysconfig/selinux进行配置
修改网关:
1.更改配置文件: /etc/sysconfig/network-scripts/ifcfg-eth0
2.命令: route add default gw ... dev eth0
修改DNS:
vim /etc/resolv.conf
shell中的特殊字符:
$0 这个程式的执行名字
$n 这个程式的第n个参数值,n=1..9
$* 这个程式的所有参数,此选项参数可超过9个。
$# 这个程式的参数个数
$$ 这个程式的PID(脚本运行的当前进程ID号)
$! 执行上一个背景指令的PID(后台运行的最后一个进程的进程ID号)
$? 执行上一个指令的返回值 (显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误)
$- 显示shell使用的当前选项,与set命令功能相同
[email protected] 跟$*类似,但是可以当作数组用
iptables:
iptables是一款开放源代码完全自由的基于包过滤的防火墙工具,可以对流入流出服务器的数据包进行精细控制,主要
工作在OSI七层中的二、三、四层。iptables运用内核的layer7模块。
iptables的四表五链:
Filter表:过滤数据包
NAT表:用于网络地址转换(IP、端口)
Mangle表:修改数据包的服务类型、TTL、并且可以配置路由实现QOS
Raw表:决定数据包是否被状态跟踪机制处理
INPUT链——进来的数据包应用此规则链中的规则
OUTPUT链——外出的数据包应用此规则链中的规则
FORWARD链——转发数据包时应用此规则链中的规则
PREROUTING链——对数据包作路由选择前应用此链中的规则
POSTROUTING链——对数据包作路由选择后应用此链中的规则
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT
iptables -A INPUT -p tcp -s 192.168.1.2 -j DROP
-j 指定ACCEPT接受,或者DROP不接受
--dport目标端口,当数据从外部进入服务器为目标端口,反之,数据从服务器出去,使用--sport
nginx为啥叫做反向代理服务器?:
反向代理方式是指以代理服务器来接受客户端的连接请求,然后将请求转发到网络上的web服务器(apache,nginx等),
并将从web服务器上得到的结果返回给请求连接的客户端,此时代理服务器对外就表现为一个服务器。而且nginx作为
反向代理服务器可以根据用户请求的内容转发到不同的后端服务器。
正向代理:
一个标准的代理缓冲器用于缓冲静态网页,当页面被再次访问时,浏览器将直接从本地代理服务器获取请求数据
而不向原web站点请求数据,只需在每一个内部主机指明IP地址和端口号,客户端上网时,每次交给代理服务器即可。
memcache:
1.由于网络的高并发读写需求,传统的关系型数据库出现瓶颈。需要对数据库的高并发读写,对海量数据的处理。
通常把查询的结果保存到memcache中,下次访问时直接从memcache中读取,而不再进行数据库的查询操作,
这样很大程度减轻了数据库的负担。
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,暂时不能运行。
等待态:因等待某一件事而暂时不能运行,如等待读盘结果。
软链接和硬链接的区别:
硬链接:
文件有相同的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.本地域名服务器把返回的结果保存到缓存以备下一次使用,将结果返回客户机。
DNS的递归查询和迭代查询:
(1)递归查询
递归查询是一种服务器的查询方式,在该模式下DNS服务器接收到客户机请求,必须使用一个准确的查询结果回复客户机,
如果DNS服务器本地没有存储的DNS信息,那么该服务器就会询问其他服务器,并将返回的查询结果交给客户机。客户机和
服务器之间的查询是递归查询。
(2)迭代查询
DNS服务器向客户机提供其他能够解析的DNS服务器地址,当客户机发送查询请求时,DNS服务器并不直接回复查询结果,
而是告诉客户机另一台DNS服务器地址,客户机再向这台DNS服务器提供请求,依次循环直到查询到结果为止,服务器之间的
查询是迭代查询。
输入一个URL之后,发生的事情:
1.浏览器向DNS服务器查找输入URL对应的IP地址。
2.DNS服务器返回网站的IP地址。
3.浏览器根据IP地址与目标web服务器在80端口上建立TCP连接。
4.浏览器获取请求页面的HTML页码。
5.浏览器在显示窗口渲染HTML
6.窗口关闭时,浏览器终止与服务器的连接。
DHCP:动态主机配置协议
作用于OSI的应用层,可以从指定的DHCP服务器获取配置信息的协议(IP地址,子网掩码,dns,网关)
DHCP的运作方式:(53端口)
客户端传播广播包给整个物理网段内的所有主机,如局域网内有DHCP服务器时,才会响应客户端的IP参数要求
所以DHCP服务器与客户端应在同一个物理网段内。
Apache的三种工作模式:
prework MPM/worker MPM 多路处理模块
Event MPM 可处理更高的负载
常见的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协议安全
FTP服务的工作原理:
FTP服务是一种有连接的文件传输服务,采用的传输层协议是TCP协议。FTP服务的基本过程是:
建立连接、传输数据与释放连接。由于FTP服务的特点是数据量大、控制信息相对较少,因此在
设计时采用分别对控制信息与数据进行处理的方式,这样用于通信的TCP连接也相应地分为两种
类型:控制连接与数据连接。其中,控制连接用于在通信双方之间传输FTP命令与响应信息,完
成连接建立、身份认证与异常处理等控制操作;数据连接用于在通信双方之间传输文件或目录信息。
FTP的20和21端口:
一个是数据端口,一个是控制端口,控制端口为21,数据端口不一定为20,如果主动模式为20,如果是
被动模式,需要服务器和客户端商定即可。
nginx的几种算法:
1.轮询:每个请求按时间顺序逐一分配到不同的后端服务器。如果后端服务器down掉,则自动剔除。
2.weight:指定轮询几率,weight和访问几率成正比,用于后端不均的情况。
3.ip_hash:每个请求按访问的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session问题。
4.fair(第三方):按后端服务器的响应时间来分配请求,响应时间短的优先分配。
5.url_hash(第三方):按访问的url的hash结果来分配请求,使每个url定向到一个后端服务器,后端服务器为缓存时有效。
nginx和apache的对比:
nginx相对于apache的优点:
轻量级,同样起web 服务,比apache 占用更少的内存及资源
抗并发,nginx 处理请求是异步非阻塞的,而apache 则是阻塞型的,在高并发下nginx 能保持低资源低消耗高性能
高度模块化的设计,编写模块相对简单
apache 相对于nginx 的优点:
rewrite ,比nginx 的rewrite 强大 模块超多,基本想到的都可以找到 ,少bug ,nginx 的bug 相对较多 ,超稳定 。
存在就是理由,一般来说,需要性能的web 服务,用nginx 。如果不需要性能只求稳定,那就apache 吧。
后者的各种功能模块实现得比前者,例如ssl 的模块就比前者好,可配置项多。这里要注意一点,epoll网络IO
模型是nginx 处理性能高的根本理由。
Nginx 配置简洁, Apache 复杂
Nginx 静态处理性能比 Apache 高 3倍以上
Apache 对 PHP 支持比较简单,Nginx 需要配合其他后端用
Apache 的组件比 Nginx 多
现在 Nginx 才是 Web 服务器的首选
最核心的区别在于apache是同步多进程模型,一个连接对应一个进程;nginx是异步的,多个连接(万级别)可以对应一个进程
nginx处理动态请求是鸡肋,一般动态请求要apache去做,nginx只适合静态和反向。
Ansible和Saltstack的简单对比:
文件权限位:
LVS的调度原理:
lvs由前端的负载均衡器和后端的真实服务器集群组成,RS间可通过局域网和广域网连接。LVS的这种架构对用户是透明的,用
户只能看见一台作为LB的虚拟服务器,而看不到提供服务的真实RS群,当用户的请求发往虚拟服务器。LB根据设定的包转发策略
和负载均衡算法将用户请求转发给RS,RS再将用户请求结果返回给用户。
LVS的调度算法:
1.RR:轮叫调度,通过轮叫算法将外部请求按顺序分配到集群中的真实服务器。
2.WRR:加权轮叫,自动询问真实服务器情况,并动态调整权值。
3.DH:目标散列地址调度,从散列表中找出对应服务器,若该服务器可用且未超载,将请求发送到该服务器。
4.SH:源地址hash,根据源地址从散列表中找出对应服务器,若该服务器可用且未超载,将请求发送到该服务器。
5.LC:最小链接,将网络请求分配到链接数最小的服务器。
6.WLC:加权最小链接调度器,自动问询真实服务器情况动态调整其权值。
ELK日志分析平台:
通过日志信息了解服务器软硬件信息,检查配置过程中的错误以及错误发生的原因。
1.ES是一个开源的分布式搜索服务器。
2.logstash可对日志进行过滤分析。
3.kibana是一个es的前端展示工具,可以为logstash和es提供日志分析的web界面,可以帮助汇总分析和搜索重要的日志。
工作原理:
logstash收集APP server产生的日志信息,并存放到ES集群中,而kibana则从ES集群中查询数据生成图表返回用户。
zabbix监控平台:
zabbix可以配置触发器,图表,仪表盘等图形化,可结合onealert实现云告警,在zabbix界面进行部署,可添加对应的报警媒介
类型。我们可以模拟报警,在一个节点关闭zabbix-agent服务,在网页会相应地显示报警的严重性,同时在onealert绑定的邮箱
也会收到报警信息,会有待处理信息,当恢复节点功能才可恢复。
优点:
配置简单,支持多语言,有丰富的图形化界面,可以自动发现设备,分布式监控,email通知等功能。
zabbix可监控的服务信息:
1.nginx监控,zabbix配置相应的监控项和图形。
2.percona为数据库服务器进行了改进,提升了高负载下的Innodb性能,为DBA提供了非常有用诊断工具。
3.apache-tomcat(jsp配置jdk环境)部署监控,zabbix配置相应接口,模板,更新即可。
运维常见的词汇:
devops:是一组过程方法系统的统称,用于促进开发,技术运营的协作与整合。
dev(开发人员)+ops(运维人员)
ITIT:互联网解决方案提供商。
SRE:网络可靠性工程师,软件工程师和系统管理的结合。
云计算:是基于互联网相关服务的增加,使用和交付模式,通常涉及通过互联网来提供动态易扩展且经常是虚拟化的资源。
stp:生成树协议,通常在交换机之间传递一种特殊的报文,网桥协议数据单元来确定网络拓扑结构。
keepalived工作原理:
keepalived是集群管理中保证高可用的一个服务软件,用来防止单点故障,这种故障切换是通过VRRP协议来实现的,主节点
在一定的时间间隔中发送心跳信息的广播包,告诉自己的存活状态信息,当主节点发生故障时,各从节点在一段时间内收到广
播包,从而判断主节点是否发生了故障,因此会调用自己的接管程序来接管主节点的IP资源和服务,当主节点恢复时,备节点
会主动释放资源,恢复到接管前状态,从而实现主备故障切换。
ps aux中VSZ代表什么意思?RSS代表什么意思?
VSZ:虚拟内存集。RSS:物理内存集
cdn内容分发网络:
尽可能的避开网路上影响数据传输速度和稳定性的瓶颈和环节,使内容传输的更快更稳定。通过在网络上放置节点服务器
所构成的在现有互联网基础上的一层智能虚拟网络,cdn系统能实现实时的根据网络流量和各节点的负载情况以及到用户
的距离和响应时间等综合信息将用户的请求重新导向到最近的服务器上面。
varnish高性能反向代理服务器,作为cdn的缓存服务器。MISS--> HIT命中--->未命中
age缓存周期为120秒,命中之后到了120周期就会变成未命中。
gitlab+jenkins自动化部署搭建:
gitlab是一个代码仓库,用来管理代码。jenkins是一个自动化服务器,可以运行各种自动化构建测试和部署任务,
两者结合起来,可以实现开发者提交代码到gitlab,jenkins以一定的频率自动运行测试,构建和部署的任务,使开发
团队更高效的集成和发布代码。
git部署:gie是一个分布式版本控制系统,用于敏捷高效的处理任何或大或小的项目,不需要上网,每个人电脑都有
一个完整的版本库,每个人所做的修改各自推送给对方即可。
jenkins的默认端口是8080,安装插件配置免密,在每次推送信息时,jenkins可看到相应的推送标志,还可以在控制台
看到对应的输出。
Linux内核及优化:
sysctl命令用来配置与显示/proc/sys目录中内核参数,/etc/sysctl.conf文件来永久保存参数。
awk命令:
awk求和:
cat data | awk '{sum+=$1}END{print "sum=",sum}'
awk求平均:
cat data | awk '{sum+=$1}END{print "Average=",sum/NR}'
awk求最大值:
cat data | awk 'BEGIN{max=0}{if ($1>max) max=$1 fi } END {print "max=",max}'
awk求最小值:
cat data | awk 'BEGIN{min=999999999}{if ($1<min) min=$1 fi} END {print "min=",min}'
shell中的头文件含义:
#!/bin/bash是指此脚本使用/bin/bash解释器执行,#!是一个特殊的表示符,其后跟着此脚本的shell路径,bash是
shell的一种,还有很多shell,如sh,csh...
Docker容器:
时代的造就,我们正处于一个云计算异常迅猛的时代,云计算又是所有移动互联网,IT以及未来消费者行业的基础。
由于每一个虚拟机都有一个完整的操作系统,一个操作系统至少占有5GB空间,但是操作系统又是非必须的我们关心
的是虚拟主机提供的服务,这就是docker轻量级主机的优势所在。
创建容器:
docker run -it --name vm1 ubuntu bash
数据挖掘的一般过程:
1.数据集选取和构造
2.数据预处理
3.数据转换
4.数据建模
5.结果分析和改进