Linux运维面试总结


1.Linux系统相关日志
	/var/log/message:系统信息日志,包含错误信息
	/var/log/secure:系统登录日志
	/var/log/maillog:邮件日志
	/var/log/cron:定时任务日志
	
2.MySQL主从复制(mysql主从是异步复制过程)
	通过三个线程来完成:
		——dump线程(master节点)
		——I/O线程(slave节点)
		——SQL线程(slave节点)
	原理:
		——master节点开启binlog功能,将执行的操作记录SQL记录到二进制日志文件中(dump线程)
		——slave节点的I/O线程连接master节点,请求master的二进制日志,并获取二进制日志保存到自己的中继日志中
		——slave节点的SQL线程定时检查中继日志是否发生变化,如果变化则更新数据(执行SQL)
			
3.MySQL主从复制的好处
	——数据热备份,避免数据丢失
	——架构的扩展,多库存储,提高I/O性能
	——可以做读写分离,提高速度
	
4.ansible
	ansible的特点:
		——不需要配置
		——不需要启动服务
		——客户端不需要部署服务
	ansible安装:
		——yum -y install epel-release
		——yum install -y ansible
	ansible的主要配置文件:
		——ansible应用程序的主要配置文件:/etc/ansible/ansible.cfg
		——定义管理主机的配置文件:/etc/ansible/hosts
	ansible应用程序命令:
		——ansible-doc:获取模块列表,以及模块的使用格式
		——ansible-doc -l:获取模块列表
		——ansible-doc -s module-name:获取指定模块的使用信息
	ansible命令的使用方式:
		——ansible 主机信息(IP/all/定义好的组) -m 使用的模块名 -a "模块要使用的参数(要执行的动作)"
	ansible的常用模块:
		——ping
		——command
		——shell
		——script
		——copy
		——fetch
		——file
		——cron
		——service
		——user
		——mount
	ansible剧本:
		——yaml语法规则:
			缩进(两个空格是一个缩进)
			冒号(后面接一个空格)
			短横线(后面加一个空格)
		——检查剧本语法:
			ansible-playbook --syntax-check demo.yaml
		——模拟执行:
			ansible-playbook -C demo.yaml
		——正式执行剧本:
			ansible-playbook demo.yaml
			

5.Docker
	镜像管理:
		docker search  搜索镜像
		docker pull
		docker images
		docker rmi img
		docker load -i(<)
		docker save(>)
	启动容器:
		——容器启动后,容器内执行的第一条命令的PID为1,如果PID为1的进程结束了,那么这个容器就结束了
		——启动一个容器(前台打印):
			docker run 镜像:版本号
		——启动一个容器并执行第一个命令(命令执行结束则容器结束,命令不结束则容器不结束):
			docker run 镜像:版本号 + 命令
		——启动并进入容器内部(-i  -t),当退出容器时,容器会结束
			docker run -i -t 镜像:版本号 centos:7 /bin/bash
		——启动容器并在后台运行(-d:让第一条命令在后台运行)(容器不会结束)
			docker run -i -t -d centos:7 /bin/bash
	进入容器:
		——docker exec:
			——这个命令的本质就是让docker exec替我在容器执行一条命令,当执行的命令是/bin/bash的时候就是执行一条登陆命令,则会进入容器内部
			——让docker exec在容器里执行一条命令:
				docker exec -it 容器ID /usr/bin/echo test
			——进入容器内部:
				docker exec -it 容器ID /bin/bash
		——docker attach
	docker常用命令:
		docker ps
		docker ps -a
		docker start
		docker stop
		docker restart
		docker rm
		docker logs -f 容器ID/名称
		docker cp  本地文件  容器ID:容器路径
		docker inspect 容器ID/名称  ——> 查看详细信息
		docker ps -a -q ——> -q: 只显示容器的ID
	docker下制作一个容器镜像:
		docker commit 存在的容器名 + 要制作成的镜像名:版本号
		
6.DockerFile
	——vim Dockerfile
	——编写Dockerfile的内容
	——指令:
		FROM:基础镜像
		RUN:运行命令
		ADD:复制后会自动解压
		COPY:复制后不会自动解压
		CMD:启动容器后执行的第一条命令
	——docker build -t 镜像名:版本号
	——docker images : 查看制作好的镜像
	
	
7.docker-compose(容器编排)
	——docker-compose.yml文件
	——docker-compose的命令参数:
		-f,–file FILE指定Compose模板文件,默认为docker-compose.yml,可以多次指定
		-p,–project-name NAME指定项目名称,默认将使用所在目录名称作为项目名
		-x-network-driver 使用Docker的可拔插网络后端特性(需要Docker 1.9+版本)
		-x-network-driver DRIVER指定网络后端的驱动,默认为bridge(需要Docker 1.9+版本)
		-verbose输出更多调试信息
		-v,–version打印版本并退出
	——docker-compose相关命令:
		docker-compose up
		docker-compose up -d
		显示正在运行的进程:docker-compose top
		查看项目中web服务的进程:docker-compose top web
		查看项目中所有服务的容器信息:docker-compose ps
		查看某一个服务的ID(-q:只打印容器的 ID 信息):docker-compose ps -q web
		重启当前项目中的所有服务:docker-compose restart
		重启当前项目中的web服务:docker-compose restart web
		停止当前项目中所有服务:docker-compose stop (不会删除)
		停止当前项目中的web服务:docker-compose stop web
		启动被stop的服务容器:docker-compose start
		暂停项目中的所有服务:docker-compose pause
		恢复处于暂停状态的服务:docker-compose unpause
		停止容器:docker-compose down(停止运行的容器,并且删除已停止的容器以及已创建的所有网络)

8.OSI7层模型
		--应用层
		--表示层
		--会话层
		--传输层
		--网络层
		--数据链路层
		--物理层
	
9.Linux启动流程
		>> BIOS启动引导阶段
		>> GRUB启动引导阶段
		>> 内核阶段
		>> init初始化阶段
	
10.面试中被问到的相关问题
		——grep命令的参数有什么?
		——Nginx正向代理和反向代理的区别?
		——Nginx常用的模块?
		——Nginx的location怎么配置?
		——你在部署中间件的过程中遇到的最难解决的问题是什么?怎么解决的?
		——docker有几种生成镜像的方式?
		——docker怎么实现数据持久化存储?
		——介绍一下K8S?
		——K8S和docker的关系和区别?
		——查看Linux进程的命令
		——查看Linux端口的命令?
		——怎么查看Linux有即可物理CPU?以及CPU的核数?
		——MySQL优化的方式有什么?
		——Ansible的原理是什么?
		——K8S怎么拉取镜像?
		——怎么查看每颗CPU的使用情况?
		——用什么方式把包传到服务器上最安全?
		——排查应用服务问题的思路是怎样的?
		——Linux的网卡配置文件在哪里?怎么重启网卡?
		——MySQL的主从复制原理是什么?MySQL读写分离的原理是什么?
		——云平台的运维要注意什么?
		——怎么把文件传到另一个Linux服务器上?
		——Nginx的负载均衡怎么实现的?
		——Nginx+keepalive的高可用架构原理是什么?其中的vip的来源是什么?
		——docker的相关命令?
		——Nginx的日志切割怎么做?
		——怎么查看Linux系统的负载情况?
		——Linux系统的权限rwx代表什么?
		——怎么查看Linux的内存使用情况?
		——tomcat的端口怎么修改?
		——Nginx的最大连接数是多少?
		——Redis的密码怎么设置?对应的配置文件名是什么?
		——Nginx的相关命令有什么?怎么查看Nginx的版本号?
		——怎么调试shell脚本?
		——K8S的pod怎么重启?
		——你觉得运维人员需要具备什么品质?
		——MySQL的数据备份方式有什么?mysqldump命令的参数有哪些?
		——MySQL的默认密码保存在哪个文件中?
		——SQL语句中的左连接和右连接查询的区别是什么?
		——MySQL索引怎么加?
		——你们公司的MySQL架构怎么样的?
		——DNS是什么?
		——CDN是什么?
		——Linux系统上怎么生成秘钥对?
		——防火墙策略?
		——Firewalld防火墙的默认策略是什么?保存在哪个表中的?
		——OSI7层模型有哪7层?
		——Linux系统的启动流程是怎么样的?
		——shell脚本中有哪些循环?
		——shell中的变量$?代表什么?
		——Linux定时任务怎么写?
		——Linux的运行级别有什么?
		——Linux忘记root密码怎么办?
		——你部署过Nginx吗?部署的步骤是什么?
		——你平时关注什么技术站吗?
		——你了解git和svn吗?
		——Nginx怎么实现动静分离?怎么实现正向代理?怎么实现反向代理?
		——你们公司用的tomcat是什么版本?对应的JDK是什么版本?
		——你知道目前MySQL的最新版本是多少吗?Oracle呢?
		——介绍一下Raid