「SA/CAREER」- 运维工程师:面试题

Linux 系统运维相关的面试题(问答题)

Linux 公社今天
这里给大家整理了一些 Linux 系统运维相关的面试题,有些问题没有标准答案,希望要去参加 Linux 运维面试的朋友,可以先思考下这些问题;

一、Linux 操作系统知识

1)常见的 Linux 发行版本都有什么?你最擅长哪一个?它的官网网站是什么?说明你擅长哪一块?

2.Linux 开机启动流程详细步骤是什么?系统安装完,忘记密码如何破解?

3)企业中 Linux 服务器系统分区标准是什么?(以硬盘为 300G,内存 16G 为例)

4)某一天突然发现 Linux 系统文件只读,该怎么办呢?完整操作步骤;

5)安装一台系统使用 DVD 光盘安装,如何安装 50 台 Linux 系统如何安装呢?思考一下;

6)用虚拟机安装了一台 Linux 系统,突然想克隆一台服务器,克隆后发现无法上网,如何解决?

7.Linux 网卡配置文件路径是什么?要使服务器上外网,必须满足的条件有哪些?需要配置什么?

8)一般可以使用什么软件远程 linux 服务器?通过什么上传文件和下载文件?

9./mnt 目录主要用于什么?/root 目录跟 root 用户有什么关系?/ 根目录与 /boot 目录有什么联系?

10)某一天误操作,执行了 rm -rf *,会有哪些情况发生?请举例;

二、Linux 命令及文件操作

1)在 /tmp/ 目录下创建 test.txt 文件,内容为: Hello,World! ,用一个命令写出来;

2)给 test.txt 文件除所有者之外增加执行权限,最终以数字写出文件的权限;

3)用 vi 命令编辑 test.txt,如何跳转到末行,首行,行首、行末,如何在光标行下一行插入,如何复制 5 行,删除 10 行,查找 jingfeng 的字符、把 jingfeng 替换为 jfedu.net

4)查找 linux 系统下以 txt 结尾,30 天没有修改的文件大小大于 20K 同时具有执行权限的文件并备份到 /data/backup/ 目录下;

5)当前 test.txt 所属的用户为 root,组为 abc,请将 test.txt 使拥有者为 abc,组为 root,写出命令;

6)如何修改 Linux 启动级别为字符模式并永久生效,如何临时、永久关闭 selinux 及防火墙,请分别写出操作方法;

7)每次开机在 /tmp 目录下创建一个当天的日期文件夹(提示:当前日期表示的方法为:`date +%Y%m%d`)

8)如何查看文件内容,命令有哪些?查看文件第 1 行到 3 行,查看文件最后一行;

9)查看 linux 服务器 IP 的命令,同时只显示包含 ip 所在的行打印出来;

10)将普通用户 test 加入 root 组的命令是?

三、Linux 磁盘及软件管理操作

1)如何添加一块新的 50G 硬盘到 linux 服务器系统作为单独的分区,并正在使用?需要哪些操作步骤?

2)有个金士顿 U 盘,需要往服务器 /var/www/html/ 目录下上传一个 index.html 文件,如何操作并完成;

3)有一块移动硬盘,上面有 300G 数据,如何快速 cp 到 linux 服务器?

4)光盘里面有一个 httpd-2.2.15.xx.rpm 包,如何挂载并安装呢?

5)使用 rpm 命令安装、卸载、删除、更新 ntp-0.7.12.x86_64.rpm 这个软包;

6./var/www/html/ 是网站的发布目录,如何每天凌晨 0 点 30 对其进行自动备份,写出操作步骤?

7)使用 tar 命令打包并压缩 /root 目录,然后移动到 /tmp 下,将其权限设置其他人只读;

8.Yum 命令与 rpm 命令的区别?如何使用 rpm 安装一个有依赖的包?

9)在这个月内,每天的早上 6 点到 12 点中,每隔 2 小时创建一个 test.txt 文件,内容为 ok,如何实现?

10)将 /usr/local/test 目录下大于 100K 的文件转移到 /tmp 目录下;

11)简述 raid0 raid1 raid5 三种工作模式的工作原理及特点;

12)如何查看占用端口 8080 的进程;

四、Linux 服务配置及管理

1)请写出 apache2.X 版本的两种工作模式,以及各自工作原理。如何查看 apache 当前所支持的模块,并且查看是工作在哪种模式下?

2.Linux 下 nfs 在客户端无法挂载,请写出排查步骤?

3.Linux 下已经部署了 dhcp 服务器,客户端无法获取的 IP,如何解决?

4)常见的 FTP 软件有哪些?Linux 最常用的是?如何共享一个资源让他人使用用户名和密码访问?

5)如何禁止 FTP 使用匿名用户登录?命令行如何访问 ftp 服务器?

6.ApacheWEB 服务器的发布目录在哪里?

7.ApacheWEB 服务器有几种工作模式,每种模式的简单区别?

8.MySQL 服务器的用途是?Apache 和 mysql 可以安装在一台机器吗?如何查看 apache 和 mysql 端口和进程?

9)如何在虚拟机上面部署 4 个网站,访问的域名分别为 www.a1.com test.a1.com www.a2.com test.a2.com?

10)假设 Apache 产生的日志文件名为 access_log,在 apache 正在运行时,执行命令 mv access_log access_log.bak,执行完后,请问新的 apache 的日志会打印到哪里,为什么?

11)我们都知道 FTP 协议有两种工作模式,说说它们的大概的一个工作流程?

12.Linux 内核引导时,从哪个文件中读取要加载的文件系统;

13)写出下面服务的常用端口 ftp http dns snmp pop3、dhcp、nfs、mysql、samba 等服务;

14.Mysql 创建数据库的命令,创建表的命令,插入语句的命令?

15.Mysql 备份命令?Mysql 如何给 root 用户对 jfedu 授权访问,密码为 jfedu.net,请写出命令?

16.Mysql 忘记密码该如何操作呢?

17.Linux 运维工程师都需要具备哪些技能和职业品质?

Linux 公社的 RSS 地址:https://www.linuxidc.com/rssFeed.aspx
本文永久更新链接地址:https://www.linuxidc.com/Linux/2018-09/154458.htm

打印文件前三行

head -n 3

查询文件以 abc 结尾的行

grep -E ‘abc$’ foo.txt

查找文件中为空的行所在的行号

grep -n -E ‘^\s*$’ foo.txt

配置指定行,并显示后五行

grep -A 5 key foo.txt

匹配 IPv4 地址的正则表达式

https://www.regular-expressions.info/ip.html

这不是一个最好的写法:

\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}

下面是严格的写法:

(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.

(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.

(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.

(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)

上面包含了前导零的情况。下面去除了前导零的可能:

(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])\.

(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])\.

(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])\.

(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])

如何查看当前用户最大的线程数,以及如何修改?

在 Linux 中,没有对每个进程单独限制一个单独的线程,只有系统上进程总数的限制,使用 cat /proc/sys/kernel/threads-max 查看最大的线程数。默认值 = 内存页数 / 4;

在 Linux 中,线程基本上只是用 Linux 上的共享地址空间的进程;

单个用户可能创建的进程数量(以及线程数)也有限制:

  • ulimit -a | grep -i ‘max user proce’
  • ulimit -u
  • ulimit -u 62788

有关这些限制的详细信息,请参阅 ulimit/getrlimit 指令;

常见打包工具,及相应的解压参数

tar

  • tar -cf log.tar /var/log/*
  • tar -xf log.tar

zip

  • zip -r log.zip /var/log/
  • zip log.zip /var/log/cron.log
  • unzip log.zip

ar

  • ar r log.a /var/log/*.log
  • ar x log.a

cpio

  • ls /var/log/ | cpio -o > log.cpio
  • cpio -i < log.cpio

每周六凌晨 03:15 运行脚本

15 3 * * 6 root perl /home/shell/collect.pl

十月份,每天早上六点到 12 点,每隔 2 两小时执行一次脚本

0 6-12/2 * 10 * root /path/to/foo.sh

使用 sed 将回车替换成空行

sed ‘:a;N;$!ba;s/\n/ /g’ file
tr ‘\n’ ‘ ‘ < foo.txt

添加路由

route add -net 192.168.3.0 netmask 24 default gw 192.168.1.254 dev eth0
ip route add 192.168.3.0/24 via 192.168.1.254 dev eth0

查找修改天数大于 30 天的文件

30 天前修改的:find ./ -type f -mtime +30 -exec rm -rf {} \;

移动大于 100k 的文件,移动到 /tmp 下

find ./ -type f -size +100k

查看服务器上 TCP 连接状态及数量

netstat -n | awk ‘/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}’ | column -t

HostA 有私钥,HostB、HostC 有公钥,连接到 B,再连接到 C

https://serverfault.com/questions/934642/ssh-from-a-through-b-to-c-using-private-key-on-a
ssh -J root@HostB root@hostC
ssh -o ProxyCommand=’ssh -W %h:%p B’ C

keepalived 原理

以 VRRP 协议为实现基础的,VRRP 全称 Virtual Router Redundancy Protocol,即「虚拟路由冗余协议」;

虚拟路由冗余协议,可以认为是实现路由器高可用的协议,即将 N 台提供相同功能的路由器组成一个「路由器组」,这个组里面有「一个 master」和「多个 backup」,master 上面有一个对外提供服务的 vip(该路由器所在局域网内其他机器的默认路由为该 vip),master 会发组播,当 backup 收不到 vrrp 包时就认为 master 宕掉了,这时就需要根据 VRRP 的优先级来选举一个 backup 当 master。这样的话就可以保证路由器的高可用了;

keepalived 主要有三个模块,分别是 core、check、vrrp:

  • core – 为 keepalived 的核心,负责主进程的启动、维护以及全局配置文件的加载和解析;
  • check – 负责健康检查,包括常见的各种检查方式;
  • vrrp – 模块是来实现 VRRP 协议的;

MySQL 主从同步延迟

最简单的减少 slave 同步延时的方案就是在架构上做优化:

  1. 尽量让主库的 DDL 快速执行;
  2. 还有就是主库是写,对数据安全性较高,比如 sync_binlog=1,innodb_flush_log_at_trx_commit = 1 之类的设置,而 slave 则不需要这么高的数据安全,完全可以讲 sync_binlog 设置为 0 或者关闭 binlog,innodb_flushlog 也可以设置为 0 来提高 sql 的执行效率;
  3. 另外就是使用比主库更好的硬件设备作为 slave;
  4. 就是把,一台从服务器单独作为备份使用,而不提供查询,那边他的负载下来了,执行 relay log 里面的 SQL 效率自然就高了;
  5. 加从服务器喽,这个目的还是分散读的压力,从而降低服务器负载;

MySQL 备份恢复

mysqldump
mysqlhotcopy
https://www.cnblogs.com/zejin2008/p/4638047.html

配置 Nginx、Apache 反向代理

Nginx:proxy_pass
Apache:

模块:
mod_proxy.so


mod_proxy_ajp.so


mod_proxy_balancer.so


mod_proxy_connect.so


mod_proxy_http.so

反向代理:
ProxyRequests Off


ProxyPass /clusterDemo http://127.0.0.1:8081/clusterDemo


ProxyPassReverse /clusterDemo http://127.0.0.1:8081/clusterDemo


ProxyPass /clusterDemo2 http://127.0.0.1:8082/clusterDemo2


ProxyPassReverse /clusterDemo2 http://127.0.0.1:8082/clusterDemo2


ProxyPass /clusterDemo3 http://127.0.0.1:8083/clusterDemo3


ProxyPassReverse /clusterDemo3 http://127.0.0.1:8083/clusterDemo3


#8888 为 apache 的监听端口


<proxy AllowOverride None


Order Deny,Allow


Allow from all

MySQL 备份与还原详解

https://www.cnblogs.com/zejin2008/p/4638047.html