【2023】分享一份网友的Linux运维面试题

本文涉及的产品
传统型负载均衡 CLB,每月750个小时 15LCU
云解析 DNS,旗舰版 1个月
全局流量管理 GTM,标准版 1个月
简介: 【2023】分享一份网友的Linux运维面试题
原只有问题,没有答案。答案是我整理的,如发现有什么问题可以在评论区留言告诉我!

1.grep如何查找一个字符串如何忽略大小写

以搜索某文件中linux为例:

grep -i linux test01.txt

79d8000800b449929674d261cf11b589.png

2.kill -9和kill -15有什么区别

两者都是用于终止进程的命令,但是区别明显。

kill -15:发送一个SIGTERM信号给进程,这是一个优雅的结束信号,可以让进程在结束前完成一些清理工作,并保存进程当前的状态。

kill -9:发送一个SIGKILL信号给进程,这是一个非优雅的结束信号,意味着进程会立即停止,不会有任何清理工作或状态保存,可能会导致数据丢失或其他问题。

使用kill -9应该作为最后的手段,仅在进程不响应其他信号时才使用。

3.简单描述一下TCP的建立和断开

建立连接的三次握手过程:

第一步:客户端向服务器发送一个SYN(同步)请求。

第二步:服务器收到客户端请求后,回复一个SYN+ACK(同步/确认)请求。

第三步:客户端收到服务器的回复后,再次回复一个ACK(确认)请求。此时,连接建立成功。

断开连接的四次挥手过程

第一步:客户端发送一个FIN(结束)请求。

第二步:服务器收到客户端的请求后,回复一个ACK(确认)请求。

第三步:服务器也发送一个FIN请求。

第四步:客户端收到服务器的请求后,再次回复一个ACK请求。此时,连接断开成功。

4.Linux服务在什么情况下CPU使用率会超过100%

在 Linux 中,CPU 使用率超过 100% 的情况通常是由于多个 CPU 核心或线程同时运行导致的。CPU 使用率的计算是基于 CPU 核心数量的百分比。如果系统有多个核心或线程,那么 CPU 使用率可能会超过 100%。


例如,如果一个进程在一个拥有 4 个 CPU 核心的系统上使用了 400% 的 CPU 使用率,那么这个进程实际上是在占用系统的全部 CPU 资源。类似地,如果有多个进程同时占用 CPU 资源,那么系统的 CPU 使用率就可能会超过 100%。


另外,CPU 使用率超过 100% 也可能是由于 CPU 芯片错误、过时的驱动程序或其他硬件问题引起的。在这种情况下,建议检查系统的硬件和驱动程序,以确定是否需要进行更新或更换。

5.服务器提示磁盘空间满了,但是通过du -sh命令发现磁盘并没有使用完,是什么原因

可能是因为有文件被删除了,但是仍然被某个进程占用,导致空间无法被释放。

这种情况下,你可以使用 lsof 命令来查找被占用的文件。

lsof | grep deleted

这条命令会列出所有删除但仍被占用的文件和进程,可查看这些进程并尝试终止它们释放空间。

6.使用什么命令查看某个Java进程内的线程堆栈信息

可以使用 jstack 命令来查看某个 Java 进程内的线程堆栈信息。

要使用 jstack 命令,首先需要确定要查看的 Java 进程的进程 ID(PID)。可以使用 jps 命令列出当前正在运行的 Java 进程及其 PID。

找到要查看的进程的 PID 后,可以运行以下命令来生成线程转储快照:

jstack
jstack <PID>

运行命令后, jstack 命令会输出线程堆栈信息,包括每个线程的调用栈跟踪。你可以使用输出来诊断 Java 应用程序中的问题,如死锁或死循环等。

7. redis能调时区吗?

Redis 本身不支持调整时区,它使用的是协调世界时(UTC)来表示时间。

如果你需要将 Unix 时间戳转换为本地时区的时间表示,可以使用相应编程语言或框架中提供的日期时间处理函数,将 Unix 时间戳转换为本地时区的日期时间表示。在转换时,需要指定本地时区的信息,例如时区偏移量或时区名称等。


8.Docker容器请求某个地址有问题,该如何排查

网络连接问题:检查容器所在的网络环境是否正常,包括主机网络、容器网络和目标地址网络等。可以使用 ping 命令测试网络连接是否正常。

DNS 解析问题:容器无法通过域名访问目标地址,可能是 DNS 解析出现了问题。可以使用 nslookup 命令测试域名解析是否正常。

防火墙问题:目标地址所在的网络可能设置了防火墙,导致容器无法访问。可以检查网络设备和防火墙规则是否允许容器访问目标地址。


9.服务器出现未知错误解决的步骤操作

确认问题:首先需要确认服务器出现了问题,包括确认是哪个服务或应用程序出现了错误,以及该错误的特点和表现。


收集日志:收集相关的日志信息,包括应用程序日志、系统日志、容器日志等,并根据需要进行分析和排查。


检查资源:检查服务器的资源使用情况,包括 CPU、内存、磁盘、网络等,查看是否有异常占用或资源不足等问题。


检查服务状态:检查相关服务的状态,包括进程、端口、网络等,查看是否有服务未启动或无法访问等问题。


排查网络问题:对于涉及网络的问题,需要排查网络设备、配置、连接等方面的问题,查看是否有网络故障或防火墙等问题。


恢复服务:根据问题的性质和严重程度,采取相应的措施进行处理和恢复,例如重启服务、恢复数据、调整配置等。


预防措施:对于出现过问题的服务器,需要进行记录和总结,以便下次出现类似问题时能够更快地排查和解决,同时还需要考虑加强预防措施,如监控、备份等。


10.k8s有哪些资源,简单说一下分别用于哪些场景

Deployment(部署):Deployment 是一个控制器,用于管理 Pod 和 ReplicaSet 的生命周期,提供了更新应用程序的能力。Deployment 常用于无状态应用程序的部署,通过创建和管理 ReplicaSet,确保应用程序的实例数满足要求,并提供应用程序的滚动升级功能。Deployment 可以通过自定义的方式管理应用程序的升级和回滚过程,保证应用程序的可用性和稳定性。


StatefulSet(有状态副本集):StatefulSet 是一个控制器,用于管理有状态应用程序的部署。与 Deployment 不同,StatefulSet 可以为每个 Pod 分配一个唯一的标识符,并且可以按照指定的顺序启动或停止这些 Pod。StatefulSet 可以保证有状态应用程序在部署、扩容和升级过程中的数据持久性和有序性,例如数据库、分布式存储系统和消息队列等。


DaemonSet(守护进程集):DaemonSet 是一个控制器,用于在集群中的每个节点上运行一个或多个 Pod。通常用于运行系统服务和 Daemon 进程,例如监控代理、日志收集器和负载均衡器等。DaemonSet 可以确保每个节点上都有相同数量的 Pod 运行,以提供服务的可用性和可靠性。


总之,Deployment 适用于无状态应用程序的部署,StatefulSet 适用于有状态应用程序的部署,而 DaemonSet 适用于在集群中的每个节点上运行相同的 Pod。根据应用程序的特点和需求,可以选择合适的控制器来管理应用程序的生命周期,并确保应用程序的可用性和稳定性。


11.k8s中Service是通过什么机制确定流量负载到哪个pod的

在确定流量负载均衡的过程中,Kubernetes 使用的是 Service 的选择器来确定后端 Pod 的标识符。选择器是在 Service 的定义中指定的一组标签(Label),它用于识别符合条件的 Pod。当 Service 接收到请求时,它会根据选择器来查找匹配的 Pod,并将请求转发到其中一个 Pod 上。如果后端 Pod 的数量发生变化,Service 会自动更新负载均衡策略,确保请求能够正确地负载均衡到可用的 Pod 上。


12.简述一下k8s中Pod可能位于的状态

Pending:Pod 已经被 Kubernetes 创建,但是它的所有容器都还没有被调度到节点上。这种状态通常发生在集群中没有足够的资源来调度新的 Pod。


Running:Pod 中的所有容器都已经被调度到节点上,并且至少有一个容器正在运行。


Succeeded:Pod 中的所有容器已经成功地完成了它们的任务,并且已经退出。


Failed:Pod 中的所有容器都已经退出,并且至少有一个容器以错误状态退出。


Unknown:Kubernetes 无法获取 Pod 的状态。这种状态通常发生在无法与 Pod 通信时,例如 Pod 的节点已经宕机。


13. 简述一下k8s中创建一个Pod的流程

客户端向apiserver发起pod创建请求

apiserver收到请求,会把pod信息存入到etcd中

scheduler会根据调度算法将pod分配到合适的node节点

node上kubelet通过监测etcd中记录创建pod


目录
相关文章
|
5天前
|
运维 监控 Linux
深入理解Linux系统运维:命令行工具的力量
【9月更文挑战第14天】在Linux的世界里,命令行工具是系统管理员的瑞士军刀。本文将带你领略命令行的魅力,从基础操作到高级技巧,让你的运维工作更加高效和精准。准备好了吗?让我们一起开启这段探索之旅!
|
1月前
|
存储 运维 监控
运维.Linux下执行定时任务(中:Cron的常用替代方案)
本文是关于Linux下执行定时任务系列的第二部分,主要探讨除了Cron之外的常用替代方案。介绍了Systemd Timers、Anacron及at命令三种工具,它们分别适用于不同场景下的定时任务需求。文章详细分析了每种工具的特点、工作原理、基本使用方法及其高级功能,并对比了它们各自的优缺点,帮助读者根据实际情况选择最适合的定时任务解决方案。此外,还提供了指向具体实例和进一步阅读材料的链接。
67 4
运维.Linux下执行定时任务(中:Cron的常用替代方案)
|
20天前
|
图形学 开发者 存储
超越基础教程:深度拆解Unity地形编辑器的每一个隐藏角落,让你的游戏世界既浩瀚无垠又细节满满——从新手到高手的全面技巧升级秘籍
【8月更文挑战第31天】Unity地形编辑器是游戏开发中的重要工具,可快速创建复杂多变的游戏环境。本文通过比较不同地形编辑技术,详细介绍如何利用其功能构建广阔且精细的游戏世界,并提供具体示例代码,展示从基础地形绘制到植被与纹理添加的全过程。通过学习这些技巧,开发者能显著提升游戏画面质量和玩家体验。
52 3
|
1月前
|
移动开发 运维 网络协议
运维必备 | Linux netstat命令详解
运维必备 | Linux netstat命令详解
|
1月前
|
运维 监控 Unix
运维必看,Linux 远程数据同步工具详解。
运维必看,Linux 远程数据同步工具详解。
|
1月前
|
Linux 数据安全/隐私保护 Perl
解锁Linux高手秘籍:文件操作+命令解析大揭秘,面试场上让你光芒万丈,技术实力惊艳四座!
【8月更文挑战第5天】Linux作为服务器与嵌入式系统的基石,其文件管理和命令行操作是技术人员必备技能。本文从文件操作和基础命令两大方面,深入浅出地解析Linux核心要义,助你在面试中脱颖而出。首先探索文件系统的树状结构及操作,包括使用`ls -la`浏览文件详情、`touch`创建文件、`rm -r`慎删目录、`cp`与`mv`复制移动文件、以及利用`find`搜索文件。接着掌握命令行技巧,如用`cat`、`more`和`less`查看文件内容;借助`grep`、`sed`与`awk`处理文本;运用`ps`、`top`和`kill`管理进程;并通过`chmod`和`chown`管理文件权限。
62 8
|
1月前
|
存储 Linux Shell
运维系列.Linux下的用户管理
运维系列.Linux下的用户管理
19 1
|
21天前
|
运维 监控 Linux
深入理解Linux系统运维:命令行与脚本的奥秘
【8月更文挑战第30天】在Linux的世界里,命令行是运维人员的灵魂之窗。掌握命令行,就像握住了一把钥匙,能开启系统管理的宝藏箱。本文将带你走进Linux的命令行世界,通过实际代码示例,解锁那些高效管理和维护系统的秘籍。你将学到不仅仅是命令本身,更是如何将这些命令编织成强大的脚本,让日常的运维工作变得游刃有余。准备好跟随我的步伐,一起深入探索Linux命令行与脚本的奥秘吧!
|
1月前
|
运维 Linux Shell
从Linux小白到大神的逆袭之路:解锁高级自测秘籍,让你的Linux技能瞬间燃爆,成为运维界的超级英雄!
【8月更文挑战第5天】Linux作为开源世界的基石,凭借其强大功能与高度可定制性,吸引着众多技术爱好者与专业人士。对于希望精进Linux系统管理的学习者来说,“Linux高级自测学习”是一次技术深潜之旅,也是对个人极限的挑战。本学习路径首先回顾基础操作,并进阶至LVM磁盘管理、系统性能优化、复杂网络配置与安全、自动化运维及容器化技术等领域。通过实践与探索,你将逐步解锁Linux潜力,成为高手。技术之路永无止境,保持好奇与求知心至关重要。
46 4