Home 运维技术 过往的一些笔试题面试题 By FreelyTomorrow Aug 25, 2023 9 min read 过往的一些笔试题面试题 运维的笔试题和面试题,持续更新中... 1.如何显示已加载的内核模块? lsmod 2. 如何查看linux kernel版本号? [root@wordpress-187 /]#uname -a Linux wordpress-187 4.18.0-193.14.2.el8_2.x86_64 #1 SMP Sun Jul 26 03:54:29 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux 3.如何查看一个文件依赖的动态链接库? objdump命令: [root@wordpress-187 /]#objdump -x /usr/lib64/libc-2.28.so | grep NEEDED NEEDED ld-linux-x86-64.so.2 readelf命令: [root@wordpress-187 /]#readelf -a /usr/lib64/libc-2.28.so | grep Shared Type: DYN (Shared object file) 0x0000000000000001 (NEEDED) Shared library: [ld-linux-x86-64.so.2] ldd命令: [root@wordpress-187 ~]#ldd /usr/lib64/libc-2.28.so /lib64/ld-linux-x86-64.so.2 (0x00007f9464be7000) linux-vdso.so.1 (0x00007ffde4f73000) 4.linux中在哪里可以配置dns /etc/hosts:利用hosts自动解析域名到ip /etc/resolv.conf:配置dns解析服务器地址 /etc/sysconfig/network-scripts/网卡名:网卡配置文件 5. 如何查看logfile最后100行内容 tail -100 ./access.log 6. 如何查看占用80端口的进程 netstat -tunlp | grep 80 7. linux中如何开启ip转发? echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf sysctl -p /etc/sysctl.conf 8. 如何查看一个目录占用磁盘空间大小? du -h --max-depth=1 9. 如何设置系统最大文件打开数量限制为55555? echo "fs.file-max = 55555" >> /etc/sysctl.conf sysctl -p /etc/sysctl.conf 10. 说明下列Raid技术至少需要几块磁盘: Raid0:两块,基于条带化技术将数据轮流写入两块磁盘 Raid1:两块,两块写入相同的数据,其中一块作为数据备份 Raid5:三块,每块数据都写入数据本身和奇偶校验值 Raid10:四块,先做成一组Raid1(两块存储,两块备份),再做Raid0 11. 简述raid0、1、5、10各自的优缺点 Raid 0 优点:读写性能高,磁盘利用率高 缺点:没有数据备份,安全性低 Raid 1 优点:一份数据一份备份,安全性高 缺点:写性能低(写两份) Raid 5 优点:数据条带化存储在磁盘,读写性能好,磁盘利用率为(n-1)/n 缺点:只能允许坏掉一块盘。 Raid 10 优点:读写性能高,安全性高 缺点:磁盘利用率低,成本高 12.简述虚拟机硬盘扩容的步骤? 为虚拟机添加硬盘 重启或重新扫描SCSI总线发现新设备 根据磁盘大小将其转为MBR或GPT类型 进行分区操作(fdisk或gdisk) 格式化文件系统 配置挂载 13. linux中使用u盘与windows系统交换数据有什么注意点 需要注意将U盘格式化为能够同时让Windows和Linux识别的文件系统,比如FAT32,exFAT。 Linux需要将U盘挂载后才能读取文件,和Windows不同。 14.简述磁盘无法写入可能得原因? 排除故障的话,可能是 挂载时使用了只读参数 磁盘被挂载在某个目录下,而当前操作的用户没有对这个目录的相关权限。 15.如何停止 PID 为 3836 的进程?停止不掉怎么办?再停不掉怎么办? 先kill 3836,默认使用-15信号正常终止进程。如果停不掉可以使用kill -9强制终止。 kill 9也杀不掉要考虑进程可能是僵尸进程,其本身占用的资源已经被释放,但父进程还存在,所以如果可以的话通过终止父进程来杀死这个僵尸进程; 最后一种情况则是进程运行在内核态,内核态忽略一切信号因此无法终止,只能通过重启服务器终止进程。 16.如何使用sed将文件file中所有///替换成aaa? sed -i 's/\/\/\//aaa/g' 17. 如何添加一个环境变量,立即生效,且重启后生效。 在/etc/profile文件中添加 export PATH="/usr/local/nginx/sbin/:$PATH" 然后source /etc/profile。 如果是只为某个用户添加,可以加载.bashrc或者.bash_profile中。 18. 目录下有文件名为file1,file2,file3,...file10000的10000个文件,如何删除file1001到file2000这1000个文件? for i in {1001..2000} do rm -f file${i} done 19. 有一个备份程序mybackup,需要在周一至周五下午1点和晚上8点各运行一次 0 13,16 1,5 * * mybackup 20. 分别写出命令:启动运行docker容器,停止容器,删除一个nginx容器,删除nginx镜像 docker run -d image_name docker stop container_id docker rm container_id docker rmi nginx:1.14 21. 如何在已经运行的容器里运行bash? docker exec -it container_id bash 22. 使用vim编辑器将文件中AAA替换为BBB :进入末行模式 :%s/AAA/BBB/g 23. 永久修改网卡地址 编辑网卡配置文件 /etc/sysconfig/network-scripts/ifcfg-eth0 24. 通过命令行给linux机器添加默认网关10.0.0.254 route add default gw 10.0.0.254 25. 在不unmount的情况下重新设置mount参数 在/etc/fstab写入挂载配置 mount -a 重新读取配置 26. 用iptables写一条放行80端口的防火墙规则 iptables -t filter -I INPUT -p tcp --dport 80 -j ACCEPT 27. 磁盘容量方面 inode怎么查看 查看inode使用情况 df -i 28. inode满了什么影响 磁盘分区Inode使用率达到100%会造成应用无法继续新建目录或者文件,但是一般此时通常系统内对应的磁盘空间还未用满。可以通过清除Inode占用高的文件或者目录、或者增加Inode数量来解决磁盘分区Inode使用率达到100%的问题。 可以通过df命令查看一些主要目录的inode占用百分比 df -i 解决方法 清除Inode占用高的文件或者目录 执行以下命令,分析根目录下的每个二级目录下有多少个文件。 for i in /*; do echo $i; find $i | wc -l; done 逐层进入Inode占用最高的目录,继续执行上述命令,逐步定位占用过高空间的文件或目录,最后进行相应清理。 2. 增加Inode数量 如果不允许清理磁盘中的文件,或者清理完可清理的文件后Inode使用率仍然较高,则可以需要通过备份数据、重新格式化磁盘增加Inode数、拷回数据等步骤,完成数据的保留并增加文件系统Inode数量。 卸载文件系统 umount /占用inode数量多的目录 格式化文件系统 mkfs.xfs /dev/sdb -N 1638400 # 一般根据1:16kb的比例 查看新的inode数量 dumpe2fs -h /dev/xvdb | grep node 29. 怎么查看服务器网络连接情况 netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}' 30. time_wait连接状态多,什么原因,怎么解决 原因 在高并发的场景下,会出现大量的 TIME_WAIT 连接。 大量的短连接存在 我方主动调用close()断开连接,收到对方确认后状态变为TIME_WAIT。TCP协议规定TIME_WAIT状态会一直持续2MSL(即两倍的分段最大生存期),以此来确保旧的连接状态不会对新连接产生影响。处于TIME_WAIT状态的连接占用的资源不会被内核释放,所以作为服务器,在可能的情况下,尽量不要主动断开连接,以减少TIME_WAIT状态造成的资源浪费。 解决 客户端,调整短链接为长链接,HTTP 请求的头部,connection 设置为 keep-alive,保持存活一段时间 服务器端允许 time_wait 状态的 socket 被重用缩减 time_wait 时间,设置为 1 MSL(即,2 mins) 34. 客户端向服务端发送syn包尝试建立连接,服务端发现该端口连接已经存在,回复客户端什么包 处于 establish 状态的服务端如果收到了客户端的 SYN 报文(注意此时的 SYN 报文其实是乱序的,因为 SYN 报文的初始化序列号其实是一个随机数),会回复一个携带了正确序列号和确认号的 ACK 报文,这个 ACK 被称之为 Challenge ACK。 接着,客户端收到这个 Challenge ACK,发现序列号并不是自己期望收到的,于是就会回 RST 报文,服务端收到后,就会释放掉该连接。 31. docker容器挂了怎么查看问题 可以通过docker inspect查看container状态,然后通过docker logs查看报错日志。 32. docker运行的服务器磁盘占用满了。怎么解决 Docker在不重建容器的情况下,日志文件默认会一直追加,时间一长会逐渐占满服务器的硬盘的空间,内存消耗也会一直增加。 docker logs -f container_name噼里啪啦一大堆很占用空间,致使磁盘空间被占满。 docker system df #查看Docker占用分布 docker stats #可以查看docker容器的内存占用 定时清理日志 logs=`find /var/lib/docker/containers/ -name *-json.log` cat /dev/null > $log 控制日志的数量和文件大小 命令行启动的容器 #docker run时添加--log-opt max-size=500m --log-opt max-file=3参数,如创建并运行 docker run -name xxx -p 80:80 --log-opt max-size=500m --log-opt max-file=3 xxx:v1 通过docker-compose配置的容器 通过配置容器docker-compose的max-size选项来实现 logging: driver: "json-file" options: max-size: "500m" # 日志文件大小 max-file: "6" # 日志的数量 33. Dockerfile的ADD和COPY有何不同? ADD命令:将本地文件添加到镜像,支持自动解压tar文件,支持通过URL将网络内容添加到镜像。 COPY命令:只支持将文件和目录从主机文件系统复制到镜像中的指定位置,不能自动解压也不支持网络文件。 39. Read Next By FreelyTomorrow Aug 16, 2024 使用Terraform在Ubuntu中部署KVM虚拟机 使用Terraform部署KVM虚拟机的详细流程 运维技术 Terraform KVM By FreelyTomorrow Jun 11, 2024 MySQL/Redis相关面试题 数据库运维(MySQL和Redis)的面试题总结 运维技术 MySQL Redis By FreelyTomorrow May 9, 2024 事件源模式和传统数据库方法在数据管理上的优劣分析 对事件源模式和传统数据库方法在应用程序性能影响、性能、扩展性和可靠性的分析;以及云原生环境下数据管理的最佳实践 云原生 By FreelyTomorrow Apr 24, 2024 关于Metrics_server在自托管环境下无法使用的问题 修复kubernetes的metrics server在自托管环境下因缺少CA证书而无法运行的问题。 Kubernetes
By FreelyTomorrow Aug 16, 2024 使用Terraform在Ubuntu中部署KVM虚拟机 使用Terraform部署KVM虚拟机的详细流程 运维技术 Terraform KVM
By FreelyTomorrow May 9, 2024 事件源模式和传统数据库方法在数据管理上的优劣分析 对事件源模式和传统数据库方法在应用程序性能影响、性能、扩展性和可靠性的分析;以及云原生环境下数据管理的最佳实践 云原生
By FreelyTomorrow Apr 24, 2024 关于Metrics_server在自托管环境下无法使用的问题 修复kubernetes的metrics server在自托管环境下因缺少CA证书而无法运行的问题。 Kubernetes
1.如何显示已加载的内核模块?
2. 如何查看linux kernel版本号?
3.如何查看一个文件依赖的动态链接库?
objdump命令:
readelf命令:
ldd命令:
4.linux中在哪里可以配置dns
5. 如何查看logfile最后100行内容
6. 如何查看占用80端口的进程
7. linux中如何开启ip转发?
8. 如何查看一个目录占用磁盘空间大小?
9. 如何设置系统最大文件打开数量限制为55555?
10. 说明下列Raid技术至少需要几块磁盘:
Raid0:两块,基于条带化技术将数据轮流写入两块磁盘
Raid1:两块,两块写入相同的数据,其中一块作为数据备份
Raid5:三块,每块数据都写入数据本身和奇偶校验值
Raid10:四块,先做成一组Raid1(两块存储,两块备份),再做Raid0
11. 简述raid0、1、5、10各自的优缺点
Raid 0
优点:读写性能高,磁盘利用率高
缺点:没有数据备份,安全性低
Raid 1
优点:一份数据一份备份,安全性高
缺点:写性能低(写两份)
Raid 5
优点:数据条带化存储在磁盘,读写性能好,磁盘利用率为(n-1)/n
缺点:只能允许坏掉一块盘。
Raid 10
优点:读写性能高,安全性高
缺点:磁盘利用率低,成本高
12.简述虚拟机硬盘扩容的步骤?
13. linux中使用u盘与windows系统交换数据有什么注意点
14.简述磁盘无法写入可能得原因?
排除故障的话,可能是
15.如何停止 PID 为 3836 的进程?停止不掉怎么办?再停不掉怎么办?
先kill 3836,默认使用-15信号正常终止进程。如果停不掉可以使用kill -9强制终止。
kill 9也杀不掉要考虑进程可能是僵尸进程,其本身占用的资源已经被释放,但父进程还存在,所以如果可以的话通过终止父进程来杀死这个僵尸进程;
最后一种情况则是进程运行在内核态,内核态忽略一切信号因此无法终止,只能通过重启服务器终止进程。
16.如何使用sed将文件file中所有///替换成aaa?
17. 如何添加一个环境变量,立即生效,且重启后生效。
在/etc/profile文件中添加
然后source /etc/profile。
如果是只为某个用户添加,可以加载.bashrc或者.bash_profile中。
18. 目录下有文件名为file1,file2,file3,...file10000的10000个文件,如何删除file1001到file2000这1000个文件?
19. 有一个备份程序mybackup,需要在周一至周五下午1点和晚上8点各运行一次
20. 分别写出命令:启动运行docker容器,停止容器,删除一个nginx容器,删除nginx镜像
21. 如何在已经运行的容器里运行bash?
22. 使用vim编辑器将文件中AAA替换为BBB
:进入末行模式
:%s/AAA/BBB/g
23. 永久修改网卡地址
编辑网卡配置文件 /etc/sysconfig/network-scripts/ifcfg-eth0
24. 通过命令行给linux机器添加默认网关10.0.0.254
25. 在不unmount的情况下重新设置mount参数
在/etc/fstab写入挂载配置
重新读取配置
26. 用iptables写一条放行80端口的防火墙规则
27. 磁盘容量方面 inode怎么查看
查看inode使用情况
28. inode满了什么影响
磁盘分区Inode使用率达到100%会造成应用无法继续新建目录或者文件,但是一般此时通常系统内对应的磁盘空间还未用满。可以通过清除Inode占用高的文件或者目录、或者增加Inode数量来解决磁盘分区Inode使用率达到100%的问题。
可以通过df命令查看一些主要目录的inode占用百分比
解决方法
执行以下命令,分析根目录下的每个二级目录下有多少个文件。
逐层进入Inode占用最高的目录,继续执行上述命令,逐步定位占用过高空间的文件或目录,最后进行相应清理。
2. 增加Inode数量
如果不允许清理磁盘中的文件,或者清理完可清理的文件后Inode使用率仍然较高,则可以需要通过备份数据、重新格式化磁盘增加Inode数、拷回数据等步骤,完成数据的保留并增加文件系统Inode数量。
卸载文件系统
格式化文件系统
查看新的inode数量
29. 怎么查看服务器网络连接情况
30. time_wait连接状态多,什么原因,怎么解决
原因
我方主动调用close()断开连接,收到对方确认后状态变为TIME_WAIT。TCP协议规定TIME_WAIT状态会一直持续2MSL(即两倍的分段最大生存期),以此来确保旧的连接状态不会对新连接产生影响。处于TIME_WAIT状态的连接占用的资源不会被内核释放,所以作为服务器,在可能的情况下,尽量不要主动断开连接,以减少TIME_WAIT状态造成的资源浪费。
解决
34. 客户端向服务端发送syn包尝试建立连接,服务端发现该端口连接已经存在,回复客户端什么包
处于 establish 状态的服务端如果收到了客户端的 SYN 报文(注意此时的 SYN 报文其实是乱序的,因为 SYN 报文的初始化序列号其实是一个随机数),会回复一个携带了正确序列号和确认号的 ACK 报文,这个 ACK 被称之为 Challenge ACK。
接着,客户端收到这个 Challenge ACK,发现序列号并不是自己期望收到的,于是就会回 RST 报文,服务端收到后,就会释放掉该连接。
31. docker容器挂了怎么查看问题
可以通过docker inspect查看container状态,然后通过docker logs查看报错日志。
32. docker运行的服务器磁盘占用满了。怎么解决
Docker在不重建容器的情况下,日志文件默认会一直追加,时间一长会逐渐占满服务器的硬盘的空间,内存消耗也会一直增加。
docker logs -f container_name噼里啪啦一大堆很占用空间,致使磁盘空间被占满。
定时清理日志
控制日志的数量和文件大小
通过配置容器docker-compose的max-size选项来实现
33. Dockerfile的ADD和COPY有何不同?
ADD命令:将本地文件添加到镜像,支持自动解压tar文件,支持通过URL将网络内容添加到镜像。
COPY命令:只支持将文件和目录从主机文件系统复制到镜像中的指定位置,不能自动解压也不支持网络文件。
39.
Read Next
使用Terraform在Ubuntu中部署KVM虚拟机
使用Terraform部署KVM虚拟机的详细流程
MySQL/Redis相关面试题
数据库运维(MySQL和Redis)的面试题总结
事件源模式和传统数据库方法在数据管理上的优劣分析
对事件源模式和传统数据库方法在应用程序性能影响、性能、扩展性和可靠性的分析;以及云原生环境下数据管理的最佳实践
关于Metrics_server在自托管环境下无法使用的问题
修复kubernetes的metrics server在自托管环境下因缺少CA证书而无法运行的问题。