怎么查看一个文件内容前十行 ,怎么查看后十行:可以使用head(查看前几行)、tail(查看末尾几行)两个命令。

例:
查看/etc/profile的前10行内容 # head -n 10 /etc/profile
查看/etc/profile的最后5行内容 # tail -n 5 /etc/profile

如果想同时查看可以将前10行和后5行的显示信息通过输出重定向的方法保存到一个文档:
将内容输出到/home/test文件中

head -n 10 /etc/profile >>/home/test

tail -n 5 /etc/profile>>/home/test

如何查看vi文件的前十行: head vi 文件名 后十行 tail vi 文件名
查找一个字符串 grep “aaa”vi 文件名

查看文本文件内容时,如果内容过少适合使用那个命令查看,内容过多适合使用那个命令

Cat: 会一次显示所有的内容,适合查看内容较少的文本文件
More: 命令可用于分屏显示文件内容,每次只显示一页内容

在一个BDQN文件当中,想要查寻以 A为开头的行怎么查找,忽略大小写时加那个参数,怎么使用一条命令查找以A为开头的行数有多少

[xusx@homeserver ~]$ grep ^A BDQN
[xusx@homeserver ~]$ grep ^A -i BDQN
[xusx@homeserver ~]$ grep ^A BDQN |wc -l

如何给BDQN这个文件添加可读可写权限不可执行权限

chmod +rw BDQN

写一条命令查找最后创建时间是3天前,后缀是*.log的文件并删除

find / -mtime +3 -type f -name ‘*.log’ |xargs rm -f

绝对路径用什么符号表示?当前目录、上层目录用什么表示?主目录用什么表示? 切换目录用什么命令?

绝对路径: 如/etc/init.d
当前目录和上层目录: ./ ../
主目录: ~/
切换目录: cd

怎么查看当前进程?怎么执行退出?怎么查看当前路径?

查看当前进程: ps
执行退出: exit
查看当前路径: pwd

怎么清屏?怎么退出当前命令?怎么执行睡眠?怎么查看当前用户 id?查看指定帮助用什么命令?

清屏: clear
退出当前命令: ctrl+c 彻底退出
执行睡眠 : ctrl+z 挂起当前进程fg 恢复后台
查看当前用户 id: ”id“:查看显示目前登陆账户的 uid 和 gid 及所属分组及用户名
查看指定帮助: 如 man adduser 这个很全 而且有例子; adduser –help 这个告诉你一些常用参数; info adduesr;

Ls 命令执行什么功能? 可以带哪些参数,有什么区别?

ls 执行的功能: 列出指定目录中的目录,以及文件
哪些参数以及区别: a 所有文件l 详细信息,包括大小字节数,可读可写可执行的权限等

如何建立软链接(快捷方式),以及硬链接的命令。

软链接: ln -s slink source
硬链接: ln link source

目录创建用什么命令?创建文件用什么命令?复制文件用什么命令?

创建目录: mkdir
创建文件:典型的如 touch,vi 也可以创建文件,其实只要向一个不存在的文件输出,都会创建文件
复制文件: cp 7. 文件权限修改用什么命令?格式是怎么样的?
文件权限修改: chmod

查看文件内容有哪些命令可以使用?

vi 文件名 #编辑方式查看,可修改
cat 文件名 #显示全部文件内容
more 文件名 #分页显示文件内容
less 文件名 #与 more 相似,更好的是可以往前翻页
tail 文件名 #仅查看尾部,还可以指定行数
head 文件名 #仅查看头部,还可以指定行数

随意写文件命令?怎么向屏幕输出带空格的字符串,比如”hello world”?

写文件命令:vi
向屏幕输出带空格的字符串:echo hello world

如何查看系统内核的版本

uname -a
cat /proc/version

如何查看磁盘还有多少剩余空间

这里主要可以用 df -ah 命令来查看,df 是用来查看文件系统磁盘空间使用情况的命令,
-a 显示所有文件系统,-h 用人们可读的方式进行显示。

数据库的原理是什么

MySQL是一个单进程的服务,对于每一个请求都是用线程来响应的。需要一个连接器来处理新用户的请求、响应以及销毁。
1.客户端请求,服务端(连接器)开启线程响应用户
2.用户发起SQL语句查询数据库
3.查询缓存:记录用户的SQL查询语句。如果查询同样内容,就返回缓存。
4.如果缓存中没有对应的结果,则进入分析器。(分析器也可能借鉴缓存)

你是怎么备份数据的,包括数据库备份?

回答:在生产环境下,不管是应用数据、还是数据库数据首先在部署的时候就会有主从架构,这本身就是是属于数据的热备份;
其实考虑冷备份,用专门一台服务器做为备份服务器,比如可以用rsync+inotify配合计划任务
来实现数据的冷备份,如果是发版的包备份,正常情况下有台发布服务器,每次发版都会保存好发版的包。

详述MySQL主从复制原理

主库开启binlog功能并授权从库连接主库,从库通过change master得到主库的相关同步信息,然后连接主库进行验证,
主库IO线程根据从库slave线程的请求,从master.info开始记录的位置点向下开始取信息,
同时把取到的位置点和最新的位置与binlog信息一同发给从库IO线程,从库将相关的sql语句存放在relay-log里面,
最终从库的sql线程将relay-log里的sql语句应用到从库上,至此整个同步过程完成,之后将是无限重复上述过程

如果网络出现问题,如何进行排查

首先由外到内检查,先检查 网线/网卡硬件设备,然后在使用ping命令一步一步排查 首先排查网关 之后排查dns 查看参数是否配置有误

如何配置网卡参数在linux系统中

vi /etc/sysconfig/network-scripts/ifcfg-ens33

tcp五层协议你说一下:

如果把各层都对应一个网络设备我想就很好理解了
应用层—-PC/服务器(HTTP、HTTPS、FTP、SMTP….)
传输层—-防火墙(TCP、UDP)
网络层—-路由器(ARP、ICMP、IP、IGMP…)
数据链路层—-交换机(底层协议)
物理层—-网卡(底层协议)

什么是封装和解封装?

封装可理解为发送数据,解封装可以理解为接受数据的过程

tcp和udp有哪些区别

基于TCP的应用协议有:HTTP、FTP、SMTP、TELNET、SSH

基于UDP应用协议有:DNS、TFTP、SNMP、

1)安全方面的区别

2)传播速度的区别:udp的传送速度比tcp快,因为tcp在传送的时候要先建立连接,建立连接的时候是比较耗时的,而且在传输数据的时候还要确认一些东西,而udp无连接传送数据

3)连接对象数量的区别:tcp是一对一的连接,而udp是一对多个或多个连接的

简述TCP三次握手的过程?

在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接。第一次握手:建立连接时,
客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认。第二次握手:服务器收到syn包,
必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,
此时服务器进入SYN_RECV状态。第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),
此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。完成三次握手,客户端与服务器开始传送数据简版:
首先A向B发SYN(同步请求),然后B回复SYN+ACK(同步请求应答),最后A回复ACK确认,这样TCP的一次连接(三次握手)的过程就建立了

为什么连接的时候是三次握手,关闭的时候却是四次握手?

这是因为当Server端收到Client端的SYN连接请求报文后,可以直接发送SYN+ACK报文。其中ACK报文是用来应答的,
SYN报文是用来同步的。但是关闭连接时,当Client端发送FIN报文仅仅表示它不再发送数据了但是还能接收数据,
Server端收到FIN报文时,很可能并不会立即关闭SOCKET,所以只能先回复一个ACK报文,告诉Client端,”你发的FIN报文我收到了”。
只有等到我Server端所有的报文都发送完了,我才能发送FIN报文,因此不能一起发送。故需要四步握手

简述一下DNS的解析过程

1、在浏览器中输入www.qq.com域名,操作系统会先检查自己本地的hosts文件是否有这个网址映射关系,
如果有,就先调用这个IP地址映射,完成域名解析。
2、如果hosts里没有这个域名的映射,则查找本地DNS解析器缓存,是否有这个网址映射关系,如果有,直接返回,完成域名解析。
3、如果hosts与本地DNS解析器缓存都没有相应的网址映射关系,首先会找TCP/IP参数中设置的首选DNS服务器,
在此我们叫它本地DNS服务器,此服务器收到查询时,如果要查询的域名,包含在本地配置区域资源中,
则返回解析结果给客户机,完成域名解析,此解析具有权威性。

你有没有搭建过ftp,如何搭建的,做过哪些优化

yum安装:首先设置yum仓或者把yum源改为阿里yum源 使用yum -y install命令安装vsftp 客服端安装lftp
本地安装 tar -zxvf解压 、zcvf压缩 创建目录 移动到目录 启动
编辑配置文件 vi /etc/vsfptd/vsfptd.conf
max_clients=10240 #最大连接数,不限制改为0 anon_max_rate=50000 #限制匿名用户50KB

max_per_ip=1000 #单IP最大连接数,不限制改为0 local_max_rate=200000 #限制本地用户200K

vpn有什么特点

利用现有的公共ip网络,实现专线接入,采用隧道和加密技术,隐藏内部网络细节,成本低

你说一下vlan的特点

vlan(虚拟局域网)的主要特点就是安全,信息只到达应该到达的地点。防止了大部分基于网络监听的入侵手段。
通过虚拟网设置的访问控制,使在虚拟网外的网络节点不能直接访问虚拟网内节点。

windows常见的磁盘分区方式

一主+一扩+扩中N个逻辑分区、2主+扩,逻辑分区

13.你都了解哪些网络命令和相对应的作用:
ping 网络连通性、 tracert 网络节点数、 telnet 远程连接、
nslookup 域名解析 ipconfig 网络链接的详细信息、
regedit 注册表、 ftp 登陆到ftp服务器

简述raid0 raid1 raid5三种工作模式区别

RAID 0:连bai续以位或字节为单位分du割数据,并行读/写于多个磁盘上zhi,因此具有很高的数据传输dao率,
但它没有数据冗余。RAID 0 不能应用于数据安全性要求高的场合。

RAID 1:镜象结构,类似于备份模式,一个数据被复制到两块硬盘上。

RAID5:分布式奇偶校验的独立磁盘结构,它的奇偶校验码存在于所有磁盘上,任何一个硬盘损坏,
都可以根据其它硬盘上的校验位来重建损坏的数据。支持一块盘掉线后仍然正常运行

Linux系统开机模式:

1.开机自检,加载BIOS 2.读取内存 3.引导菜单 4.加载l内核 5.init进程依据inittab文件夹来设定运行级别 6.执行不同运行级别的脚本程序

Linux里如何来做挂载

只输入 mount命令可以查看所有系统已经挂载的文件。
如果想挂载一个新的文件,比如将 /dev/hda1 挂在 /mnt 之下,可以用mount /dev/hda1 /mnt

终端是哪个文件夹下的哪个文件?黑洞文件是哪个文件夹下的哪个命令?

终端 /dev/tty
黑洞文件 /dev/null

删除文件用哪个命令?如果需要连目录及目录下文件一块删除呢?删除空文件夹用什么命令?

rm rm -r rmdir

如何编写新建10个用户的脚本,用户名前缀为yu,后面的名字是从1到10,例如:yu1 到yu10

所有用户的密码都是123123

#!/bin/bash
for i in {1..10}
do
useradd yu$i
echo 123123 | passwd yu$i –stdin
done

Linux 下命令有哪几种可使用的通配符?分别代表什么含义?

答案:
“?”可替代单个字符。
“*”可替代任意多个字符。
方括号“[charset]”可替代 charset 集中的任何单个字符,如[a-z],[abABC]

终止进程用什么命令? 带什么参数?

kill [-s <信息名称或编号>][程序] 或 kill [-l <信息编号>]
kill-9 pid

搜索文件用什么命令? 格式是怎么样的?

find <指定目录> <指定条件> <指定动作>
whereis 加参数与文件名
locate 只加文件名
find 直接搜索磁盘,较慢。
find / -name “string*”

使用什么命令查看用过的命令列表?

history

使用什么命令查看磁盘使用空间? 空闲空间呢?

答案:
df -hl
文件系统 容量 已用 可用 已用% 挂载点
Filesystem Size Used Avail Use% Mounted on /dev/hda2 45G 19G 24G 44% /
/dev/hda1 494M 19M 450M 4% /boot

说一下Tomcat工作模式?

Tomcat是一个JSP/Servlet容器。其作为Servlet容器,有三种工作模式:独立的Servlet容器、进程内的Servlet容器和进程外的Servlet容器。
进入Tomcat的请求可以根据Tomcat的工作模式分为如下两类:
Tomcat作为应用程序服务器:请求来自于前端的web服务器,这可能是Apache, IIS, Nginx等;
Tomcat作为独立服务器:请求来自于web浏览器;

监控用什么实现的?

回答:现在公司的业务都跑在阿里云上,我们首选的监控就是用阿里云监控,阿里云监控自带了ECS、RDS等服务的监控模板,
可结合自定义报警规则来触发监控项。上家公司的业务是托管在IDC,用的是zabbix监控方案,zabbix图形界面丰富,
也自带很多监控模板,特别是多个分区、多个网卡等自动发现并进行监控做得非常不错,不过需要在每台客户机(被监控端)安装zabbix agent。

docker的三种工作网络模式

bridge 桥接模式

桥接模式是docker 的默认网络设置,当Docker服务启动时,会在主机上创建一个名为docker0的虚拟网桥,并选择一个和宿主机不同的IP地址和子网分配给docker0网桥

host 模式

该模式下容器是不会拥有自己的ip地址,而是使用宿主机的ip地址和端口。这种模式的好处就是网络性能比桥接模式的好。缺点就是会占用宿主机的端口,网络的隔离性不太好

none 模式

加上后面的参数就行了 –net=none

none模式没有IP地址,无法连接外网,等于就是断网的状态,作用就是用于测试,生产环境一般不会用到这种

描述一下jenkins发包流程

  1. 开发者开发代码
  2. 提交至git仓库
  3. jenkins从仓库拉取代码
  4. jenkins通过maven(ant,gradle等)构建项目推到docker仓库
  5. 生成一个在tomcat运行的项目的docker容器
  6. 测试人员测试

Jenkins是一个开源的、可扩展的持续集成、交付、部署(软件/代码的编译、打包、部署)的基于web界面的平台。允许持续集成和持续交付项目,无论用的是什么平台,可以处理任何类型的构建或持续集成

CI/CD

CI/CD 是一种通过在应用开发阶段引入自动化来频繁向客户交付应用的方法。CI/CD 的核心概念是持续集成、持续交付和持续部署

持续集成(Continuous integration,简称CI)指的是频繁地(一天多次)将代码集成到主干。它属于开发人员的自动化流程。成功的 CI 意味着应用代码的新更改会定期构建、测试并合并到共享存储库中
持续集成的目的就是让产品可以快速迭代,同时还能保证高质量,它的核心措施是将代码集成到主干之间,必须通过自动化测试,只要有一个测试用例失败,就不能集成

“CD”指的是持续交付和/或持续部署,这些相关概念有时会交叉使用。两者都事关管道后续阶段的自动化,但它们有时也会单独使用,用于说明自动化程度。

持续交付通常是指开发人员对应用的更改会自动进行错误测试并上传到存储库(如 GitHub 或容器注册表),然后由运维团队将其部署到实时生产环境中。这旨在解决开发和运维团队之间可见性及沟通较差的问题。因此,持续交付的目的就是确保尽可能减少部署新代码时所需的工作量。

持续部署(另一种”CD”)指的是自动将开发人员的更改从存储库发布到生产环境,以供客户使用。它主要为了解决因手动流程降低应用交付速度,从而使运维团队超负荷的问题。持续部署以持续交付的优势为根基,实现了管道后续阶段的自动化

描述下微服务架构

优点:
首先,微服务易于开发和维护,因为一个服务只关注一个特定的业务功能,业务清晰,代码量少,同时技术栈不受限制,比如有些服务可以使用redis,有些服务使用mysql,部分服务使用JAVA开发,部分微服务使用Node.js开发,微服务代码独立,数据独立,如果修改应用,可以对单服务进行修改再部署,并且可根据需求,对各个微服务进行突破瓶颈,比如升级CPU,增加内存等
缺点:
分布式事务的问题
提升了运维难度(发版、问题排查、配置管理、监控) –>催生了Jenkins + ELK +Spring Config + Spring Admin + Docker
性能降低,网络延迟,接口调整成本高,微服务之间通过接口进行通信

说一下kubernetes

实现容器集群的自动化部署、自动扩缩容、维护等功能。它既是一款容器编排工具,也是全新的基于容器技术的分布式架构领先方案。在Docker技术的基础上,为容器化的应用提供部署运行、资源调度、服务发现和动态伸缩等功能,提高了大规模容器集群管理的便捷性。

Kubernetes集群包含所有节点代理kubelet和Master组件(APIs、scheduler、etc),一切都基于分布式的存储系统.

Master为管理节点主要负责K8S集群管理,集群中各节点间的信息交互、任务调度,还负责容器、Pod、NameSpaces、PV等生命周期的管理。

Node 节点是真正运行应用容器的工作节点,在每个 Node 节点上都会运行一个 Kubelet 代理,控制该节点上的容器、镜像和存储卷等。

Kubernetes主要由以下几个核心组件组成:

etcd:保存了整个集群的状态;
apiserver:提供了资源操作的唯一入口,并提供认证、授权、访问控制、API注册和发现等机制;
controller manager:负责维护集群的状态,比如故障检测、自动扩展、滚动更新等;
scheduler:负责资源的调度,按照预定的调度策略将Pod调度到相应的机器上;
kubelet:负责维护容器的生命周期,同时也负责Volume(CVI)和网络(CNI)的管理;
Container runtime:负责镜像管理以及Pod和容器的真正运行(CRI);
kube-proxy:负责为Service提供cluster内部的服务发现和负载均衡,负责将访问到某个服务的请求具体分配给工作节点上的 Pod。