运维工程师面试题

Posted by Kaka Blog on March 3, 2020

Linux基础知识

1. 常见的Linux发行版本都有什么?

常见的Linux发行版本有Redhat、Centos、Debian、Ubuntu、Suse

2. 忘记用户登录密码

a、重启系统,在GRUB界面,选取忘记密码的系统,按e键进入编辑模式 b、选择Kernel…..按e键进行编辑 c、在编辑界面rhgbquiet后加空格,然后输入”single”或”1”回车 d、按b启动进入单用户模式 f、进入系统后passwd回车输入新密码(如果有selinux,先暂时关闭setenforce0)

3. 企业中Linux服务器系统分区标准是什么?(硬盘为300G,内存16G)

分区名称 分配容量
/boot 200M
/swap 8G
/ 50G
/data 剩下的全部空间

4. Linux网卡配置文件路径是什么?要使服务器上外网,必须满足的条件有哪些?需要配置什么?

网卡配置文件路径:/etc/sysconfig/network-scripts/ifcfg-eth(代表数字) 要上外网需要:能够链接internet的网线(或无线)、有网卡 需要配置:IP、netmask、gateway、dns(自动或手动都ok,服务器一般自动)

5. 一般可以使用什么软件远程linux服务器?通过什么上传文件和下载文件?

远程连接linux的软件:xshell、SecureCRT、putty、vnc(图形化) 上传和下载文件:lrzsz、sftp、FileZilla

6. 现在给你三百台服务器,你怎么对他们进行管理?

管理3百台服务器的方式: 1)设定跳板机,使用统一账号登录,便于安全与登录的考量。 2)使用salt、ansiable、puppet进行系统的统一调度与配置的统一管理。 3)建立简单的服务器的系统、配置、应用的cmdb信息管理。便于查阅每台服务器上的各种信息记录。

7. 如何查看文件内容,命令有哪些?查看文件第1行到3行,查看文件最后一行。

查看文件内容:vim、cat、head、tail 查看第1到行:head -3 file 查看最后一行:tail -1 file**

8. Linux设置环境变量

暂时的:export MYNAME=”new name”

echo $MYNAME

new name

永久的:通过改变/etc/profile实现

EG: export CLASSPATH=./java_HOME/lib;$JAVA_HOME/jre/lib

更改文件后执行 source /etc/profile

9. linux系统里,您知道buffer和cache如何区分吗?

buffer和cache都是内存中的一块区域,当CPU需要写数据到磁盘时,由于磁盘速度比较慢,所以CPU先把数据存进buffer,然后CPU去执行其他任务,buffer中的数据会定期写入磁盘;当CPU需要从磁盘读入数据时,由于磁盘速度比较慢,可以把即将用到的数据提前存入cache,CPU直接从Cache中拿数据要快的多。

10. 如何查看当前系统都有哪些进程?

ps -aux 或者ps -elf

11. 如何查看系统都开启了哪些端口?

netstat -lnp

12. 某个账号登陆linux后,系统会在哪些日志文件中记录相关信息?

用户身份验证过程记录在/var/log/secure中,登录成功的信息记录在/var/log/wtmp。

13. $符号?

$0 这个程式的执行名字 $n 这个程式的第n个参数值,n=1..9 $* 这个程式的所有参数,此选项参数可超过9个。 $# 这个程式的参数个数 $$ 这个程式的PID(脚本运行的当前进程ID号) $! 执行上一个背景指令的PID(后台运行的最后一个进程的进程ID号) $? 执行上一个指令的返回值 (显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误) $- 显示shell使用的当前选项,与set命令功能相同 $@ 跟$*类似,但是可以当作数组用 awk -F {print$3} 脚本名

14. 常见有哪些监控指标?

1.服务器:Linux应用服务器。

具体包括CPU、Memory、Load、I/O、Disk等。

2.数据库:1.Mysql 2.Oracle。

具体包括缓存命中、索引、单条SQL性能、数据库线程数、数据池连接数等。

3.中间件:比如Nginx。具体包括线程数、连接数、日志输出等。

4.网络。具体包括防火墙、网卡、网线、吞吐量、吞吐率等。

5.应用服务。具体包括应用服务日志、线程运行状态(阻塞、等待、正常运行)等。

6.监控工具。具体包括用户执行情况、场景状态、事务响应时间、TPS、Load、CPU分析图表等。例如nmon工具

网络

1. 说说TCP/IP的七层模型

应用层 (Application): 网络服务与最终用户的一个接口。 协议有:HTTP FTP TFTP SMTP SNMP DNS TELNET HTTPS POP3 DHCP

表示层(Presentation Layer): 数据的表示、安全、压缩。(在五层模型里面已经合并到了应用层) 格式有,JPEG、ASCll、DECOIC、加密格式等

会话层(Session Layer): 建立、管理、终止会话。(在五层模型里面已经合并到了应用层) 对应主机进程,指本地主机与远程主机正在进行的会话

传输层 (Transport): 定义传输数据的协议端口号,以及流控和差错校验。 协议有:TCP UDP,数据包一旦离开网卡即进入网络传输层

网络层 (Network): 进行逻辑地址寻址,实现不同网络之间的路径选择。 协议有:ICMP IGMP IP(IPV4 IPV6) ARP RARP

数据链路层 (Link): 建立逻辑连接、进行硬件地址寻址、差错校验等功能。(由底层网络定义协议) 将比特组合成字节进而组合成帧,用MAC地址访问介质,错误发现但不能纠正

物理层(Physical Layer): 是计算机网络OSI模型中最低的一层 物理层规定:为传输数据所需要的物理链路创建、维持、拆除 而提供具有机械的,电子的,功能的和规范的特性

简单的说,物理层确保原始的数据可在各种物理媒体上传输。局域网与广域网皆属第1、2层 物理层是OSI的第一层,它虽然处于最底层,却是整个开放系统的基础 物理层为设备之间的数据通信提供传输媒体及互连设备,为数据传输提供可靠的环境 如果您想要用尽量少的词来记住这个第一层,那就是“信号和介质”

2. TCP/IP具体解释–三次握手和四次挥手

建立连接协议:三次握手 第一次握手:Client将标志位SYN置为1,随机产生一个值seq=J,并将该数据包发送给Server,Client进入SYN_SENT状态,等待Server确认。 第二次握手:Server收到数据包后由标志位SYN=1知道Client请求建立连接,Server将标志位SYN和ACK都置为1,ack=J+1,随机产生一个值seq=K,并将该数据包发送给Client以确认连接请求,Server进入SYN_RCVD状态。 第三次握手:Client收到确认后,检查ack是否为J+1,ACK是否为1,如果正确则将标志位ACK置为1,ack=K+1,并将该数据包发送给Server,Server检查ack是否为K+1,ACK是否为1,如果正确则连接建立成功,Client和Server进入ESTABLISHED(建立)状态,完成三次握手,随后Client与Server之间可以开始传输数据了。

终止连接协议:四次挥手 第一次挥手:Client发送一个FIN,用来关闭Client到Server的数据传送,Client进入FIN_WAIT_1状态。 第二次挥手:Server收到FIN后,发送一个ACK给Client,确认序号为收到序号+1(与SYN相同,一个FIN占用一个序号),Server进入CLOSE_WAIT状态。 第三次挥手:Server发送一个FIN,用来关闭Server到Client的数据传送,Server进入LAST_ACK状态。 第四次挥手:Client收到FIN后,Client进入TIME_WAIT状态,接着发送一个ACK给Server,确认序号为收到序号+1,Server进入CLOSED状态,完成四次挥手。

为什么建立连接是三次握手,而关闭连接却是四次挥手呢? 这是因为服务端在LISTEN状态下,收到建立连接请求的SYN报文后,把ACK和SYN放在一个报文里发送给客户端。而关闭连接时,当收到对方的FIN报文时,仅仅表示对方不再发送数据了但是还能接收数据,己方也未必全部数据都发送给对方了,所以己方可以立即close,也可以发送一些数据给对方后,再发送FIN报文给对方来表示同意现在关闭连接,因此,己方ACK和FIN一般都会分开发送。

3. 简述DNS进行域名解析的过程?

用户要访问www.baidu.com,会先找本机的host文件,再找本地设置的DNS服务器,如果也没有的话,就去网络中找根服务器,根服务器反馈结果,说只能提供一级域名服务器.cn,就去找一级域名服务器,一级域名服务器说只能提供二级域名服务器.com.cn,就去找二级域名服务器,二级域服务器只能提供三级域名服务器.baidu.com.cn,就去找三级域名服务器,三级域名服务器正好有这个网站www.baidu.com,然后发给请求的服务器,保存一份之后,再发给客户端

MySQL

1. 如何重置mysql root密码

在已知MYSQL数据库的ROOT用户密码的情况下,修改密码的方法: 1、 在SHELL环境下,使用mysqladmin命令设置:

mysqladmin –u root –p password "新密码"
Enter password:              # 输入旧密码

2、 在mysql>环境中,使用update命令,直接更新mysql库user表的数据:

mysql> update mysql.user set password=password('新密码') where user='root';
mysql> flush privileges;

注意:mysql语句要以分号;结束

3、 在mysql>环境中,使用grant命令,修改root用户的授权权限。

mysql> grant all on *.* to root@'localhost' identified by '新密码';

2. mysql数据备份工具

mysqldump工具 mysqldump是mysql自带的备份工具,目录在bin目录下面:/usr/local/mysql/bin/mysqldump 支持基于innodb的热备份,但是由于是逻辑备份,所以速度不是很快,适合备份数据比较小的场景 Mysqldump完全备份+二进制日志可以实现基于时间点的恢复。

基于LVM快照备份 在物理备份中,有基于文件系统的物理备份(LVM的快照),也可以直接用tar之类的命令对整个数据库目录 进行打包备份,但是这些只能进行泠备份,不同的存储引擎备份的也不一样,myisam自动备份到表级别 而innodb不开启独立表空间的话只能备份整个数据库。

tar包备份 percona提供的xtrabackup工具 支持innodb的物理热备份,支持完全备份,增量备份,而且速度非常快,支持innodb存储引起的数据在不同 数据库之间迁移,支持复制模式下的从机备份恢复备份恢复,为了让xtrabackup支持更多的功能扩展 可以设立独立表空间,打开 innodb_file_per_table功能,启用之后可以支持单独的表备份.

备份的策略有哪些?

全量备份

对整个系统包括系统文件和应用数据进行的完全备份。 优点:数据恢复所需时间短。 缺点:浪费大量的存储空间;备份所需时间较长。

增量备份

每次备份上一次备份(全或增或差)后增加和修改过的数据。 优点:节省存储空间,缩短备份时间。 缺点:数据恢复比较麻烦,需要进行多次数据恢复。

差分备份

每次备份上一次全量备份之后新增加的和修改过的数据。 优点:节省存储空间,缩短备份时间,数据恢复也比较方便,只需两次备份数据。

策略

操作系统和应用程序代码:先对所有系统做一次全备份,然后每周对关键系统做一次全备份;每当做过软件安装或系统升级后,应立即做一次全量备份。

3. mysql主从复制原理

  1. 主库对所有DDL和DML产生的日志写进binlog;
  2. 主库生成一个 log dump 线程,用来给从库I/O线程读取binlog;
  3. 从库的I/O Thread去请求主库的binlog,并将得到的binlog日志写到relay log文件中;
  4. 从库的SQL Thread会读取relay log文件中的日志解析成具体操作,将主库的DDL和DML操作事件重放。