首页
关于
推荐
CSDN
Search
1
文件上传下载-io-流的理解-笔记
155 阅读
2
vue循环指令el-table-column展示图片src路径拼接
148 阅读
3
正则表达式,将字符串分割两部分
141 阅读
4
MySQL数据库练习【一】
132 阅读
5
MySQL数据库练习【三】
121 阅读
默认分类
Mysql
Java基础
一天一练
Mongodb
Nginx
Docker
FastDFS
面试题
云计算基础
linux基础
shell脚本
实验
工具
基础命令
redis
zookeeper
部署
案例
登录
Search
标签搜索
vue
Mysql
IO
面试题
良辰美景好时光
累计撰写
72
篇文章
累计收到
0
条评论
首页
栏目
默认分类
Mysql
Java基础
一天一练
Mongodb
Nginx
Docker
FastDFS
面试题
云计算基础
linux基础
shell脚本
实验
工具
基础命令
redis
zookeeper
部署
案例
页面
关于
推荐
CSDN
搜索到
4
篇与
的结果
2025-04-10
运维面试题重点总结80题-汇总
汇总2—运维面试题重点总结80题目录1.OSI参考模型七层网络协议? 2.七层网络协议各层分别对应什么设备? 3.七层网络协议主要各层次包含的协议? 4.常见协议的解释? a)HTTP协议介绍: b)HTTP协议特点: c)HTTP协议之url的组成部分: d)HTTP协议之url的常见请求方式: 5.各层的PDU数据单元? 6.ping使用什么协议? 7.tcp协议和udp协议区别? 8.TCP/IP协议分为哪四层,具体作用是什么? 9.CDN技术原理? 10.阿里云上cdn的配置? 11.nginx做反向代理处理http请求的大致流程? 12.TCP协议和IP协议之间的关系? 13.nginx只用IP不用域名能反向代理吗? 14.Tcp连接状态详解,(tcp重要的监控指标参考和判断监控状态是否正常) 15.TCP状态参数中系统连接数(并发数)的统计:(带名称的统计和不带名称仅统计数量)两种方法命令: 方法1:netstat命令 方法2:ss命令 16.web服务并发连接数查看统计(nginx,apahce,tomcat等,修改端口即可)? (带名称的统计和不带名称仅统计数量) 方法1:netstat命令 方法2:ss命令 17.阿里云rds仅仅有内网时候,如何访问? 18.阿里云服务器之间使用内网连接的原因说明?服务器之间用内网连接,但客户端通过Navicat连接时候,可以用外网?也可连接vpn后使用内网连接mysql. 19.新给你一台服务器,你会怎么做? 20.Zabbix监控都监控哪些?监控什么业务数据?怎么监控mysql的,redis?日志? 21.Snmp的两种公司模式是什么?有什么特点? 22,什么是位置变量?shell的变量类型有哪些种? 23.Vi编辑器的三种模式? 24.Linux文件系统中每个文件用什么来标识? 25.Rpm有5种基本操作模式? 26.Icmp协议封装在什么协议中传递到目的主机? 27.mysqldump备份数据时候数据库太大卡死怎么解决?mysqldump时,卡在那里不动了,怎么办? 28.Docker的4种网络模式? 29.Lvs,haproxy,nginx区别? 30.磁盘报错“No space left on device”,但是 df -h 查看磁盘空间没满,请问为什么? 31.Linux系统中病毒怎么解决? 1)最简单有效的方法就是重装系统 2)要查的话就是找到病毒文件然后删除 3)由于即使删除病毒文件不排除有潜伏病毒,所以最好是把机器备份数据之后重装一下 32.查看http的并发请求数与其TCP连接状态 33.运维安全需要注意哪些事项? 34.服务器遭受攻击后的处理过程? 1)处理服务器遭受攻击的一般思路 2)检查并锁定可疑用户 3)查看系统日志 4)检查并关闭系统可疑进程 5)检查文件系统的完好性 6)重新安装系统恢复数据 35.已知 apache 服务的访问日志按天记录在服务器本地目录/app/logs 下,由于磁盘空间紧张现在要求只能保留最近 7 天的访问日志!请问如何解决? 请给出解决办法或配置或处理命令 36.每天晚上 12 点,打包站点目录/var/www/html 备份到/data 目录下(最好每次备份按时间生成不同的备份包) 37.一主多从,主库宕机,如何切换到从库,其他的从库如何处理?(验证没问题后修改的最终答案) 38.磁盘空间满了,删除了一部分 nginx access 日志,但是,发现磁盘空间还是满的,请问为什么? 39.写一条192.168.10.0网段从网关192.168.9.1出去的路由? 40.写一条放行80端口的防火墙规则? 41.如何将本地80 端口的请求转发到8080 端口,当前主机IP 为192.168.2.1 42.使用tcpdump监听主机为192.168.1.1,tcp端口为80的数据,同时将输出结果保存输出到tcpdump.log 43.实时抓取并显示当前系统中tcp 80端口的网络数据信息,请写出完整操作命令 44.用tcpdump嗅探80端口的访问看看谁最高 45.请举一个生产中实际的例子网站打开慢由于数据库慢导致的。 数据库负载高,有慢查询,做联合索引案例 46. 办公室同事反馈网站打不开,请简述一下排查故障的思路或解决方法? 47.服务器开不了机怎么解决一步步的排查 A、造成服务器故障的原因可能有以下几点: 48.网站做了负载均衡,发现有些用户访问的时候经常需要重新登录,是什么原因,怎么处理? 49.apache使用的3种工作模式是什么? 50.linux系统调优?linux启动过程? 51.dhcp服务的端口号? 52.dns服务的端口号? 53.IP/PV/UV的概念和区别? 54.正向代理、透明代理(也属于正向代理)和反向代理概念和CDN关系? 55.三种代理类型: 56.正向代理和反向代理参考地址: 57.mysql主从同步延迟的原因及解决方法 58.网站无法打开的排查思路和方法? 59.有客户反馈网页打开慢,怎么排查? 60.linux服务器上,用uptime、top查看系统的负载明显过高,排查处理思路? 61.找出僵死进程并杀死僵尸进程的方法? 62.运维应该关注哪些方面? 63.现在给你三百台服务器,你怎么对他们进行管理? 64.假如有人反应,调取后端接口时特别慢,你会如何排查? 65.LVS、Nginx、HAproxy有什么区别?工作中你怎么选择? 66.tomcat和Resin有什么区别,工作中你怎么选择? 67.什么叫网站灰度发布? 68.简述DNS进行域名解析的过程? 69.mysql如何减少主从复制延迟? 71.ip访问情况,要求分析nginx访问日志,找出访问页面数量在前十位的ip 72.使用tcpdump监听主机为192.168.1.1,tcp端口为80的数据,同时将输出结果保存输出到tcpdump.log 73.如何将本地80 端口的请求转发到8080 端口,当前主机IP 为192.168.2.1 74.实时抓取并显示当前系统中tcp 80端口的网络数据信息,请写出完整操作命令 75.用tcpdump嗅探80端口的访问看看谁最高 76.写一个脚本,实现判断192.168.1.0/24网络里,当前在线的IP有哪些,能ping通则认为在线 77.Tomcat工作模式? 78.如何看当前Linux系统有几颗物理CPU和每颗CPU的核数? 79.如何实时查看网卡流量为多少?如何查看历史网卡流量? 80.ps 查看系统进程时,有一列为STAT, 如果当前进程的stat为Ss 表示什么含义?如果为Z表示什么含义? 81.怎样一页一页地查看一个大文件的内容呢? 82.mysql主从同步原理 83.主从同步的作用 1.OSI参考模型七层网络协议?物理层:定义计算机、网络设备、以及直接连接的介质、接口类型的标准,建立比特流的传输,用来组件物理网络的连接。 数据链路层:建立逻辑连接、进行硬件地址寻址,差错校验、差错恢复等功能。 网络层:进行逻辑地址寻址,实现不同网络之间的通信,定义了IP地址,为数据传输选择最近路径,实现不同网段之间通信。 传输层:可靠与不可靠的传输,实现程序与程序之间的连接,需要借助两个协议TCP(可靠)和UDP(不可靠),不同的程序对应不同的端口号,传输前的错误检测、流控。程序与程序直接的连接识别的是端口号,不同的程序有不同的编号,即为端口号。 会话层:建立、管理、建立会话、中止会话(如下载,断了后,还可续传)。 表示层:数据的表示、安全加密、压缩等方面功能(如:传输的文件类型不同,媒体、加密文件等表示形式不同)。 应用层:网络服务与最终用户的一个接口,用户接口。2.七层网络协议各层分别对应什么设备?物理层:网卡 数据链路层:交换机 网络层:路由器 传输层:防火墙 会话层:xxx 表示层; xxx 应用层:计算机3.七层网络协议主要各层次包含的协议?应用层: http FTP TFTP SMTP SNMP DNS 传输层:TCP UDP 网络层:ICMP IGMP IP ARP RARP4.常见协议的解释?1)HTTP协议:超文本传输协议。a)HTTP协议介绍: HTTP是一个基于TCP/IP通信协议来传递数据,属于应用层的面向对象协议,HTTP协议工作于客户端-服务端架构为上。浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求。Web服务器根据接收到的请求后,向客户端发送响应信息。 b)HTTP协议特点: 简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。 灵活:HTTP允许传输任意类型的数据对象。 无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。 支持B/S及C/S模式。 c)HTTP协议之url的组成部分: 协议部分:该URL的协议部分为http:,代表网页使用的是HTTP协议。可用多种协议,如HTTP、FTP等等。后面的//为分隔符。 域名部分:该URL的域名部分为www.aspxfans.com。在URL中,也能用IP地址来作为域名使用 端口部分:该URL的端口部分为:8080。跟在域名后面的是端口,域名和端口之间使用“:”作为分隔符。端口不是一个URL必须的部分,如果省略端口部分,则将采用默认端口 虚拟目录部分:该URL的虚拟目录部分是/news/。从域名后第一个 /开始,到最后的 /为止,它也并不是一个URL必须的部分。 文件名部分:该URL的文件名部分如:index.asp。文件名部分也不是一个URL必须的部分,若省略该部分,则用默认的文件名。 锚部分:该URL的锚部分是name。从“#”开始到最后,都是锚部分。锚部分也不是一个URL必须的部分。 参数部分:该URL的参数部分是boardID=5&ID=24618&page=1。从“?”开始到“#”为止之间的部分为参数部分,又称搜索部分、查询部分。参数可以允许有多个参数,参数与参数之间用“&”作为分隔符。 d)HTTP协议之url的常见请求方式: GET请求: 地址拼接在url上,不太安全。 POST请求: 提交到后台时候一般使用,比较安全。2)FTP协议: 文件传输协议。交互时使用,依赖于TCP,是面向连接,可靠的。端口:20和21(21是用于连接,20是用于传输)3)TFTP协议:简单文件传输协议。允许仅单向传输的文件,依赖于UDP,减少开销,不可靠。端口69.4)SMTP协议: 简单电子邮件传输协议。使用tcp协议的25端口发送邮件。邮件服务常见端口: 发邮件服务的端口:25.收邮件服务的端口(比较多): 109端口: POP2邮局协议2服务开放的,几乎被淘汰了,用于收邮件。110端口: POP3邮局协议3服务开放的,大多再用,用于收邮件。143端口: IMAP服务开放的,用于收邮件。5)SNMP协议: 简单网络管理协议。 SNMP是基于TCP/IP协议族的网络管理标准,是一种在IP网络中管理网络节点(如服务器、工作站、路由器、交换机等)的标准协议。SNMP能够使网络管理员提高网络管理效能,及时发现并解决网络问题以及规划网络的增长。网络管理员还可以通过SNMP接收网络节点的通知消息以及告警事件报告等来获知网络出现的问题6)DNS协议:域名解析协议。 如果说ARP协议是用来将IP地址转换为MAC地址,那么DNS协议则是用来将域名转换为IP地址(也可以将IP地址转换为相应的域名地址)。 DNS既使用TCP协议,也适用UDP协议,DNS在进行区域传输的时候使用TCP协议,其它时候则使用UDP协议。 DNS为什么既使用TCP又使用UDP? UDP报文的最大长度为512字节,而TCP则允许报文长度超过512字节。当DNS查询超过512字节时,协议的TC标志出现删除标志,这时则使用TCP发送。通常传统的UDP报文一般不会大于512字节。7)ICMP协议: internet控制消息(报文)协议。 ICMP协议是TCP/IP协议簇的一个子协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用 ICMP的作用就是让我们能够检测网路的连线状况﹐也能确保连线的准确性。ICMP 是个非常有用的协议﹐尤其是当我们要对网路连接状况进行判断的时候。8)IP协议: 将多个包教会网络连接起来,在源地址和目标地址之间传递数据包。IP不提供可靠的传输服务,不提供端到端或节点到节点间的确认。9)ARP协议:地址解析协议。将IP地址解析成mac地址。 是根据IP地址获取物理地址的一个TCP/IP协议。主机发送信息时将包含目标IP地址的ARP请求广播到网络上的所有主机,并接收返回消息,以此确定目标的物理地址;收到返回消息后将该IP地址和物理地址存入本机ARP缓存中并保留一定时间,下次请求时直接查询ARP缓存以节约资源。10)RARP协议:反向地址解析协议。将mac地址解析成IP地址。就是将局域网中某个主机的物理地址转换为IP地址.11)Telnet协议: 远程访问协议。5.各层的PDU数据单元?每一层都有PDU:协议数据单元 传输层的PDU:称为段, 网络层:称为报文或包 数据链路层:称为数据帧 物理层:称为比特流6.ping使用什么协议?ping是使用icmp协议(网络控制消息协议)7.tcp协议和udp协议区别?Tcp协议:是面向连接的协议,也就是说,在收发数据前,必须和对方建立可靠的连接。一个TCP连接必须要经过三次“握手”,和四次断开,才能建立起来,其中的过程非常复杂。效率低,但可靠传输。类似打电话。 Udp协议:是一个非连接的协议,传输数据之前源端和终端不建立连接,当它想传送时就简单地去抓取来自应用程序的数据,并尽可能快地把它扔到网络上。不需要三次握手和反复确认,效率高,但是不可靠,类似于发短信。8.TCP/IP协议分为哪四层,具体作用是什么?这4层分别为: 应用层:应用程序间沟通的层,如简单电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程访问协议(Telnet)等。 传输层:在此层中,它提供了节点间的数据传送,应用程序之间的通信服务,主要功能是数据格式化、数据确认和丢失重传等。如传输控制协议(TCP)、用户数据报协议(UDP)等,TCP和UDP给数据包加入传输数据并把它传输到下一层中,这一层负责传送数据,并且确定数据已被送达并接收。 互连网络层:负责提供基本数据封包传送功能,让每一数据包都能够到达目的主机(但不检查是否被正确接收),如网际协议(IP)。 网络接口层(主机-网络层):接收IP数据报并进行传输,从网络上接收物理帧,抽取IP数据报转交给下一层,对实际的网络媒体的管理,定义如何使用实际网络(如Ethernet、Serial Line等)来传送数据。9.CDN技术原理?CDN的全称是Content Delivery Network,即内容分发网络。CDN是构建在网络之上的内容分发网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率。CDN的关键技术主要有内容存储和分发技术。 CDN的基本原理是广泛采用各种缓存服务器,将这些缓存服务器分布到用户访问相对集中的地区或网络中,在用户访问网站时,利用全局负载技术将用户的访问指向距离最近的工作正常的缓存服务器上,由缓存服务器直接响应用户请求,其目的是使用户可就近取得所需内容,解决 Internet网络拥挤的状况,提高用户访问网站的响应速度。10.阿里云上cdn的配置?如:发版的apk的url地址(cdn),如:http://s2.duyao001.com/static_girl/apk/PoisonNovel_girl.apk 1)阿里云cdn上添加加速域名:s2.duyao001.com,同时生成一个cname的值,配置源站slb(slb后是3台maya的nginx机器)。(cname值就相当于和源站里配置的slb的IP) 2)配置加速域名和cname值的解析(解析类型:cname类型,s2.duyao001.com cname值) 即:加速域名和通过slb和nginx服务器对应。11.nginx做反向代理处理http请求的大致流程?1)当HTTP请求交给Nginx处理时,首先Nginx会取出header头中的Host (此处也就是 www.baidu.com),然后将其与所有的配置文件中的每个server段中的server_name进行匹配,以此决定到底有哪个server块来处理这个请求。(当然有时也可能一个Host与多个server块中的server_name都匹配,这时会根据匹配的优先级选择实际处理的server块,优先级这里就不再细说。) 2)当HTTP请求匹配到了配置文件中的server_name,这样接下来nginx就会根据header中的Request URI字段进行与location匹配,匹配到了 location / 。 3)接下来继续由nginx处理可以看到 proxy _pass http://xxx ; 这就是进行反向代理处理,使用的是nginx的upstream模块进行反向代理实现。 4)通过proxy _pass http://xxx中的xxx可找到对应的upstream块,然后,可以根据其中的server 后端web服务ip:8081;再次进行代理请求, 此时发送的GET包内容:Host字段 and Request URI字段 都和上面一样, 5)当代理HTTP请求到达后端web的服务器:8081后,若后端web也是nginx,则服务器会对其进行类似上面的nginx处理HTTP请求一样,进行server_name 和 location匹配,并将相应的请求资源返回代理服务器。 6)Nginx反向代理服务器接收到后端web服务器的返回资源后,再将其返回给客户端浏览器。 以上就是Nginx作反响代理时HTTP请求与处理的大致流程。12.TCP协议和IP协议之间的关系?TCP协议:传输控制协议。 IP协议:互联网络协议 TCP/IP协议的基本传输单位是数据包(Datagram)。 TCP协议负责把数据分成若干个数据包,并给每个数据包加上包头,包头上有相应的编号,以保证在数据接收端能将数据还原为原来的格式。 IP协议在每个包头上再加上接收端主机地址,这样数据找到自己要去的地方,如果传输过程中出现数据丢失、失真等情况,TCP协议会自动要求数据重传13.nginx只用IP不用域名能反向代理吗?域名和IP都是可以的,域名会多一步解析的过程,所以一般IP地址不经常变的,用IP地址更好一点。 配置ip,访问就固定到那个IP上,如果IP会变,配置域名更好。而且也跟业务需求有关系,有的网站可以用ip访问,但有的网站只能用域名,url不允许显示ip的访问,就需要配置域名代理。例子:upstream apachephp { server ip:8080; } server { listen 80; server_name www.quancha.cn; #或仅仅nginx的ip access_log logs/quancha.access.log main; error_log logs/quancha.error.log; root html; index index.html index.htm index.php; location / { proxy_pass http://apachephp; } }14.Tcp连接状态详解,(tcp重要的监控指标参考和判断监控状态是否正常)一个TCP连接的过程中,会经历一系列的状态变化,这些变化包括: LISTEN,SYN_SENT,SYN-RECEIVED,ESTABLISHED,FIN-WAIT-1,FIN-WAIT-2,CLOSE-WAIT,CLOSING,LAST-ACK,TIME-WAIT,CLOSED。 关于各个状态的一个简要说明: CLOSED:是一个虚构的状态,因为CLOSED的TCP连接的TCB(Transmission Control Block)已经释放掉了,所以此时这个TCP连接已经不存在了。 LISTEN:侦听并等待对端的TCP连接请求 SYN-SENT:发送SYN连接请求后,等待对端回复SYN请求 SYN-RECEIVED:收到来自对端的SYN请求,并回复SYN请求后,等待对端响应SYN请求的ACK消息 ESTABLISHED:代表连接建立,双方在这个状态下进行TCP数据交互,可以理解为系统的并发连接数(非web并发连接数) FIN-WAIT-1:发送FIN关闭连接请求后,等待对方响应FIN的ACK消息或者对端的FIN关闭请求 FIN-WAIT-2:等待对方FIN关闭请求 CLOSE-WAIT:等待本地用户(进程)发送FIN关闭请求给对端 CLOSING:当双方同时发送FIN关闭请求时,会进入CLOSING状态,等待对端发送FIN报文的响应ACK消息 LAST-ACK:收到对端FIN请求后,回复ACK及FIN并等待对方回复FIN的响应ACK消息,此时进入此状态 TIME-WAIT:该状态是为了确保对端收到了FIN请求的ACK响应,默认会等待两倍MSL时长(MSL:Maximum Segment Lifetime,即报文最大生存时间,超过这个时间的报文会被丢弃) 注意:监控tcp状态重要参数的意义: Tcp的连接状态对于我们web服务器来说是至关重要的,尤其是并发量ESTAB;或者是syn_recv值,假如这个值比较大的话我们可以认为是不是受到了攻击,或是是time_wait值比较高的话,我们要考虑看我们内核是否需要调优,太高的time_wait值的话会占用太多端口,要是端口少的话后果不堪设想。15.TCP状态参数中系统连接数(并发数)的统计:(带名称的统计和不带名称仅统计数量)两种方法命令:方法1:netstat命令 [root@kafka1 ~]# netstat -n |grep tcp tcp 0 0 192.168.43.163:22 192.168.43.1:55627 ESTABLISHED tcp 0 0 192.168.43.163:22 192.168.43.1:55221 ESTABLISHED tcp 0 0 192.168.43.163:22 192.168.43.1:55125 ESTABLISHED tcp 0 52 192.168.43.163:22 192.168.43.1:52096 ESTABLISHED tcp 0 0 192.168.43.163:22 192.168.43.1:55632 ESTABLISHED tcp 0 0 192.168.43.163:22 192.168.43.1:55223 ESTABLISHED [root@kafka1 ~]# netstat -n | awk '/^tcp/ {++S[$NF]} END {for(key in S) print key,"\t",S[key]}' ESTABLISHED 6 [root@kafka1 ~]# netstat -n |grep tcp |wc -l 6 [root@kafka1 ~]# netstat -n |grep -c tcp 6 方法2:ss命令 [root@kafka1 ~]# ss -ant |grep ESTAB ESTAB 0 0 192.168.43.163:22 192.168.43.1:55627 ESTAB 0 0 192.168.43.163:22 192.168.43.1:55221 ESTAB 0 52 192.168.43.163:22 192.168.43.1:55125 ESTAB 0 0 192.168.43.163:22 192.168.43.1:52096 ESTAB 0 0 192.168.43.163:22 192.168.43.1:55632 ESTAB 0 0 192.168.43.163:22 192.168.43.1:55223 [root@kafka1 ~]# ss -ant |grep ESTAB | awk 'NR>0 {++s[$1]} END {for(k in s) print k,s[k]}' ESTAB 6 [root@kafka1 ~]# ss -ant |grep ESTAB |wc -l 6 [root@kafka1 ~]# ss -ant |grep -c ESTAB 6 注意: grep -c 的作用类似grep | wc -l,不同的是,如果是查找多个文件,grep -c会统计每个文件匹配的行数,每行一个文件的列出来,而wc -l 则列出总的统计数字。16.web服务并发连接数查看统计(nginx,apahce,tomcat等,修改端口即可)? (带名称的统计和不带名称仅统计数量)方法1:netstat命令 [root@eagle-002-176 ~]# netstat -ant |grep ':80' |grep ESTABLISHED tcp 0 0 172.17.0.176:80 172.17.0.184:57594 ESTABLISHED tcp 0 0 172.17.0.176:80 172.17.133.220:43446 ESTABLISHED tcp 0 0 172.17.0.176:47737 100.100.105.50:80 ESTABLISHED tcp 0 0 172.17.0.176:80 172.17.133.220:43444 ESTABLISHED tcp 0 0 172.17.0.176:80 172.17.0.184:57598 ESTABLISHED tcp 0 0 172.17.0.176:80 172.17.133.220:43440 ESTABLISHED tcp 0 0 172.17.0.176:80 172.17.133.220:43438 ESTABLISHED tcp 0 0 172.17.0.176:36186 100.100.30.25:80 ESTABLISHED tcp 0 0 172.17.0.176:80 172.17.133.220:43442 ESTABLISHED tcp 0 0 172.17.0.176:80 172.17.0.184:57592 ESTABLISHED [root@eagle-002-176 ~]# netstat -ant |grep ':80' |grep ESTABLISHED |awk '{++S[$NF]} END {for(key in S) print key,"\t",S[key]}' ESTABLISHED 11 [root@eagle-002-176 ~]# netstat -ant |grep ':80' |grep -c ESTABLISHED 11 [root@eagle-002-176 ~]# netstat -ant |grep ':80' |grep ESTABLISHED |wc -l 11 方法2:ss命令 [root@eagle-002-176 ~]# ss -ant |grep :80 |grep ESTAB ESTAB 0 0 172.17.0.176:47737 100.100.105.50:80 ESTAB 0 0 172.17.0.176:80 100.116.191.141:46230 ESTAB 0 0 172.17.0.176:80 172.17.133.220:44202 ESTAB 0 0 172.17.0.176:80 172.17.133.220:44204 ESTAB 0 0 172.17.0.176:80 172.17.0.184:58202 ESTAB 0 0 172.17.0.176:80 172.17.0.184:58206 ESTAB 0 0 172.17.0.176:36186 100.100.30.25:80 [root@eagle-002-176 ~]# ss -ant |grep :80 |grep ESTAB |awk 'NR>0 {++s[$1]} END {for(k in s) print k,s[k]}' ESTAB 7 [root@eagle-002-176 ~]# ss -ant |grep :80 |grep -c ESTAB 7 [root@eagle-002-176 ~]# ss -ant |grep :80 |grep ESTAB |wc -l 717.阿里云rds仅仅有内网时候,如何访问?通过阿里云服务器搭建openvpn,连接vpn后方可访问。18.阿里云服务器之间使用内网连接的原因说明?服务器之间用内网连接,但客户端通过Navicat连接时候,可以用外网?也可连接vpn后使用内网连接mysql.云服务器公网带宽一般都是有限的。如果通过云服务器的公网网卡访问RDS,则往往会受带宽限制,导致整个系统性能很慢。 因此我们建议您通过云服务器的内网网卡访问RDS,从RDS控制台切换内网的方法如下: 1)在高安全访问模式下,支持内外网同时存在,您只需在RDS控制台点击“申请内网地址”即可; 2)在高性能访问模式下,只支持一种连接地址,您只需在RDS控制台点击“申请内网地址”,即可切换到内网地址,同时释放外网连接地址; 请注意增加内网连接后,如您的连接地址有变更,您的应用程序需要修改数据库的连接地址,并且需要重启应用程序。否则您的应用程序将无法访问RDS。19.新给你一台服务器,你会怎么做?1)确定你做什么用途,选择相应配置的服务器。 2)按照你的用途,确定你需要安装什么操作系统,什么版本。 3)对系统的基本措施的配置,如:linux系统,创建普通用户,修改ssh端口号,禁止root登录等安全措施,禁用非必要的服务启动. 4)确定安装什么应用服务,如tomcat+jdk环境或者lnmp或lamp环境等。 5)调试和测试。20.Zabbix监控都监控哪些?监控什么业务数据?怎么监控mysql的,redis?日志?1)监控linux系统的相关资源:cpu,内存,磁盘空间,网络流量,磁盘IO等信息。 2)自定义监控脚本,自定义键值,模板,监控一下内容:(1)监控tcp的各个状态参数,主要的有系统并发量(并发连接数-ESTABLISED),syn_recv(回应对端消息后,等待对端响应SYN请求的ACK消息数量),time_wait的值(为确保对端收到消息等待的时长) ss -ant | awk 'NR>1 {++s[$1]} END {for(k in s) print k,s[k]}' (2)监控web服务的并发连接数。 netstat -ant |grep ':80' |grep -c ESTABLISHED (3)监控web服务的端口和进程数: ps -ef |grep nginx/mysql |grep -v grep|wc -l (4)监控mysql服务的端口存活和相关重要参数指标:Com_select:等增、删、改、查或慢查询语句的个数,发送接收字节数等. (5)监控mysql的主从状态。 slave_is=( mysql -h xx -ustoryadmin -pxx -P3306 -e "show slave status\G"|grep -E "Slave_IO_Running|Slave_SQL_Running:"|awk '{print $2}') if [ "${slave_is[0]}" = "Yes" -a "${slave_is[1]}" = "Yes" ];then echo "ok -slave is running" exit 0 else echo "down -slave is not running" exit 2 fi [root@linux-node1 ~]# cat /etc/zabbix/zabbix_agentd.d/mysql_slave.conf UserParameter=mysql.slave,/usr/local/zabbix/share/zabbix/alertscripts/check_mysql_slave.sh | grep -c 'ok'(6)监控redis服务的端口存活和相关重要参数指标: 客户端连接数量,阻塞数量,内存消耗,cpu消耗,版本等参数 (7)监控系统用户数量: cat /etc/passwd |wc -l (8)编写脚本监控web服务或mysql等其他服务,若服务宕掉后能重启服务。(web本地脚本或zabbix服务远端监控脚本(能报警))21.Snmp的两种公司模式是什么?有什么特点?NMP是基于UDP的,有两种工作方式,一种是轮询,一种是中断. 轮询:网管工作站随机开端口轮询被管设备的UDP的161端口. 中断:被管设备将trap报文主动发给网管工作站的UDP的162端口. 特点:轮询一定能够查到被管设备是否出现了故障,但实时性不好. 中断实时性好(触发更新),但不一定能够将trap报文报告给网管工作站.22,什么是位置变量?shell的变量类型有哪些种?Linux Shell下的变量按其使用目的可分为4种类型: 环境变量:用于保存操作系统运行时使用的环境参数 位置变量:Bash将传递给脚本的参数保存在位置变量中,以便于在脚本中引用这些参数 预定义变量:由系统保留和维护的一组特殊的变量,这些变量通常用于保存程序运行状态等 自定义变量:由用户自行定义的变量,可用于用户编写的脚本,多个命令间的值传递等23.Vi编辑器的三种模式?命令模式、插入模式、末行模式。24.Linux文件系统中每个文件用什么来标识?用i节点来标识。25.Rpm有5种基本操作模式?RPM 有五种基本的操作方式(不包括创建软件包): 安装, 卸载, 升级, 查询,和验证。26.Icmp协议封装在什么协议中传递到目的主机?ICMP报文封装在IP协议数据单元中传送27.mysqldump备份数据时候数据库太大卡死怎么解决?mysqldump时,卡在那里不动了,怎么办?其实这个有三点要注意: 1)备份数据库时,最好先停掉相关服务,然后再进行数据库的备份。 2)查看磁盘是否正常,使用命令 df -h 3)查看mysql的进程,看是否有mysqldump进程卡在那里,如果有的话,杀掉。28.Docker的4种网络模式?1)host模式,使用--net=host指定。 #容器和宿主机共享网络,容器将不会虚拟出自己的网卡,配置自己的IP等,而是使用宿主机IP和端口 2)container模式,使用--net=container:NAME_or_ID指定。#新建容器和已经存在的容器仅共享一个网络(ip),其他应用等独立的网络 3)none模式,使用--net=none指定。 #无网络模式,用于没网时的测试.(不常用) 4)bridge模式(nat),使用--net=bridge指定,默认设置。 #桥接nat模式,先桥接到宿主机docker0网卡上,然后用snat转发成宿主机外网ip出去。29.Lvs,haproxy,nginx区别?LVS: 是基于四层的转发 HAproxy: 是基于四层和七层的转发,是专业的代理服务器 Nginx: 是WEB服务器,缓存服务器,又是反向代理服务器,可以做七层的转发 HAproxy和Nginx由于可以做七层的转发,所以URL和目录的转发都可以做 在很大并发量的时候我们就要选择LVS,像中小型公司的话并发量没那么大 选择HAproxy或者Nginx足已,由于HAproxy由是专业的代理服务器 配置简单,所以中小型企业推荐使用HAproxy30.磁盘报错“No space left on device”,但是 df -h 查看磁盘空间没满,请问为什么?可能是inode节点不够了,可以使用df -i查看inode节点的信息,看是否用完了。31.Linux系统中病毒怎么解决?1)最简单有效的方法就是重装系统 2)要查的话就是找到病毒文件然后删除 中毒之后一般机器cpu、内存使用率会比较高,机器向外发包等异常情况,排查方法简单介绍下: top 命令找到cpu使用率最高的进程 一般病毒文件命名都比较乱,可以用 ps aux 找到病毒文件位置 ,kill 可疑进程 rm -f 命令删除病毒文件 检查计划任务、开机启动项和病毒文件目录有无其他可以文件等 3)由于即使删除病毒文件不排除有潜伏病毒,所以最好是把机器备份数据之后重装一下32.查看http的并发请求数与其TCP连接状态 netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}' 还有ulimit -n 查看linux系统打开最大的文件描述符,这里默认1024 不修改这里web服务器修改再大也没用,若要用就修改很几个办法,这里说其中一个: 修改/etc/security/limits.conf - soft nofile 10240 - hard nofile 10240 #重启后生效33.运维安全需要注意哪些事项?1)创建普通用户,禁止root登录,合理使用sudo提权,只允许普通用户使用su命令切换到root 这样做的好处是双重密码保护,黑客就算知道了普通用户的密码,如果没有root密码,对服务器上攻击也比较有限. 2)修改ssh的默认端口22,因为ssh的端口是22,我们如果修改了该端口,他们就需要花费一点时间来扫描,稍微增加了点难度. 最好选择10000-65535内的端口. 3)使用一些类似DenyHosts预防SSH暴力破解的软件(不详细介绍). 其实就是一个python脚本或服务,查看非法的登录,次数超过设置的次数自动将ip加入黑名单。 4)删除特殊的不需要的账户和账户组. Linux提供了各种不同角色的系统账号,在系统安装完成后,默认会安装很多不必要的用户和用户组,如果不需要某些用户或者组,就要立即删除它,因为账户越多,系统就越不安全,很可能被黑客利用,进而威胁到服务器的安全。 Linux系统中可以删除的默认用户和组大致有如下这些: 可删除的用户,如adm,lp,sync,shutdown,halt,news,uucp,operator,games,gopher等。 可删除的组,如adm,lp,news,uucp,games,dip,pppusers,popusers,slipusers等。 5)关闭系统不需要的服务.只保留本机器使用的服务。 Linux在安装完成后,绑定了很多没用的服务,这些服务默认都是自动启动的。对于服务器来说,运行的服务越多,系统就越不安全,越少服务在运行,安全性就越好,因此关闭一些不需要的服务,对系统安全有很大的帮助 具体哪些服务可以关闭,要根据服务器的用途而定,一般情况下,只要系统本身用不到的服务都认为是不必要的服务。 例如:某台Linux服务器用于www应用,那么除了httpd服务和系统运行是必须的服务外,其他服务都可以关闭。下面这些服务一般情况下是不需要的,可以选择关闭: anacron、auditd、autofs、avahi-daemon、avahi-dnsconfd、bluetooth、cpuspeed、firstboot、gpm、haldaemon、hidd、ip6tables、ipsec、isdn、lpd、mcstrans、messagebus、netfs、nfs、nfslock、nscd、pcscd portmap、readahead_early、restorecond、rpcgssd、rpcidmapd、rstatd、sendmail、setroubleshoot、yppasswdd ypserv 6)密码安全策略,采用复杂的密码,或使用本地秘钥+密码方式认证登录 (本地秘钥可防止暴力破解) 7)删减系统登录欢迎信息,防止泄露系统版本等信息,给黑客机会。 可以修改或删除某些系统文件,需要修改或删除的文件有4个,分别是:/etc/issue、/etc/issue.net、/etc/redhat-release和/etc/motd。 /etc/issue和/etc/issue.net文件都记录了操作系统的名称和版本号。 /etc/redhat-release文件也记录了操作系统的名称和版本号,为了安全起见,可以将此文件中的内容删除。 /etc/motd文件是系统的公告信息。每次用户登录后,/etc/motd文件的内容就会显示在用户的终端。通过这个文件系统管理员可以发布一些软件或硬件的升级、系统维护等通告信息,但是此文件的最大作用就、是可以发布一些警告信息,当黑客登录系统后,会发现这些警告信息,进而产生一些震慑作用。看过国外的一个报道,黑客入侵了一个服务器,而这个服务器却给出了欢迎登录的信息,因此法院不做任何裁决。 8)锁定系统重要文件 chattr 在Linux下锁定文件的命令是chattr,通过这个命令可以修改ext2、ext3、ext4文件系统下文件属性,但是这个命令必须有超级用户root来执行。和这个命令对应的命令是lsattr,这个命令用来查询文件属性。 对重要的文件进行加锁,虽然能够提高服务器的安全性,但是也会带来一些不便。 虽然通过chattr命令修改文件属性能够提高文件系统的安全性,但是它并不适合所有的目录。chattr命令不能保护/、/dev、/tmp、/var等目录。 根目录不能有不可修改属性,因为如果根目录具有不可修改属性,那么系统根本无法工作: /dev在启动时,syslog需要删除并重新建立/dev/log套接字设备,如果设置了不可修改属性,那么可能出问题; /tmp目录会有很多应用程序和系统程序需要在这个目录下建立临时文件,也不能设置不可修改属性; /var是系统和程序的日志目录,如果设置为不可修改属性,那么系统写日志将无法进行,所以也不能通过chattr命令保护。 9)文件权限检查和修改 不正确的权限设置直接威胁着系统的安全,因此运维人员应该能及时发现这些不正确的权限设置,并立刻修正,防患于未然。34.服务器遭受攻击后的处理过程?安全总是相对的,再安全的服务器也有可能遭受到攻击。作为一个安全运维人员,要把握的原则是:尽量做好系统安全防护,修复所有已知的危险行为,同时,在系统遭受攻击后能够迅速有效地处理攻击行为,最大限度地降低攻击对系统产生的影响。 1)处理服务器遭受攻击的一般思路 系统遭受攻击并不可怕,可怕的是面对攻击束手无策,下面就详细介绍下在服务器遭受攻击后的一般处理思路。 (1)切断网络 所有的攻击都来自于网络,因此,在得知系统正遭受黑客的攻击后,首先要做的就是断开服务器的网络连接,这样除了能切断攻击源之外,也能保护服务器所在网络的其他主机。 (2)查找攻击源 可以通过分析系统日志或登录日志文件,查看可疑信息,同时也要查看系统都打开了哪些端口,运行哪些进程,并通过这些进程分析哪些是可疑的程序。这个过程要根据经验和综合判断能力进行追查和分析。下面会详细介绍这个过程的处理思路。 (3)分析入侵原因和途径 既然系统遭到入侵,那么原因是多方面的,可能是系统漏洞,也可能是程序漏洞,一定要查清楚是哪个原因导致的,并且还要查清楚遭到攻击的途径,找到攻击源,因为只有知道了遭受攻击的原因和途径,才能删除攻击源同时进行漏洞的修复。 (4)备份用户数据 在服务器遭受攻击后,需要立刻备份服务器上的用户数据,同时也要查看这些数据中是否隐藏着攻击源。如果攻击源在用户数据中,一定要彻底删除,然后将用户数据备份到一个安全的地方。 (5)重新安装系统 永远不要认为自己能彻底清除攻击源,因为没有人能比黑客更了解攻击程序,在服务器遭到攻击后,最安全也最简单的方法就是重新安装系统,因为大部分攻击程序都会依附在系统文件或者内核中,所以重新安装系统才能彻底清除攻击源。 (6)修复程序或系统漏洞 在发现系统漏洞或者应用程序漏洞后,首先要做的就是修复系统漏洞或者更改程序bug,因为只有将程序的漏洞修复完毕才能正式在服务器上运行。 (7)恢复数据和连接网络 将备份的数据重新复制到新安装的服务器上,然后开启服务,最后将服务器开启网络连接,对外提供服务。2)检查并锁定可疑用户 当发现服务器遭受攻击后,首先要切断网络连接,但是在有些情况下,比如无法马上切断网络连接时,就必须登录系统查看是否有可疑用户,如果有可疑用户登录了系统,那么需要马上将这个用户锁定,然后中断此用户的远程连接。 3)查看系统日志 查看系统日志是查找攻击源最好的方法,可查的系统日志有/var/log/messages、/var/log/secure等,这两个日志文件可以记录软件的运行状态以及远程用户的登录状态,还可以查看每个用户目录下的.bash_history文件,特别是/root目录下的.bash_history文件,这个文件中记录着用户执行的所有历史命令。 4)检查并关闭系统可疑进程 检查可疑进程的命令很多,例如ps、top等,但是有时候只知道进程的名称无法得知路径,此时可以通过如下命令查看: 首先通过pidof命令可以查找正在运行的进程PID,例如要查找sshd进程的PID,执行如下命令: [root@server ~]# pidof sshd 13276 12942 4284 然后进入内存目录,查看对应PID目录下exe文件的信息: [root@server ~]# ls -al /proc/13276/exe lrwxrwxrwx 1 root root 0 Oct 4 22:09 /proc/13276/exe -> /usr/sbin/sshd 这样就找到了进程对应的完整执行路径。如果还有查看文件的句柄,可以查看如下目录: [root@server ~]# ls -al /proc/13276/fd 通过这种方式基本可以找到任何进程的完整执行信息.5)检查文件系统的完好性 检查文件属性是否发生变化是验证文件系统完好性最简单、最直接的方法,例如可以检查被入侵服务器上/bin/ls文件的大小是否与正常系统上此文件的大小相同,以验证文件是否被替换,但是这种方法比较低级。此时可以借助于Linux下rpm这个工具来完成验证,操作如下:[root@server ~]# rpm -Va ....L... c /etc/pam.d/system-auth S.5..... c /etc/security/limits.conf S.5....T c /etc/sysctl.conf S.5....T /etc/sgml/docbook-simple.cat S.5....T c /etc/login.defs S.5..... c /etc/openldap/ldap.conf S.5....T c /etc/sudoers6)重新安装系统恢复数据 很多情况下,被攻击过的系统已经不再可信任,因此,最好的方法是将服务器上面数据进行备份,然后重新安装系统,最后再恢复数据即可。 数据恢复完成,马上对系统做上面介绍的安全加固策略,保证系统安全。35.已知 apache 服务的访问日志按天记录在服务器本地目录/app/logs 下,由于磁盘空间紧张现在要求只能保留最近 7 天的访问日志!请问如何解决? 请给出解决办法或配置或处理命令find /application/logs/ -type f -mtime +7 -name "*.log"|xargs rm -f 也可以使用-exec rm -f {} \;进行删除36.每天晚上 12 点,打包站点目录/var/www/html 备份到/data 目录下(最好每次备份按时间生成不同的备份包)cat a.sh #/bin/bash cd /var/www/ && /bin/tar zcf /data/html-`date +%m-%d%H`.tar.gz html/ crontab –e 00 00 * * * /bin/sh /root/a.sh37.一主多从,主库宕机,如何切换到从库,其他的从库如何处理?(验证没问题后修改的最终答案)1.确保所有的relay log全部更新完毕,在每个从库上执行stop slave io_thread; show processlist;直到看到Has read all relay log,则表示从库更新都执行完毕了 2.登陆所有从库,查看master.info文件,对比选择pos最大的作为新的主库。 [root@mysql ~]# sed -n "2,3p" /data/3307/data/master.info # 选择这个从库作为新主库 mysql-bin.000010 633 [root@mysql ~]# sed -n "2,3p" /data/3308/data/master.info mysql-bin.000010 631 3.登陆要提升的从库作为新主库,执行stop slave; 并进入数据库目录,删除master.info和relay-log.info文件, 配置my.cnf文件,开启log-bin,如果有log-slaves-updates和read-only则要注释掉,重启新主库服务,登录后执行reset master 4.创建用于同步的用户并授权slave,然后查看位置点和binlog日志名称show master status\G 5.登录另外一台从库,执行stop slave停止同步 6.在另一台从库连接到新的主库,change master 重新做主从。 7.另一台从库上执行start slave; show slave status\G可看到新的主从建立。 8.修改新的master数据,测试slave是否同步更新38.磁盘空间满了,删除了一部分 nginx access 日志,但是,发现磁盘空间还是满的,请问为什么?删除的日志信息,一部分可能还是被进程调用,因此,需要重启nginx服务来释放进程; 或者实际生产环境中使用>/log/access.log清空文件39.写一条192.168.10.0网段从网关192.168.9.1出去的路由?答:route add -net 192.168.10.0/24 gw 192.168.9.140.写一条放行80端口的防火墙规则?答:iptables -I INPUT -p tcp --dport 80 -j ACCEPT41.如何将本地80 端口的请求转发到8080 端口,当前主机IP 为192.168.2.1iptables -t nat -A PREROUTING -d 192.168.2.1 -p tcp -m tcp -dport 80 -j DNAT-to-destination 192.168.2.1:808042.使用tcpdump监听主机为192.168.1.1,tcp端口为80的数据,同时将输出结果保存输出到tcpdump.logtcpdump 'host 192.168.1.1 and port 80' > tcpdump.log43.实时抓取并显示当前系统中tcp 80端口的网络数据信息,请写出完整操作命令tcpdump -nn tcp port 8044.用tcpdump嗅探80端口的访问看看谁最高tcpdump -i eth0 -tnn dst port 80 -c 1000 | awk -F"." '{print $1"."$2"."$3"."$4}'| sort | uniq -c | sort -nr |head -2045.请举一个生产中实际的例子网站打开慢由于数据库慢导致的。数据库负载高,有慢查询,做联合索引案例 数据库负载高,有慢查询,分析web日志,可能有爬虫,封其ip46.办公室同事反馈网站打不开,请简述一下排查故障的思路或解决方法?答案: A. 先ping一下域名,看看网络是否通 B. Telnet 一下服务器的80端口,看是否通 C. 查看服务器流量是否正常,借助sar或者nload D. 查看服务器是否有负载,用w,查看服务是否开启,用ps E. 抓包查看数据包是否正常,看是否有攻击,用tcpdump F. 查看配置是否正确 47.服务器开不了机怎么解决一步步的排查A、造成服务器故障的原因可能有以下几点: (1)服务器电源有问题(例如:断电、电源线松动,人为原因) (2)服务器系统文件丢失,硬件问题,散热不良造成蓝屏或死机。 (3)服务器网络参数配置错误,物理链路原因等。 B、如何排查服务器故障的处理步骤如下: (1)先看服务器的电源指示灯是否亮,如果电源灯不亮,先检查确认电源没问题时,试着按开机键看是否能点亮服务器,如果不亮,先更换备用服务器以便快速恢复业务。 (2)如果服务器电源灯亮,接上显示器和键盘,查看服务器系统有异常,如蓝屏等,不能正常进入系统,先和数据确认,看是否能重启或者先更换备用服务器后恢复业务后再重启服务器修复。 (3)如果能正确使用用户名和密码登录系统,那么查看网卡是否正常,使用ifconfig命令查看网卡接口,使用ping测试网络连通。 (4)如果ping不通,检查网卡配置参数是否正确,网关,dns是否正确,或者重启网卡,再用ping测试。 (5)如果还是ping不通,应排除是否物理设备接入正常。 (6)如果ping通,那么继续排查其他问题,如还是不通,或者其他重大问题,更换备用服务器。48.网站做了负载均衡,发现有些用户访问的时候经常需要重新登录,是什么原因,怎么处理?答:这是因为用户登录后,他的请求被分发到了另外一台服务器上。 默认,服务存用户的session是在/tmp/下面,本来已经在A服务器上保存了session,可下次访问到了B服务器,而B服务器又不存在刚才保存的session信息,所以就会显示未登录。 要解决这个问题很容易,比较简单的做法是,做一个会话保持。比如可以设定1小时内用户的请求固定在一台服务器上。如果是nginx也可以设置ip_hash。当然最好的解决方案是,使用redis存取session,实现session共享。49.apache使用的3种工作模式是什么?Prefork :多路处理模块(MPM)实现了一个非线程型的、预派生的web服务器, 没有线程安全库, 要求将每个请求相互独立, 这样若一个请求出现问题就不会影响到其他请求. Worker:多线程多进程, 也使用了多进程,每个进程又有多个线程,以获得基于进程的的稳定性. Event: 把服务进程从连接中分离出来, 在服务器处理速度很快,可以用来处理更高负载.50.linux系统调优?linux启动过程?调优: 1)系统安全方面,见上面:xxx 2)系统内核参数方面,参考网上参数 3)系统文件打开数量:65535 Linux启动过程: 1)开机bios自检 2)MBR引导 3)grub引导菜单 4)加载内核kernel 5)启动init进程 6)读取inittab文件,执行rc.sysint.rc,xx脚本, 7)进入系统登录界面。51.dhcp服务的端口号?Dhcp服务端口是UDP 67端口和UDP 68端口,这两个端口是正常的DHCP服务端口,可以理解为一个发送,一个接收。 1)客户端向68端口广播请求配置,服务端用68端口接收信息。 2)服务器用67端口回应消息,向客户端发送回应数据。52.dns服务的端口号?Dns服务的端口是53,分为TCP和UDP协议,TCP是用来做区域传送,UDP是用来做DNS解析。53.IP/PV/UV的概念和区别?独立IP数:是指1天内多少独立的IP浏览了页面,即统计不同的IP浏览用户数量,同一个IP不管访问了几个页面,独立IP数都记为1,不同的IP浏览页面,计数会加1。多个用户(多个局域网IP)在同一个路由器(同一个广域网)内上网,可能被记录为一个独立IP访问者。如果用户不断更换IP,则有可能被多次统计。 PV访问量:即页面浏览量或点击量,衡量网站用户访问的网页数量,在一定统计周期内用户每打开或刷新一个页面就记录一次,多次打开或刷新同一页面则浏览量累计。 UV独立访客:统计1天内访问某站点的用户数(以cookie为依据),访问网站的一台电脑客户端为一个访客。可以理解为访问某网站的电脑的数量。网站判断来访电脑的身份是通过来访电脑的cookies实现的。如果更换了IP但不清除cookies,再访问相同网站,该网站的统计中UV数是不变的。如果用户不保存cookies访问,清除了cookies或者更换设备访问,计数会加1.0:00-24:00内相同的客户端多次访问只记为1个访客。54.正向代理、透明代理(也属于正向代理)和反向代理概念和CDN关系? 正向代理:代理内部主机上网,共享上网,缓存内网用户上网行为等功能,(客户端需要设置代理服务器的ip和代理端口) 透明代理(也属正向代理):和正向代理功能完全一致,(客户端不需要设置代理服务器的ip和代理端口,对用户透明的) 反向代理:从外部网络访问内部服务器,与正向代理相反,主要用于网站架构的缓存加速或CDN。 注意:正向代理是代理客户端,也称翻墙。 反向代理是代理服务器,也可做缓存加速和CDN,squid反向代理和nginx的反向代理都可做CDN 参考解释: CDN是内容分发网络(Content Delivery Network)。是为了解决用户请求响应过慢的问题。比如用户在黑龙江,服务器在海南,用户请求的速度可能受距离、带宽的影响。CDN将几台机器分发在全国各地,用户发出的请求会选择就近的CDN服务器进行处理。CDN简单的来说就是存储一些静态文件的一台或多台服务器,通过复制,缓存主服务器等方式,将文件保存其中。 反向代理一般就是指Nginx,是在主服务器之外加一层代理服务器,用户的请求会发送到代理服务器上,由代理服务器请求真正的服务器,获得到结果后再将结果返回给用户。反向代理主要的用处就是会加一层安全保障,所有的请求不是直接请求主服务器,而是代理服务器,这样就保护了主服务器不受侵害。第二个用处就是代理服务器会有缓存,命中缓存的请求可以不用再请55.三种代理类型:正向代理(不透明)、透明代理(也是正向代理)和反向代理。 56.正向代理和反向代理参考地址:https://www.cnblogs.com/yanjieli/p/7507456.html https://blog.csdn.net/wanderlustLee/article/details/8411005157.mysql主从同步延迟的原因及解决方法 在配置好了主从同步以后, 主服务器会把更新语句写入binlog, 从服务器的IO 线程(这里要注意, 5.6.3 之前的IO线程仅有一个,5.6.3之后的有多线程去读了,速度自然也就加快了)回去读取主服务器的binlog 并且写到从服务器的Relay log 里面,然后从服务器的 的SQL thread 会一个一个执行 relay log 里面的sql , 进行数据恢复。 1)主从同步的延迟的原因 我们知道, 一个服务器开放N个链接给客户端来连接的, 这样有会有大并发的更新操作, 但是从服务器的里面读取binlog 的线程仅有一个, 当某个SQL在从服务器上执行的时间稍长 或者由于某个SQL要进行锁表就会导致,主服务器的SQL大量积压,未被同步到从服务器里。这就导致了主从不一致, 也就是主从延迟。 2)主从同步延迟的解决办法 实际上主从同步延迟根本没有什么一招制敌的办法, 因为所有的SQL必须都要在从服务器里面执行一遍,但是主服务器如果不断的有更新操作源源不断的写入, 那么一旦有延迟产生, 那么延迟加重的可能性就会原来越大。 当然我们可以做一些缓解的措施。 a. 我们知道因为主服务器要负责更新操作, 他对安全性的要求比从服务器高, 所有有些设置可以修改,比如sync_binlog=1,innodb_flush_log_at_trx_commit = 1 之类的设置,而slave则不需要这么高的数据安全,完全可以讲sync_binlog设置为0或者关闭binlog,innodb_flushlog,innodb_flush_log_at_trx_commit 也 可以设置为0来提高sql的执行效率 这个能很大程度上提高效率。另外就是使用比主库更好的硬件设备作为slave。 b. 就是把,一台从服务器当度作为备份使用, 而不提供查询, 那边他的负载下来了, 执行relay log 里面的SQL效率自然就高了。 c. 增加从服务器喽,这个目的还是分散读的压力, 从而降低服务器负载。 3)判断主从延迟的方法 MySQL提供了从服务器状态命令,可以通过 show slave status 进行查看, 比如可以看看Seconds_Behind_Master参数的值来判断,是否有发生主从延时。 其值有这么几种:NULL - 表示io_thread或是sql_thread有任何一个发生故障,也就是该线程的Running状态是No,而非Yes.0 - 该值为零,是我们极为渴望看到的情况,表示主从复制状态正常58.网站无法打开的排查思路和方法?1)首先检查域名解析 ping www.baidu.com,然后查看返回结果,如果返回的结果是“Ping 请求找不到主机 www.sdfjkdasjfkl.com。请检查该名称,然后重试。”表示解析有问题,需要解析域名;如果能够正常的返回IP地址,需要判断解析的IP地址和客户提供的服务器IP地址是否一致,如果不一致,重新解析(CDN除外),如果一致,进行下一步检查。 2)检查服务器网络是否正常 通过ping 和telnet来判断服务器网络是否正常,如果不正常,让机房本地检查服务器网络;如果都正常,就需要通过远程连接到服务器检查服务器。 3)检查是否是服务器防火墙拦截。 在服务器上访问域名,看能否访问到网站,如果访问得到,可能是防火墙拦截,需要在防火墙中放行80端口,如果访问不到,就进行下一步检查web应用。 4)检查各服务器的负载情况,是否过高负载导致了网站无法访问。若是高负载引起,查明原因再处理。 5)首先检查web应用服务是否正常运行,如果没有正常运行,需要启动web服务;如果正常运行,需要检查web服务内的站点的配置或根据访问返回的状态码,如404,500等,并结合研发检查是否是程序代码问题59.有客户反馈网页打开慢,怎么排查?1)首先要检查确定网站服务器正常运行 2)可能是网站代码杂糅,也可能导致网站性能查,加载过慢 3)如果网站没做CDN加速,访问量激增,也可能导致网页加载慢 4)公网传输网络的带宽也影响网页加载速率 5)可能是没有缓存或缓存服务器有问题,导致查询数据库表慢。 6)可能是数据库的慢查询语句导致,需要优化sql语句。60.linux服务器上,用uptime、top查看系统的负载明显过高,排查处理思路?1)先确定是否是本身业务量高峰期或者活动期间,流量、并发突增导致的,这种情况可以增加后台服务器数量,以降低负载。 2)若不是本身业务量高峰期或活动期,但后台机器负载过高,可能是程序代码问题,top查看占用率负载高的进程的pid并分析处理。将线程栈打出来:jstack -F pid 查看出cup或内存占用高的进程的pid号:11275,查看是java进程,一般都是tomcat的java程序 yum install java-1.8.0-openjdk-devel #安装jstack命令 jstack -F 11275 #根据进程pid号查询所有线程信息,找到对应java代码,可能有死循环代码,查找原因修复即可 或:jstack -l 11275 > a.txt #导出PID对应的线程信息到文件 3)若是后台服务器某个机器负载过高,使用top查看是否有可疑进程,如果有可疑进程,可能是受到攻击,就kill该进程并删除该进程文件,可通过分析日志,找到进程来源,后期重要关注该可疑进程。 4)若后台服务器配置不一致,导致有的机器本身资源不够导致的负载过高问题,可以采用nginx中配置weight权重来环境该服务器的负载情况。 5)使用ps查看服务器是否有僵尸进程(这些进程已经死亡,但没有释放系统资源),若有,杀死僵尸进程。 6)有没有不必要运行的服务,将其关闭。 7)若是数据库负载过大,查看是否有缓存,或者缓存有什么问题,进行排查。61.找出僵死进程并杀死僵尸进程的方法?用下面的命令找出僵死进程 ps -A -o stat,ppid,pid,cmd | grep -e '^[Zz]' 命令注解: -A 参数列出所有进程 -o 自定义输出字段 我们设定显示字段为 stat(状态), ppid(进程父id), pid(进程id),cmd(命令)这四个参数 因为状态为 z或者Z 的进程为僵尸进程,所以我们使用grep抓取stat状态为zZ进程 Kill -9 各个僵死进程的pid ,僵尸进程太多了,杀的太累 一台服务器上产生了100多少僵死进程,而且每一僵死进程的父进程都不一样,如果用上面的方法,一条一条的杀,那还不得累死我啊。那么就应该想一条简单的命令,直接查找僵死进程,然后将父进程杀死~ ps -A -o stat,ppid,pid,cmd | grep -e '^[Zz]' | awk '{print $2}' | xargs kill -9 用ps -el看出的进程状态如果是Z,就是僵尸进程。 ps -ef|grep defunc可以找出僵尸进程. 62.运维应该关注哪些方面?1)网络方面,包括网络设备是否正常,流量方面是否稳定(突增突减,原因是什么,是否是高峰期或流量攻击) 2)服务器方面,主要对cpu,内存,磁盘空间,服务,进程,日志,文件,目录等管理。 3)应用系统,业务系统方面,服务进程是否正常,能否正常访问。 4)数据库方面。包括数据库的业务是否正常,主从状态是否正常,数据备份等 5)日常监控方面。系统运行状况,服务运行状况,服务器系统状态监控,日志监控等。 6)性能调优方面。 7)运维安全方面。63.现在给你三百台服务器,你怎么对他们进行管理?管理3百台服务器的方式: 1)设定跳板机,使用统一账号登录,便于安全与登录的考量。 2)使用salt、ansiable、puppet进行系统的统一调度与配置的统一管理。 3)建立简单的服务器的系统、配置、应用的cmdb信息管理。便于查阅每台服务器上的各种信息记录。 64.假如有人反应,调取后端接口时特别慢,你会如何排查?问清楚反应的人哪个服务应用或者页面调取哪个接口慢,叫他把页面或相关的URL发给你, 首先,最直观的分析就是用浏览器按F12,看下是哪一块的内容过慢(DNS解析、网络加载、大图片、还是某个文件内容等),如果有,就对症下药去解决(图片慢就优化图片、网络慢就查看内网情况等)。 其次,看后端服务的日志,其实大多数的问题看相关日志是最有效分析,最好用tail -f 跟踪一下日志,当然你也要点击测试来访问接口日志才会打出来。 最后,排除sql,,找到sql去mysql执行一下,看看时间是否很久,如果很久,就要优化SQL问题了,expain一下SQL看看索引情况啥的,针对性优化。数据量太大的能分表就分表,能分库就分库。 如果SQL没啥问题,那可能就是写的逻辑代码的问题了,一行行审代码,找到耗时的地方改造,优化逻辑。65.LVS、Nginx、HAproxy有什么区别?工作中你怎么选择?LVS: 是基于四层的转发 HAproxy: 是基于四层和七层的转发,是专业的代理服务器 Nginx: 是WEB服务器,缓存服务器,又是反向代理服务器,可以做七层的转发 区别: LVS由于是基于四层的转发所以只能做端口的转发,而基于URL的、基于目录的这种转发LVS就做不了 工作选择: HAproxy和Nginx由于可以做七层的转发,所以URL和目录的转发都可以做 在很大并发量的时候我们就要选择LVS,像中小型公司的话并发量没那么大 选择HAproxy或者Nginx足已,由于HAproxy由是专业的代理服务器 配置简单,所以中小型企业推荐使用HAproxy ## 66.tomcat和Resin有什么区别,工作中你怎么选择?区别:Tomcat用户数多,可参考文档多,Resin用户数少,可考虑文档少 最主要区别则是Tomcat是标准的java容器,不过性能方面比resin的要差一些 但稳定性和java程序的兼容性,应该是比resin的要好 工作中选择:现在大公司都是用resin,追求性能;而中小型公司都是用Tomcat,追求稳定和程序的兼容67.什么叫网站灰度发布?灰度发布是指在黑与白之间,能够平滑过渡的一种发布方式 AB test就是一种灰度发布方式,让一部用户继续用A,一部分用户开始用B 如果用户对B没有什么反对意见,那么逐步扩大范围,把所有用户都迁移到B上面 来 灰度发布可以保证整体系统的稳定,在初始灰度的时候就可以发现、调整问题,以保证其影响度68.简述DNS进行域名解析的过程?用户要访问www.baidu.com,会先找本机的host文件,再找本地设置的DNS服务器,如果也没有的话,就去网络中找根服务器,根服务器反馈结果,说只能提供一级域名服务器.cn,就去找一级域名服务器,一级域名服务器说只能提供二级域名服务器.com.cn,就去找二级域名服务器,二级域服务器只能提供三级域名服务器.baidu.com.cn,就去找三级域名服务器,三级域名服务器正好有这个网站www.baidu.com,然后发给请求的服务器,保存一份之后,再发给客户端69.mysql如何减少主从复制延迟?如果延迟比较大,就先确认以下几个因素: 1. 从库硬件比主库差,导致复制延迟 2. 主从复制单线程,如果主库写并发太大,来不及传送到从库 就会导致延迟。更高版本的mysql可以支持多线程复制 3. 慢SQL语句过多 4. 网络延迟 5. master负载 主库读写压力大,导致复制延迟,架构的前端要加buffer及缓存层 6. slave负载 一般的做法是,使用多台slave来分摊读请求,再从这些slave中取一台专用的服务器 只作为备份用,不进行其他任何操作.另外, 2个可以减少延迟的参数: –slave-net-timeout=seconds 单位为秒 默认设置为 3600秒 #参数含义:当slave从主数据库读取log数据失败后,等待多久重新建立连接并获取数据 –master-connect-retry=seconds 单位为秒 默认设置为 60秒 #参数含义:当重新建立主从连接时,如果连接建立失败,间隔多久后重试 通常配置以上2个参数可以减少网络问题导致的主从数据同步延迟70.mySQL数据库主从同步延迟解决方案最简单的减少slave同步延时的方案就是在架构上做优化,尽量让主库的DDL快速执行 还有就是主库是写,对数据安全性较高,比如sync_binlog=1,innodb_flush_log_at_trx_commit = 1 之类的设置,而slave则不需要这么高的数据安全,完全可以讲sync_binlog设置为0或者关闭binlog innodb_flushlog也可以设置为0来提高sql的执行效率。另外就是使用比主库更好的硬件设备作为slave71.ip访问情况,要求分析nginx访问日志,找出访问页面数量在前十位的ipcat access.log | awk '{print $1}' | uniq -c | sort -rn | head -1072.使用tcpdump监听主机为192.168.1.1,tcp端口为80的数据,同时将输出结果保存输出到tcpdump.logtcpdump 'host 192.168.1.1 and port 80' > tcpdump.log73.如何将本地80 端口的请求转发到8080 端口,当前主机IP 为192.168.2.1iptables -A PREROUTING -d 192.168.2.1 -p tcp -m tcp -dport 80 -j DNAT-to-destination 192.168.2.1:808074.实时抓取并显示当前系统中tcp 80端口的网络数据信息,请写出完整操作命令tcpdump -nn tcp port 80 tcpdump -i eth0 udp port 53 -nn75.用tcpdump嗅探80端口的访问看看谁最高tcpdump -i eth0 -tnn dst port 80 -c 1000 | awk -F"." '{print $1"."$2"."$3"."$4}'| sort | uniq -c | sort -nr |head -2076.写一个脚本,实现判断192.168.1.0/24网络里,当前在线的IP有哪些,能ping通则认为在线#!/bin/bash for ip in `seq 1 255` do { ping -c 1 192.168.1.$ip > /dev/null 2>&1 if [ $? -eq 0 ]; then echo 192.168.1.$ip UP else echo 192.168.1.$ip DOWN fi }& done wait77.Tomcat工作模式?笔者回答: Tomcat是一个JSP/Servlet容器。 其作为Servlet容器,有三种工作模式:独立的Servlet容器、进程内的Servlet容器和进程外的Servlet容器。 进入Tomcat的请求可以根据Tomcat的工作模式分为如下两类: Tomcat作为应用程序服务器:请求来自于前端的web服务器,这可能是Apache, IIS, Nginx等; Tomcat作为独立服务器:请求来自于web浏览器;78.如何看当前Linux系统有几颗物理CPU和每颗CPU的核数?cat /proc/cpuinfo|grep -c 'physical id' 4 [root@centos6 ~ 10:56 #36]# cat /proc/cpuinfo|grep -c 'processor' 479.如何实时查看网卡流量为多少?如何查看历史网卡流量?安装sysstat包,使用sar命令查看。 yum install -y sysstat #安装sysstat包,获得sar命令 sar -n DEV #查看网卡流量,默认10分钟更新一次 sar -n DEV 1 10 #一秒显示一次,一共显示10次 sar -n DEV -f /var/log/sa/sa22 #查看指定日期的流量日志80.ps 查看系统进程时,有一列为STAT,如果当前进程的stat为Ss 表示什么含义?如果为Z表示什么含义?S表示正在休眠;s表示主进程;Z表示僵尸进程。81.怎样一页一页地查看一个大文件的内容呢?通过管道将命令”cat file_name.txt” 和 ’more’ 连接在一起可以实现这个需要. [root@localhost ~]# cat file_name.txt | more82.mysql主从同步原理 Mysql的主从同步是异步的同步,从库需要两个线程来完成,其中一个线程叫sql线程,另外一个叫IO线程,在主库上由一个IO线程负责完成。 要想完成主从同步,主库必须要开启bin-log, 当用户请求主库时候,如果有增删改时,会把数据写入主库数据文件里,把更新的结果写到bin-log里面,主从同步是从库找主库同步,从库start slave后,由从库的IO向主库发起请求,主库接收到请求后,会通过用户名,密码,IP地址,端口验证请求是否合法,如果都正确就允许从库连接,从库同步时从change master处查出信息,会告诉主库,我要从你的哪个位置哪个点给我发bin-log。 主库的IO线程收到请求后,会根据从库需求范围发送bin-log,当从库的IO线程收到bin-log后,会把bin-log日志写到自己的某个地点(中继日志),然后更新本地文件的master info位置点, 接下来IO线程继续向主库请求,说把当前位置点以后的bin-log再发给我,然后把bin-log再放入中继日志,再更新本地的master info中位置点,如此循环的把主库的bin-log写入本地的中继日志。 而本地的sql线程,时刻监控中继日志,一旦有bin-log,就把中继日志的bin-log语句,经过转换写到本地的数据文件中,这样,就是IO线程不断的从主库取得bin-log,放入本地的中继日志,sql线程不断的从本地中继日志中取bin-log,经转换存入本地数据文件中,实现了主从数据同步。 注意:从库开启start slave之前,要不位置点之前的主库上的数据先导到从库上,否则,只是在位置点之后主从数据同步,位置点之前的数据就不同步了, 所以,要在开关开启之前,先把位置点之前的数据让主从一致,这样无论何时主从数据都会一致的。这个位置点就是从库上:master_log_file=”” ,master_log_pos=””这里的位置点。83.主从同步的作用 Mysql主从同步部署可以使主从服务器互为备份,大大的加强了数据库架构的健壮性,解决数据库单点故障,当主服务器出现问题时,我们可以人工或自动切换到从服务器继续提供服务。 主从部署的同时加上读写分离,通过在从服务器上仅仅处理用户的查询请求,在主服务器上处理用户的写请求,分担数据库压力。面试题参考链接: https://www.cnblogs.com/sunyllove/p/9578620.html https://blog.csdn.net/Ki8Qzvka6Gz4n450m/article/details/79227843 https://blog.csdn.net/qq_25934401/article/details/81532276
2025年04月10日
13 阅读
0 评论
0 点赞
2025-03-04
第1阶段综合测试面试题-答案
M63期第一阶段综合测试面试题 学号: 姓名: 成绩: 说明:共12题需要作答,每题10分,共120分。其中前十题是必答题,满分100,60分及格。第11/12两题为附加题,希望同学们能认真对待每一题。最后阅读篇为运维面试情况分析,请认真阅读。1.如何在 /data 下找到大小超过1G的文件并且inode修改时间在7天以前的普通文件,找到后结合xargs 把他移动到 /backup目录下find /data -size +1G -ctime +7 -type f | xargs mv -t /backup find /data -size +1G -ctime +7 -type f -print0 | xargs -0 mv -t /backup答案解析: /data :指定查找的起始目录为 /data。 -size +1G :查找文件大小大于 1GB 的文件。 -ctime +7 :查找 inode 信息修改时间超过 7 天的文件。 -type f :只查找普通文件。 xargs 部分: xargs 用于将 find 命令的输出作为参数传递给 mv 命令。 mv -t /backup :-t 选项用于指定目标目录,这里将满足条件的文件移动到 /backup 目录下。 知识点: atime ,ctime ,mtime atime:文件最后一次被访问的时间,即文件内容被读取的时间。如使用 cat 命令查看文件内容,或在文本编辑器中打开文件查看,都会更新 atime。 修改时间(mtime,:是文件内容最后一次被修改的时间。当文件内容发生变化并保存时,mtime 会更新,如编辑文档后保存或用程序修改文件数据等操作。 状态改变时间(ctime,Change Time):表示文件的 inode 节点信息最后一次改变的时间。文件权限、所有者、所属组等元数据变化,或文件内容变化引起 inode 信息更新时,ctime 都会更新。例如执行 chown 改变文件所有者,或文件系统因写入操作更新 inode 的分配信息等情况。 注意: 目标目录存在性:确保 /backup 目录已经存在,否则 mv 命令会报错。 文件名包含特殊字符:如果文件名中包含空格、换行符等特殊字符,上述命令可能会出现问题。可以使用 -print0 和 xargs -0 来处理包含特殊字符的文件名,示例如下:2. 已知 apache 服务的访问日志按天记录在服务器本地目录/app/logs 下,由于磁盘空间紧张现在要求只能保留最近 7 天的访问日志!请问如何解决? 请给出解决办法或配置或处理命令? find /app/logs -type f -mtime +7 -delete find /app/logs/ -type f -mtime +7 -name "*.log"|xargs rm -f ##也可以使用-exec rm -f {} \;进行删除 crontab -e 0 0 * * * find /app/logs -type f -mtime +7 -delete 分时日月周3. 每天晚上 12 点,打包站点目录/var/www/html 备份到/data 目录下(最好每次备份按时间生成不同的备份包)cat /root/backup_script.sh #!/bin/bash cd /var/www/ && /bin/tar -zcf /data/html-`date +%m-%d%H`.tar.gz html/ # crontab –e 00 00 * * * /bin/sh /root/backup_script.sh 或着:【29号学员的答案】 0 0 * * * tar -czf /data/backup_$(date+\%Y\%m\%d_\%H\%M\%S).tar.gz -C /var/www/html 或者:【6号学员的答案】 (1)写脚本 #!/bin/bash # 定义站点目录和备份目录 SOURCE_DIR="/var/www/html" BACKUP_DIR="/data" # 获取当前日期时间,用于生成备份文件名 DATE=$(date +"%Y%m%d%H%M%S") BACKUP_FILE="$BACKUP_DIR/backup_$DATE.tar.gz" # 打包站点目录到备份文件 tar -zcvf $BACKUP_FILE $SOURCE_DIR # 检查打包是否成功 if [ $? -eq 0 ]; then echo "备份成功:$BACKUP_FILE" else echo "备份失败" fi (2)设置权限 chmod +x /root/backup_script.sh (3)定时任务 crontab -e (4)执行脚本4. 写一条192.168.10.0网段从网关192.168.9.1出去的路由?route add -net 192.168.10.0/24 gw 192.168.9.1 或者: ip route add 192.168.10.0/24 via 192.168.9.15. 找出僵死进程并杀死僵尸进程的方法?用下面的命令找出僵死进程 ps -A -o stat,ppid,pid,cmd | grep -e '^[Zz]' 命令注解: -A 参数列出所有进程 -o 自定义输出字段 我们设定显示字段为 stat(状态), ppid(进程父id), pid(进程id),cmd(命令)这四个参数,因为状态为 z或者Z 的进程为僵尸进程,所以我们使用grep抓取stat状态为zZ进程 Kill -9 各个僵死进程的pid 。 #如果一台服务器上产生了100多少僵死进程,而且每一僵死进程的父进程都不一样,如果用上面的方法,一条一条的杀,那还不得累死。那么就应该想一条简单的命令,直接查找僵死进程,然后将父进程杀死~ 所以最佳答案: ps -A -o stat,ppid,pid,cmd | grep -e '^[Zz]' | awk '{print $2}' | xargs kill -9 用ps -el看出的进程状态如果是Z,就是僵尸进程。6. 写一个脚本,实现批量添加20个用户,用户名为:user1-20,密码为user后面跟着5个随机字符或数字[root@rock8 ~]# cat useradd.sh name="user" for number in $(seq 1 20) do password=$(cat /dev/urandom | head -1 | md5sum | head -c 5) useradd $name$number echo "user$password" | passwd --stdin user$number &> /dev/null echo "$name$number user$password" >> userinfo.txt done 解读: /dev/urandom 是 Linux 系统中的一个特殊字符设备文件,其作用是提供随机字节流。它从系统的熵池中获取随机数据,能满足大多数对随机性要求不是特别高的场景。 cat 命令用于读取文件内容并输出到标准输出。所以 cat /dev/urandom 会不断输出 /dev/urandom 中的随机字节流。 2. | head -1 | 是管道符号,它的功能是将前一个命令的输出作为后一个命令的输入。 head -1 表示从输入中提取第一行内容。由于 /dev/urandom 输出的是连续的字节流,没有明显的行分隔,这里提取的 “第一行” 实际上是连续的一段随机数据。 3. | md5sum md5sum 是一个用于计算文件或输入数据的 MD5 哈希值的工具。它会对输入的随机数据进行哈希计算,生成一个 32 位的十六进制字符串。MD5 哈希函数是一种单向哈希函数,相同的输入会产生相同的输出,但不同的输入几乎不可能产生相同的输出,这有助于增加随机性。 4. | head -c 5 同样使用了管道符号,将 md5sum 的输出作为 head -c 5 的输入。 head -c 5 表示从输入中提取前 5 个字符。最终得到的这 5 个字符就是生成的随机字符串。 5. password=$(...) $() 是命令替换的语法,它会先执行括号内的命令,然后将命令的输出结果赋值给变量 password。扩展面试:你写过的shell脚本有多少?说一个你认为比较复杂的shell脚本。 7. 当根目录硬盘写满时,如何定位到那个目录使用硬盘最多的?如果发现某个大文件导致空间占满,如何快速删除释放空间答:du –sh /* 命令即可,找到根目录下占用磁盘较大的目录之后,再进入此目录继续执行du –sh * 命令一直找到最终目录即可。本题还可以配合--max-depth参数来查找。 大文件导致空间占满,快速释放空间。 cat /dev/null > xx.log 或者用echo "" > xx.log 不要用rm -rf rm后的空间不会立即释放8. TCP/IP协议三次握手的过程四次挥手三次握手: 第一次握手是客户端为了建立连接,客户端发送SYN报文,且seq设置为零,并进入SYN_SEDN状态,等待服务器确认 第二次握手是服务器端对收到的SYN报文进行确认,同时发送ACK响应报文,且响应报文的ACK设置为1. 服务器端也需要发送SYN请求,SYN同样设置为0进行发送。 服务器这时候进入SYN_RECV状态 第三次握手是客户端收到了服务器端发来的ack和SYN, 确认完了之后将seq设置为1,ack设置为1, 向服务器发送ACK报文,这个报文发送完毕后,客户端和服务器端就都进入了ESTABLISHED状态,完成了三次握手 四次挥手的过程: 四次挥手也是客户端开始的 第一次挥手是客户端向服务器发送一个FIN报文段,将seq设置为160,ack设置为112, 此时客户端进入FIN_WAIT_1状态,表示客户单没有数据要发送了,请求关闭连接 第二次是服务器端收到了客户端发来的FIN报文,并向客户端回一个ACK报文,ack设置为1,seq设置为112; 服务器进入CLOSE_WAIT状态,客户端收到服务器返回的ACK报文后,进入FIN_WAIT_2状态 第三次挥手,服务器会观察自己是否还有数据没有发送给客户端的,如果没有,就发送FIN报文给客户端,请求关闭连接,同时服务器进入LAST_ACK状态; 第四次挥手是客户端收到了服务器端发来的FIN报文段,并向服务器发送ACK报文,将sep设置为161,ack设置为113, 然后客户端进入TIME_WAIT状态,服务器收到客户端的ACK报文以后,就关闭连接; 此时,客户端等待2MSL后依然没有收到回复,就证明server端已经关闭了,客户端也就可以正常关闭连接了9 网站访问慢的故障排查1、首先要确定是用户端还是服务端的问题。当接到用户反馈访问慢,那边自己立即访问网站看看,如 果自己这边访问快,基本断定是用户端问题,就需要耐心跟客户解释,协助客户解决问题。 · 2、检查服务器负载情况。 查看服务器硬件(网络、CPU、内存)的消耗情况。如果是购买的云主机,比如阿里云,可以登录阿里云平台提供各方面的监控,比如 CPU、内存、带宽的使用情况。 · 3、如果发现硬件资源消耗都不高,那么检查与网站相关联的服务 是否异常。比如 a) 网站与数据库的连接是否变慢 查看数据库日志文件,慢查询日志等,看看是不是某条 SQL 语句查询慢,导致网站访问慢。 b) 网站与存储的访问是否变慢 c) 查看负载均衡到web是否变慢 d) 在web网站上放一个静态网页和php动态 查看是动态数据慢还是静态数据慢 4) 使用chrome浏览器开发者工具排查网站打开慢的情况 - 打开谷歌浏览器,键盘上输入F12,打开开发者工具 然后选择【network】-> ctrl+F5 强制刷新,查看资源的加载情况,然后点击time进行排序,会找到消耗时间最长的资源 5) 死链问题,网站改版或者升级后,残留下来的不存在的页面,而这些页面又被百度给收录了,用户通过这些页面登陆会出现空白或者打不开。 我们可以将死链加入404文件并提交给百度站长平台。 6) 访问量过高,并发过大,也会导致服务器卡顿,这个时候可以考虑加缓存或增加服务器。 但总结下来,无非就是,网络问题: 系统问题,数据库问题, 访问慢的服务器与其他关联的服务器或者服务的调用之间出现了问题,被攻击。 ? 怎么去解决? · 1、如果是出口带宽问题,那么久申请加大出口带宽· 2、如果慢查询比较多,那么就要开发人员或 DBA 协助进行 SQL 语句的优化。 · 3、如果数据库响应慢,考虑可以加一个数据库缓存,如 Redis 等等。然后也可以搭建MySQL 主从, 一台 MySQL 服务器负责写,其他几台从数据库负责读。 · 4、申请购买 CDN 服务,加载用户的访问。 · 5、如果访问还比较慢,那就需要从整体架构上进行优化咯。做到专角色专用,多台服务器提供同一个 服务。10. 办公室同事反馈网站打不开,请简述一下排查故障的思路或解决方法?参考: A. 先ping一下域名,看看网络是否通 B. Telnet 一下服务器的80端口,看是否通 C. 查看服务器流量是否正常,借助sar或者nload D. 查看服务器是否有负载,用w,查看服务是否开启,用ps E. 抓包查看数据包是否正常,看是否有攻击,用tcpdump F. 查看配置是否正确 拓展: 网站无法打开的排查思路和方法? 1)首先检查域名解析 ping www.baidu.com,然后查看返回结果,如果返回的结果是“Ping 请求找不到主机 www.sdfjkdasjfkl.com。请检查该名称,然后重试。”表示解析有问题,需要解析域名;如果能够正常的返回IP地址,需要判断解析的IP地址和客户提供的服务器IP地址是否一致,如果不一致,重新解析(CDN除外),如果一致,进行下一步检查。 2)检查服务器网络是否正常 通过ping 和telnet来判断服务器网络是否正常,如果不正常,让机房本地检查服务器网络;如果都正常,就需要通过远程连接到服务器检查服务器。 3)检查是否是服务器防火墙拦截。 在服务器上访问域名,看能否访问到网站,如果访问得到,可能是防火墙拦截,需要在防火墙中放行80端口,如果访问不到,就进行下一步检查web应用。 4)检查各服务器的负载情况,是否过高负载导致了网站无法访问。若是高负载引起,查明原因再处理。 5)首先检查web应用服务是否正常运行,如果没有正常运行,需要启动web服务;如果正常运行,需要检查web服务内的站点的配置或根据访问返回的状态码,如404,500等,并结合研发检查是否是程序代码问题11. 结合目前所学回答:linux 系统中病毒怎么解决?1)最简单有效的方法就是重装系统 2)要查的话就是找到病毒文件然后删除 中毒之后一般机器cpu、内存使用率会比较高,机器向外发包等异常情况,排查方法简单介绍下: top 命令找到cpu使用率最高的进程 一般病毒文件命名都比较乱,可以用 ps aux 找到病毒文件位置 ,kill 可疑进程 rm -f 命令删除病毒文件 检查计划任务、开机启动项和病毒文件目录有无其他可疑文件等 3)由于即使删除病毒文件不排除有潜伏病毒,所以最好是把机器备份数据之后重装一下12. 结合目前所学,运维安全需要注意哪些事项?1)创建普通用户,禁止root登录,合理使用sudo提权,只允许普通用户使用su命令切换到root 这样做的好处是双重密码保护,黑客就算知道了普通用户的密码,如果没有root密码,对服务器上攻击也比较有限. 2)修改ssh的默认端口22,因为ssh的端口是22,我们如果修改了该端口,他们就需要花费一点时间来扫描,稍微增加了点难度. 最好选择10000-65535内的端口. 3)使用一些类似DenyHosts预防SSH暴力破解的软件(不详细介绍). 其实就是一个python脚本或服务,查看非法的登录,次数超过设置的次数自动将ip加入黑名单。 4) 删除特殊的不需要的账户和账户组. Linux提供了各种不同角色的系统账号,在系统安装完成后,默认会安装很多不必要的用户和用户组,如果不需要某些用户或者组,就要立即删除它,因为账户越多,系统就越不安全,很可能被黑客利用,进而威胁到服务器的安全。 Linux系统中可以删除的默认用户和组大致有如下这些: 可删除的用户,如adm,lp,sync,shutdown,halt,news,uucp,operator,games,gopher等。 可删除的组,如adm,lp,news,uucp,games,dip,pppusers,popusers,slipusers等。 5)关闭系统不需要的服务.只保留本机器使用的服务。 Linux在安装完成后,绑定了很多没用的服务,这些服务默认都是自动启动的。对于服务器来说,运行的服务越多,系统就越不安全,越少服务在运行,安全性就越好,因此关闭一些不需要的服务,对系统安全有很大的帮助 具体哪些服务可以关闭,要根据服务器的用途而定,一般情况下,只要系统本身用不到的服务都认为是不必要的服务。 例如:某台Linux服务器用于www应用,那么除了httpd服务和系统运行是必须的服务外,其他服务都可以关闭。下面这些服务一般情况下是不需要的,可以选择关闭: anacron、auditd、autofs、avahi-daemon、avahi-dnsconfd、bluetooth、cpuspeed、firstboot、gpm、haldaemon、hidd、ip6tables、ipsec、isdn、lpd、mcstrans、messagebus、netfs、nfs、nfslock、nscd、pcscd portmap、readahead_early、restorecond、rpcgssd、rpcidmapd、rstatd、sendmail、setroubleshoot、yppasswdd ypserv 6)密码安全策略,采用复杂的密码,或使用本地秘钥+密码方式认证登录 (本地秘钥可防止暴力破解) 7)删减系统登录欢迎信息,防止泄露系统版本等信息,给黑客机会。 可以修改或删除某些系统文件,需要修改或删除的文件有4个,分别是:/etc/issue、/etc/issue.net、/etc/redhat-release和/etc/motd。 /etc/issue和/etc/issue.net文件都记录了操作系统的名称和版本号。 /etc/redhat-release文件也记录了操作系统的名称和版本号,为了安全起见,可以将此文件中的内容删除。 /etc/motd文件是系统的公告信息。每次用户登录后,/etc/motd文件的内容就会显示在用户的终端。通过这个文件系统管理员可以发布一些软件或硬件的升级、系统维护等通告信息,但是此文件的最大作用就、是可以发布一些警告信息,当黑客登录系统后,会发现这些警告信息,进而产生一些震慑作用。看过国外的一个报道,黑客入侵了一个服务器,而这个服务器却给出了欢迎登录的信息,因此法院不做任何裁决。 8)锁定系统重要文件 chattr 在Linux下锁定文件的命令是chattr,通过这个命令可以修改ext2、ext3、ext4文件系统下文件属性,但是这个命令必须有超级用户root来执行。和这个命令对应的命令是lsattr,这个命令用来查询文件属性。 对重要的文件进行加锁,虽然能够提高服务器的安全性,但是也会带来一些不便。 虽然通过chattr命令修改文件属性能够提高文件系统的安全性,但是它并不适合所有的目录。chattr命令不能保护/、/dev、/tmp、/var等目录。 根目录不能有不可修改属性,因为如果根目录具有不可修改属性,那么系统根本无法工作: /dev在启动时,syslog需要删除并重新建立/dev/log套接字设备,如果设置了不可修改属性,那么可能出问题; /tmp目录会有很多应用程序和系统程序需要在这个目录下建立临时文件,也不能设置不可修改属性; /var是系统和程序的日志目录,如果设置为不可修改属性,那么系统写日志将无法进行,所以也不能通过chattr命令保护。 9)文件权限检查和修改 不正确的权限设置直接威胁着系统的安全,因此运维人员应该能及时发现这些不正确的权限设置,并立刻修正,防患于未然。以下是必读篇。无需作答【运维面试】面试官: 说一下OSI七层模型吧?前言运维面试过程中经常会被问到OSI七层模型,目前大多数的运维,对于OSI七层模型,都是一知半解,甚至就根本不知道OSI七层模型。运维这个岗位涉及的面广,有的公司需要运维懂点网络,大部分公司有自己的网络工程师,对于运维的网络要求其实并不高。不过面试还是要会的,毕竟网络是运维的基础OSI的七层协议主要包括: 物理层(physical layer) 数据链路层(data link layer) 网络层(network layer) 运输层(transport layer) 会话层(session layer) 表示层(presentation layer) 应用层(application layer) 每一层的协议: 物理层:RJ45、CLOCK、IEEE802.3(中继器、集线器),ISO2110,光导纤维,双绞线 数据链路层:wi-fi, ATM, DTM,令牌环,以太网,PPPoE ,PPP、FR、HDLC、VLAN、MAC(网桥、 交换机) 网络层:IP、ICMP、ARP、RARP、OSPF、IPX、RIP、IGRP(交换机) 传输层:TCP(T/TCP · Fast Open) UDP DCCP SCTP RSVP PPTP TLS/SSL 会话层:NFS、SQL、NETBIOS、RPC 表示层:JPEG、MPEG、ASII 应用层:DHCP(v6) DNS FTP Gopher HTTP(SPDY、HTTP/2) IMAP4 IRC NNTP XMPP POP3 SIP SMTP SNMP SSH TELNET RPC RTCP RTP RTSP SDP SOAP GTP STUN NTP SSDP故事版OSI七层模型一封邮件的自白:我是一封邮件, 目的地是广州的一个地址,我来到应用层,找到了SMTP邮件协议,来到表示层的进行处理。表示层要把主人写好的邮件,进行编码和转换,变成我们传输通道里的伙伴们都认识的一种形式。等待表示层把数据处理完后,其实就已经把数据都知准备好了,这时候我会联系我的代言人会话层进行与主机通话,相当于打电话那样的,目的是把我的主机和服务器建立连接,方便我把数据传输去。主机: 你好,我是主机,请问你是邮件服务器吗?,我需要和你建立连接。服务器:你好,我是邮件服务器,连接已经建立。建立连接后,就开始传输数据了,传输层的任务比较艰巨,他不但要传输数据,还要处理在传输过程中可能出现的异常,比如数据丢包。 在传输的过程中,数据就开始顺着网络层指定的路线进行传输了, 网络错综负责,稍有不慎就走错路,所以网络层在这里就起到了规划路线的作用,相当于快递公司,告诉数据从哪里走最近。数据到了广州后,就到了数据链路层的手里,数据链路层相当于快递员, 快递员可以精准的找到每个本地网络中的设备,然后把数据精准到传送到相应的设备上去。剩下的就是物理层了,物理层主要做信号转换和物理传输。相关面试题:tcp 和udp 的区别TCP对应的应用层协议有哪些?UDP对应的应用层协议有哪些?常见的http动词有哪些?ping命令基于哪一层协议的原理是什么?参考答案:可自己总结一份更容易记忆的 1.tcp 和udp 的区别 TCP是面向有连接型,UDP是面向无连接型; TCP是一对一传输,UDP支持一对一、一对多、多对一和多对多的交互通信; TCP是面向字节流的,即把应用层传来的报文看成字节流,将字节流拆分成大小不等的数据块,并添加TCP首部;UDP是面向报文的,对应用层传下来的报文不拆分也不合并,仅添加UDP首部; TCP支持传输可靠性的多种措施,包括保证包的传输顺序、重发机制、流量控制和拥塞控制;UDP仅提供最基本的数据传输能力。 2. TCP对应的应用层协议有哪些?UDP对应的应用层协议有哪些? TCP对应的典型的应用层协议: FTP:文件传输协议; SSH:远程登录协议; HTTP:web服务器传输超文本到本地浏览器的超文本传输协议。 UDP对应的典型的应用层协议: DNS:域名解析协议; TFTP:简单文件传输协议; SNMP:简单网络管理协议 3. 常见的http动词有哪些? GET: 从服务器获取资源 POST: 在服务器新建资源 PUT: 在服务器更新资源 DELETE: 在服务器删除资源 HEAD: 获取资源的元数据 OPTIONAL: 查询对指定的资源支持的方法 4. ping命令基于哪一层协议的原理是什么? ping命令是基于网络层的命令,是基于ICMP协议工作的。 **总结:** 关于运维面试,你了解这么多就可以了,但是关于OSI七层模型,你如果要学习的话,还需要不少内容,有时间还是在看一下其他的内容比较好。
2025年03月04日
13 阅读
0 评论
0 点赞
2025-03-02
第1阶段综合测试面试题
M63期第一阶段综合测试面试题 学号: 姓名: 成绩: 说明:共12题需要作答,每题10分,共120分。其中前十题是必答题,满分100,60分及格。第11/12两题为附加题,希望同学们能认真对待每一题。最后阅读篇为运维面试情况分析,请认真阅读。1.如何在 /data 下找到大小超过1G的文件并且inode修改时间在7天以前的普通文件,找到后结合xargs 把他移动到 /backup目录下2. 已知 apache 服务的访问日志按天记录在服务器本地目录/app/logs 下,由于磁盘空间紧张现在要求只能保留最近 7 天的访问日志!请问如何解决? 请给出解决办法或配置或处理命令?3. 每天晚上 12 点,打包站点目录/var/www/html 备份到/data 目录下(最好每次备份按时间生成不同的备份包)4. 写一条192.168.10.0网段从网关192.168.9.1出去的路由?5. 找出僵死进程并杀死僵尸进程的方法?6. 写一个脚本,实现批量添加20个用户,用户名为:user1-20,密码为user后面跟着5个随机字符或数字7. 当根目录硬盘写满时,如何定位到那个目录使用硬盘最多的?如果发现某个大文件导致空间占满,如何快速删除释放空间8. TCP/IP协议三次握手四次挥手的过程9. 网站访问慢的故障排查10. 办公室同事反馈网站打不开,请简述一下排查故障的思路或解决方法?11. 结合目前所学回答:linux 系统中病毒怎么解决?【拓展+10分】12. 结合目前所学,运维安全需要注意哪些事项?【拓展+10分】以下是必读篇。无需作答【运维面试】面试官: 说一下OSI七层模型吧?前言运维面试过程中经常会被问到OSI七层模型,目前大多数的运维,对于OSI七层模型,都是一知半解,甚至就根本不知道OSI七层模型。运维这个岗位涉及的面广,有的公司需要运维懂点网络,大部分公司有自己的网络工程师,对于运维的网络要求其实并不高。不过面试还是要会的,毕竟网络是运维的基础OSI的七层协议主要包括: 物理层(physical layer) 数据链路层(data link layer) 网络层(network layer) 运输层(transport layer) 会话层(session layer) 表示层(presentation layer) 应用层(application layer) 每一层的协议: 物理层:RJ45、CLOCK、IEEE802.3(中继器、集线器),ISO2110,光导纤维,双绞线 数据链路层:wi-fi, ATM, DTM,令牌环,以太网,PPPoE ,PPP、FR、HDLC、VLAN、MAC(网桥、 交换机) 网络层:IP、ICMP、ARP、RARP、OSPF、IPX、RIP、IGRP(交换机) 传输层:TCP(T/TCP · Fast Open) UDP DCCP SCTP RSVP PPTP TLS/SSL 会话层:NFS、SQL、NETBIOS、RPC 表示层:JPEG、MPEG、ASII 应用层:DHCP(v6) DNS FTP Gopher HTTP(SPDY、HTTP/2) IMAP4 IRC NNTP XMPP POP3 SIP SMTP SNMP SSH TELNET RPC RTCP RTP RTSP SDP SOAP GTP STUN NTP SSDP故事版OSI七层模型一封邮件的自白:我是一封邮件, 目的地是广州的一个地址,我来到应用层,找到了SMTP邮件协议,来到表示层的进行处理。表示层要把主人写好的邮件,进行编码和转换,变成我们传输通道里的伙伴们都认识的一种形式。等待表示层把数据处理完后,其实就已经把数据都知准备好了,这时候我会联系我的代言人会话层进行与主机通话,相当于打电话那样的,目的是把我的主机和服务器建立连接,方便我把数据传输去。主机: 你好,我是主机,请问你是邮件服务器吗?,我需要和你建立连接。服务器:你好,我是邮件服务器,连接已经建立。建立连接后,就开始传输数据了,传输层的任务比较艰巨,他不但要传输数据,还要处理在传输过程中可能出现的异常,比如数据丢包。 在传输的过程中,数据就开始顺着网络层指定的路线进行传输了, 网络错综负责,稍有不慎就走错路,所以网络层在这里就起到了规划路线的作用,相当于快递公司,告诉数据从哪里走最近。数据到了广州后,就到了数据链路层的手里,数据链路层相当于快递员, 快递员可以精准的找到每个本地网络中的设备,然后把数据精准到传送到相应的设备上去。剩下的就是物理层了,物理层主要做信号转换和物理传输。相关面试题:tcp 和udp 的区别TCP对应的应用层协议有哪些?UDP对应的应用层协议有哪些?常见的http动词有哪些?ping命令基于哪一层协议的原理是什么?参考答案:可自己总结一份更容易记忆的 1.tcp 和udp 的区别 TCP是面向有连接型,UDP是面向无连接型; TCP是一对一传输,UDP支持一对一、一对多、多对一和多对多的交互通信; TCP是面向字节流的,即把应用层传来的报文看成字节流,将字节流拆分成大小不等的数据块,并添加TCP首部;UDP是面向报文的,对应用层传下来的报文不拆分也不合并,仅添加UDP首部; TCP支持传输可靠性的多种措施,包括保证包的传输顺序、重发机制、流量控制和拥塞控制;UDP仅提供最基本的数据传输能力。 2. TCP对应的应用层协议有哪些?UDP对应的应用层协议有哪些? TCP对应的典型的应用层协议: FTP:文件传输协议; SSH:远程登录协议; HTTP:web服务器传输超文本到本地浏览器的超文本传输协议。 UDP对应的典型的应用层协议: DNS:域名解析协议; TFTP:简单文件传输协议; SNMP:简单网络管理协议 3. 常见的http动词有哪些? GET: 从服务器获取资源 POST: 在服务器新建资源 PUT: 在服务器更新资源 DELETE: 在服务器删除资源 HEAD: 获取资源的元数据 OPTIONAL: 查询对指定的资源支持的方法 4. ping命令基于哪一层协议的原理是什么? ping命令是基于网络层的命令,是基于ICMP协议工作的。总结: 关于运维面试,你了解这么多就可以了,但是关于OSI七层模型,你如果要学习的话,还需要不少内容,有时间还是在看一下其他的内容比较好。《本套试题完》
2025年03月02日
23 阅读
0 评论
0 点赞
2024-07-21
find 按文件修改时间查找文件及find空文件夹
查找两天前修改过的文件:find . -type f -mtime -2查找3天内修改过的文件:find -ctime -3find命令使用超过6天,空文件独立查询命令:find /data/backup -ctime +6 -exec rm -f {} \; 删除/data/backup目录下修改时间超过6天的文件。 find /data/backup -type d -empty -exec rmdir {} \; >/dev/null 2>&1 删除/data/backup目录下空的文件夹,同时输出正确和错误信息到空。查找超过6天且是空文件的find命令:find ./ -type d -empty -ctime +6按修改时间来查找文件,要用到选项-mtime:find /home/admin -mtime -1 #查找/home/admin目录下修改时间在1天之内的文件find /home/admin -name *.txt -mtime -1 #查找/home/admin目录下修改时间在1天之内的文件名为.txt结尾的文件find 按文件修改时间查找文件---(+n)----------|----------(n)----------|----------(-n)--- (n+1)*24H前| (n+1)*24H~n*24H间 |n*24H内 -ctime -n 查找距现在 n*24H 内修改过的文件-ctime n 查找距现在 n24H 前, (n+1)24H 内修改过的文件-ctime +n 查找距现在 (n+1)*24H 前修改过的文件[a|c|m]min [最后访问|最后状态修改|最后内容修改]min[a|c|m]time [最后访问|最后状态修改|最后内容修改]timelinux 文件的三种时间(以 find 为例):atime 最后一次访问时间, 如 ls, more 等, 但 chmod, chown, ls, stat 等不会修改些时间, 使用 ls -utl 可以按此时间顺序查看;ctime 最后一次状态修改时间, 如 chmod, chown 等状态时间改变但修改时间不会改变, 使用 stat file 可以查看;mtime 最后一次内容修改时间, 如 vi 保存后等, 修改时间发生改变的话, atime 和 ctime 也相应跟着发生改变.注意:linux 里是不会记录文件的创建时间的,除非这个文件自创建以来没有发生改变,那么它的创建时间就是它的最后一次修改时间。ls -lt /home/admin # 按修改时间顺序查看ls -lut /home/admin # 按访问时间顺序查看(如果想反序查看的话需要加一个选项 -r)知识点:atime ,ctime ,mtime比如,编辑文件内容并保存,文件内容改变会更新 mtime,同时文件系统因写入操作更新 inode 相关信息,也会导致 ctime 更新由于 ctime 记录的是 inode 节点信息的更改时间,而文件内容修改会导致 inode 信息更新,所以 mtime 的更新通常会伴随 ctime 的更新。但 ctime 更新不一定是因为 mtime 变化,修改文件权限等元数据也会更新 ctime,此时 mtime 不变。
2024年07月21日
14 阅读
0 评论
0 点赞