在本文中,我们将讨论 30 个 Linux 系统管理员面试问题以及经验丰富的专业人士的答案。
(1) 为什么需要 LVM ?
LVM(Logical volume management)推荐使用 LVM 管理 linux 服务器上的磁盘或存储,可以在线调整 LVM 分区的大小,而不用停止服务器。
(2) 如何检查内存和 CPU 统计信息 ?
使用 free 和 vmstat 命令,可以分别显示物理和虚拟内存统计信息。在 sar 命令的帮助下,我们可以查看 CPU 利用率和其他统计数据。
(3) sar 提供什么功能,sar 日志存储在哪个位置 ?
sar 收集、报告或保存系统活动信息。默认版本的 sar 命令 (CPU 利用率报告) 可能是用户开始系统活动调查时首先运行的工具之一,因为它监视主要的系统资源。如果 CPU 利用率接近 100% (user + nice + system),则采样的工作负载是 CPU 限制的。
sar 命令的默认日志位置为:/var/log/sa/sa{{dd}} dd 参数代表当前日期
(4) 如何增加 LVM 分区 ?
- 使用 lvextend 命令,例如: lvextend -L +100M /dev/mapper/my-lvm
- 使用 resize2fs 命令,例如:resize2fs /dev/mapper/my-lvm
- 使用 df 命令检查分区大小
(5) 如何缩小 LVM 分区 ?
- 使用 umount 命令卸载文件系统
- 使用 resize2fs 命令, 例如:resiz2fs /dev/mapper/my-lvm 10G
- 使用 lvreduce 命令, 例如: lvreduce -L 10G /dev/mapper/my-lvm
注意: 在生产环境中,不建议减少 lvm 分区,因为它可能导致数据损坏。
(6) 如何在原始磁盘上创建分区 ?
使用 fdisk 实用程序,我们可以在原始磁盘上创建分区。
- 运行 fdisk /dev/hd (IDE) or /dev/sd (SCSI)
- 输入 n 创建新分区
- 创建分区后,输入 w 将更改写入分区表
- 输入 partprobe 内核重新读取分区表
- 运行 mkfs 命令格式化分区
(7) 内核模块 (kernel modules) 所在的位置在那里 ?
/lib/modules/kernel-version 目录存储所有内核模块或编译的驱动程序,使用 lsmod 命令可以查看所有已安装的内核模块。
(8) 什么是 umask ?
umask (User file creation mask),该掩码控制在创建文件和目录时设置哪些文件权限。
(9) 如何给用户设置永久 umask ?
要为用户永久设置此值,必须将其放入适当的profile文件中,该文件取决于用户的默认 shell。
(10) 如何在单用户模式下引导 RHEL / Rocky Linux / CentOS ?
- 重新启动并进入 grub 提示符
- 转到以 linux 开头的行尾,输入 rd.break 并回车
- 用rw模式挂载root文件系统,然后执行 chroot /sysroot
- 处理故障
(11) 如何使用 nfs 协议共享目录 ?
首先编辑 /etc/exportfs 配置文件,增加一行
/<directory-name> <ip or Network>(Options)
然后重启nfs服务,或者执行 exportfs -arv
(12) 如何检查和挂载 nfs 共享 ?
使用 showmount 命令可以查看使用 nfs 共享的目录,例如:showmount -e 192.168.1.110
使用 mount 命令可以在 linux 机器上挂载 nfs 共享。
(13) SMTP,DNS,FTP,DHCP,SSH,squid默认端口是什么 ?
- Service Port
- SMTP 25
- DNS 53
- FTP 20 (data transfer) , 21 ( Connection established)
- DHCP 67/UDP(dhcp server) , 68/UDP(dhcp client)
- SSH 22
- Squid 3128
(14) 什么是 Network Bonding ?
Network bonding 是将多个网卡聚合到一个绑定接口中,以提供容错和高性能。Network bonding 也称为 NIC Teaming。
(15) Linux 中有哪些不同的 Network bonding 模式 ?
- balance-rr or 0 – 轮循模式,容错和负载均衡
- active-backup or 1 – active-backup 容错模式
- balance-xor or 2 – balance-xor 容错和负载平衡
- broadcast or 3 – 容错广播模式,所有传输都在从接口上发送
- 802.3ad or 4 – IEEE 802.3ad 动态链路聚合模式。
- balance-tlb or 5 – TLB (Transmit Load Balancing) 模式,实现容错和负载均衡。
- balance-alb or 6 – ALB (Active Load Balancing) 模式,实现容错和负载均衡。
(16) 如何查看和验证绑定接口的状态 ?
/proc/net/bonding/bond0 文件包含绑定接口的所有细节,绑定接口名称可能因设置而异。
(17) 如何查看缺省路由和路由表 ?
netstat -nr
和 ip route show
命令可以查看缺省路由, route -n
命令可以查看路由表。
(18) 如何检查linux 服务器中哪些端口正在监听 ?
可以使用 ss 命令, netstat - listen 命令,lsof -i 命令查看监听端口。
(19) docker 容器的默认数据目录是什么 ?
docker 容器的默认数据目录为 /var/lib/docker
(20) docker 和 podman 的主要区别是什么 ?
docker 是基于守护进程的,这意味着容器只有在 docker 守护进程运行时才能工作,而 podman 是无守护进程的,这意味着容器不需要任何守护进程也能运行。
(21) Linux 如何升级内核 ?
我们必须永远不要升级 Linux 内核,总是使用 dnf,yum,rpm 命令安装新内核,因为升级内核会使 Linux 系统处于不可启动状态。
(22) 何在 linux 操作系统上扫描新分配的 luns 而不需要重启 ?
扫描新分配的 luns (Logical Unit Number) 有两种方式 :
Method:1 如果安装了 sg3 rpm,则运行该命令‘rescan-scsi-bus.sh’
Method:2 运行命令 echo "– – –" > /sys/class/scsi_host/hostX/scan
(23) 如何查看 Linux 服务器上 HBA 卡的 WWN 号 ?
使用 “systool -c fc_host -v | grep port_name”命令可以查询 HBA 卡的 WWN 号
(24) 如何添加和更改内核参数 ?
要在 Linux 中设置内核参数,编辑文件“ /etc/sysctl.conf”保存文件,并运行“ sysctl -p”命令,此命令将永久进行更改不重启机器。
(25) 如何逐行调试 shell 脚本 ?
要调试 shell 脚本,请在 bash 命令中使用 -x 选项,后跟脚本名称。
$ bash -x script-name.sh
(26) Puppet 中的 manifests 是什么 ?
Puppet 中的 manifests 是指定客户端配置的文件
(27) 在 Puppet Server 中使用哪个命令对请求的证书签名 ?
2.X 版本中使用‘puppetca –sign hostname-of-agent’命令, 3.X版本中使用‘puppet ca sign hostname-of-agent’命令。
(28) 如何以及在哪里使用 Ansible ad-hoc 命令 ?
使用以下语法来使用 ad-hoc 命令
$ ansible [pattern] -m [module] -a <module option>
$ ansible webservers -m shell -a 'df -Th'
ad-hoc 命令用于执行快速任务和测试,在 ansible 主机上不需要编写任何 playbook 运行 ad-hoc 命令。
(29) 如何查找 /var 目录下大小超过 200MB 的文件 ?
$ sudo find /var -type f -size +100M -exec ls -lah {} \;
(30) 如何查看 /var 中创建超过30天的文件并将其重定向到文件中 ?
$ find /var -type f -mtime +30 -exec ls -lah {} \; > /tmp/a.tmp
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。