找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

4767

积分

0

好友

665

主题
发表于 5 天前 | 查看: 34| 回复: 0

Linux运维核心面试题:35个必考知识点精讲与实战解析 - 图片 - 1

转自:https://mp.weixin.qq.com/s/xgrWBLkVzDwA-1BCEi5e8g

下面是一名运维人员求职数十家公司总结的 Linux 运维面试题,希望能为大家的求职之路提供一些参考。

1、现在给你三百台服务器,你怎么对他们进行管理?

管理三百台服务器的常见思路如下:
1)设定跳板机,使用统一账号登录,这主要是从安全管控和登录审计的角度考虑。
2)使用 SaltStack、Ansible、Puppet 这类自动化工具进行系统的统一调度与配置管理。
3)建立简单的服务器 CMDB(配置管理数据库),记录每台服务器的系统、配置、应用等信息,便于日常查阅和维护。

2、简述 RAID0、RAID1、RAID5 三种工作模式的工作原理及特点

RAID 技术能把多块硬盘整合成一个大逻辑盘,还可以在这个大逻辑盘上再分区存放数据。它的另一个重要功能是提供冗余(备份)。常用的 RAID 级别有 0、1、5、10。

RAID 0,可以由一块或多块盘组合。

  • 优点:读写速度最快,是 RAID 中性能最好的。
  • 缺点:没有冗余,任何一块硬盘损坏,所有数据都会丢失。

RAID 1,只能由 2 块盘组成,盘的大小可以不同,总容量以较小的那块盘为准。

  • 相当于一块盘完全作为另一块的镜像备份,提供了 100% 的冗余。
  • 缺点:资源利用率低,成本高。

RAID 5,至少需要 3 块盘,总容量为 单盘容量 * (n-1),允许损坏一块盘而不丢失数据。

  • 特点:读写性能一般,读性能尚可,写性能较差。

总结对比:

  • 冗余能力从好到坏:RAID1 > RAID10 > RAID5 > RAID0
  • 性能从好到坏:RAID0 > RAID10 > RAID5 > RAID1
  • 成本从低到高:RAID0 < RAID5 < RAID1 < RAID10

在实际的网络/系统架构中,通常会根据数据的重要性和访问需求来选择合适的 RAID 级别:

  • 单台重要服务器(盘不多):系统盘可采用 RAID1。
  • 数据库服务器:主库推荐 RAID10;从库可以考虑 RAID5 或 RAID0(如果追求维护成本,主从都可使用 RAID10)。
  • WEB/应用服务器:如果没有海量数据,可采用 RAID5 或单盘 RAID0。
  • 监控、多台应用服务器:可采用 RAID0 或 RAID5。

3、LVS、Nginx、HAproxy 有什么区别?工作中你怎么选择?

  • LVS:工作在 OSI 模型的四层(传输层),进行端口转发。
  • HAproxy:可以工作在四层和七层,是一款专业的代理服务器。
  • Nginx:本质上是一款 WEB 服务器、缓存服务器,通过模块也能实现七层的反向代理与负载均衡。

区别:LVS 基于四层转发,只能做端口的转发。而基于 URL、目录等应用层信息的转发,LVS 无法实现。

工作选择建议:

  • HAproxy 和 Nginx 支持七层转发,因此可以实现基于 URL 和目录的转发。
  • 在并发量极高的场景下,应优先选择 LVS。对于大多数中小型公司而言,并发量没有那么大。
  • 选择 HAproxy 或 Nginx 通常就足够了。由于 HAproxy 是专业的代理服务器,配置相对简单,因此对于中小型企业,更推荐使用 HAproxy。

4、Squid、Varnish 和 Nginx 有什么区别,工作中你怎么选择?

Squid、Varnish 和 Nginx 都可以作为代理服务器(反向代理/缓存代理)。

什么是代理服务器?
它能代替用户去访问公网,并将获取到的数据缓存到本地。当用户下次请求相同资源时,代理服务器直接从本地响应。如果本地没有缓存,代理服务器会代替用户去访问公网,获取数据并缓存下来。

区别:

  1. Nginx 本质是反向代理/WEB 服务器,通过第三方插件可以实现缓存功能,但原生支持的特性不多,通常只能缓存静态文件。
  2. 从缓存功能专业度来看,VarnishSquid 是专业的缓存服务,而 Nginx 的缓存功能由第三方模块实现。
  3. Varnish 在技术上优于 Squid,它采用了可视化页面缓存技术。在内存利用率和性能上,Varnish 通常高于 Squid,并且其管理端口功能强大,支持使用正则表达式快速、批量清除部分缓存。它是内存缓存,速度极快,但容量受内存限制,非常适合缓存页面和图片。
  4. Squid 的优势在于拥有完整、庞大的缓存技术资料和丰富的生产环境应用案例。

工作中选择:
如果需要构建专业的缓存服务,应优先选择 Squid 或 Varnish。

5、Tomcat 和 Resin 有什么区别,工作中你怎么选择?

  • 区别:Tomcat 用户基数大,可参考的文档和社区资源非常丰富;Resin 用户相对较少,可参考的资料也少。
    两者最主要的区别是,Tomcat 是标准的 Java 容器,性能方面通常比 Resin 稍差一些。但在稳定性和对 Java 程序的兼容性上,Tomcat 通常更好。

工作中选择:目前很多大型互联网公司追求极致性能,会选择 Resin;而大多数中小型公司更看重稳定性和程序兼容性,因此 Tomcat 是更常见的选择。

6、什么是中间件?什么是 JDK?

中间件介绍:

中间件是一种独立的系统软件或服务程序,分布式应用软件借助它在不同的技术之间共享资源。它位于客户机/服务器的操作系统之上,管理计算机资源和网络通信,是连接两个独立应用程序或独立系统的软件。
即使相连的系统具有不同的接口,通过中间件它们仍能交换信息。实现中间件的一个关键途径是信息传递,通过它,应用程序可以工作于多平台或多 OS 环境。

JDK:JDK 是 Java 的开发工具包。它是一个用于构建在 Java 平台上发布的应用程序、applet 和组件的开发环境。

7、讲述一下 Tomcat 8005、8009、8080 三个端口的含义?

  • 8005:用于接收关闭 Tomcat 实例的指令。
  • 8009:AJP 端口,供其他容器(如 Apache HTTP Server)使用,通过 AJP 协议与 Tomcat 通信。
  • 8080:默认的 HTTP 连接器端口,供一般 Web 应用访问使用。

8、什么叫 CDN?

  • CDN 即内容分发网络。
  • 其目的是通过在现有的 Internet 中增加一层新的网络架构,将网站的内容发布到最接近用户的网络边缘,使用户可就近取得所需内容,从而提高用户访问网站的速度。

9、什么叫网站灰度发布?

灰度发布是指在黑与白之间能够平滑过渡的一种发布方式。
A/B 测试就是一种常见的灰度发布方式:让一部分用户继续使用版本 A(旧),一部分用户开始使用版本 B(新)。如果用户对 B 版本没有反对意见,则逐步扩大范围,最终将所有用户迁移到 B 版本上来。灰度发布可以保证整体系统的稳定,在初始阶段就能发现并调整问题,控制其影响范围。

10、简述 DNS 进行域名解析的过程?

以用户访问 www.baidu.com 为例:

  1. 浏览器先检查本机的 hosts 文件是否有对应的 IP 映射。
  2. 如果没有,则向本地配置的 DNS 服务器发起查询请求。
  3. 如果本地 DNS 服务器也没有缓存记录,它会向根域名服务器查询。根服务器告知它负责 .com 顶级域名的服务器地址。
  4. 本地 DNS 服务器再向 .com 顶级域名服务器查询,后者告知它负责 baidu.com 二级域名的服务器地址。
  5. 本地 DNS 服务器继续向 baidu.com 的权威域名服务器查询,最终获得 www.baidu.com 的 IP 地址。
  6. 本地 DNS 服务器将结果缓存一份,然后返回给用户的客户端。

11、RabbitMQ 是什么东西?

RabbitMQ 是一个开源的消息队列中间件。消息中间件是在消息传递过程中保存消息的容器,充当消息从源头到目标的“中间人”。队列的主要目的是提供路由并保证消息的可靠传递。如果发送消息时接收者不可用,消息队列会保留消息(在有效期内),直到能够成功传递为止。

12、讲述一下 LVS 三种模式的工作过程?

LVS 有三种负载均衡模式:VS/NAT(NAT 模式)、VS/DR(直接路由模式)、VS/TUN(隧道模式)。

一、NAT 模式(VS-NAT)

原理:负载均衡器将客户端发来的数据包 IP 头中的目的地址,替换成后端某台真实服务器(RS)的 IP 地址。

数据包被转发到该 RS 处理,RS 处理完后将响应数据包返回给负载均衡器。负载均衡器再将响应包的源 IP 地址改为自己的虚拟 IP(VIP),目的地址改为客户端的 IP 地址。
在此模式下,无论是进来的请求流量,还是出去的响应流量,都必须经过负载均衡器

  • 优点:集群中的真实服务器可以使用任何支持 TCP/IP 的操作系统,只有负载均衡器需要一个公网 IP 地址。
  • 缺点:扩展性有限。当服务器节点增长过多时,负载均衡器将成为整个系统的瓶颈,因为所有的请求和应答包都要流经它,容易导致性能下降。

二、IP 隧道模式(VS-TUN)

原理:互联网上的请求包通常很小,而应答包可能很大。隧道模式利用了这一点。

负载均衡器将客户端发来的数据包,封装一个新的 IP 头(仅修改目的 IP 为 RS 的 IP)后发送给 RS。RS 收到后,拆开外层封装,还原原始数据包进行处理,处理完成后直接返回给客户端,不再经过负载均衡器
注意:RS 必须支持 IP TUNNEL 协议。

  • 优点:负载均衡器只负责分发请求,响应包由 RS 直连客户端,大大减少了负载均衡器的数据流量,使其不易成为瓶颈,能处理巨大的请求量。并且可以在公网上进行跨地域分发。
  • 缺点:RS 节点需要拥有公网 IP。此模式要求所有服务器支持 IP Tunneling 协议,可能仅限于部分 Linux 系统。

三、直接路由模式(VS-DR)

原理:负载均衡器(Director)和后端 RS 使用同一个虚拟 IP(VIP)对外提供服务,但只有 Director 会对这个 VIP 的 ARP 请求进行响应。

因此,网关会把所有发往该服务 VIP 的请求全部定向给 Director。Director 收到数据包后,根据调度算法选择一台 RS,将数据包的目的 MAC 地址改为该 RS 的 MAC 地址(因为 IP 地址都是 VIP),然后分发出去。RS 收到这个目的 MAC 是自己的数据包,处理完毕后,由于源 IP 是 VIP,目的 IP 是客户端 IP,它可以直接将响应包返回给客户端。
由于负载均衡器需要修改数据链路层的 MAC 头,所以它必须和 RS 在同一个广播域内(通常理解为在同一台二层交换机下)。

  • 优点:和 TUN 模式一样,响应包不经过 Director,性能很高。相比 TUN,它不需要隧道封装,因此几乎任何操作系统都可以作为 RS。
  • 缺点(不足):要求负载均衡器和 RS 的物理网卡必须在同一个二层网络段内。

13、MySQL 的 InnoDB 如何定位锁问题?MySQL 如何减少主从复制延迟?

MySQL 的 InnoDB 如何定位锁问题:

  1. 可以使用 SHOW ENGINE INNODB STATUS 命令检查引擎状态,其中包含了最近的死锁信息。
  2. 在 MySQL 5.5 及以上版本,information_schema 库中增加了以下三个关于锁的内存表:
    innodb_trx         ## 当前运行的所有事务
    innodb_locks       ## 当前出现的锁
    innodb_lock_waits  ## 锁等待的对应关系

MySQL 如何减少主从复制延迟:
如果延迟较大,可以从以下几个方面排查和优化:

  1. 硬件差异:确保从库的硬件配置(尤其是磁盘 I/O)不低于主库。
  2. 单线程复制:早期版本主从复制是单线程的,如果主库写并发很高,可能导致从库跟不上。可以考虑升级到支持多线程复制(并行复制)的版本。
  3. 慢 SQL:优化主库上的慢查询语句。
  4. 网络延迟:检查主从服务器之间的网络质量。
  5. 主库负载:主库读写压力过大可能导致 Binlog 生成慢。可以在架构前端引入缓存层来减轻主库读压力。
  6. 从库负载:使用多台从库来分摊读请求,并设置一台专用的从库只用于备份,不提供查询服务。
    另外,可以调整以下两个参数来减少因网络问题导致的延迟:
    --slave-net-timeout=seconds  # 默认3600秒。当从库从主库读取日志数据失败后,等待多久才重新尝试连接。
    --master-connect-retry=seconds # 默认60秒。当重新建立主从连接时,如果连接失败,间隔多久后重试。

其他解决方案:

  • 优化主库的 DDL 操作,使其快速执行。
  • 主库为了保证数据安全,设置可能较严格(如 sync_binlog=1, innodb_flush_log_at_trx_commit=1),而从库可以适当放宽要求(如设置 sync_binlog=0 或关闭 Binlog,innodb_flush_log_at_trx_commit=0),以提高 SQL 执行效率。

14、如何重置 MySQL Root 密码?

一、已知当前 ROOT 密码,修改密码的方法:

  1. 在 Shell 环境下使用 mysqladmin 命令:
    mysqladmin -u root -p password "新密码"
    # 回车后会提示输入旧密码
  2. mysql> 环境中,使用 UPDATE 命令直接更新 mysql.user 表:
    UPDATE mysql.user SET password=PASSWORD('新密码') WHERE user='root';
    FLUSH PRIVILEGES;
  3. mysql> 环境中,使用 GRANT 命令重置权限和密码:
    GRANT ALL ON *.* TO root@'localhost' IDENTIFIED BY '新密码';

二、忘记 ROOT 密码的解决方法:

  1. 停止正在运行的 MySQL 服务:
    service mysqld stop
  2. 以安全模式(跳过授权表加载)启动 MySQL 服务:
    /usr/local/mysql/bin/mysqld_safe --skip-grant-tables &
  3. 使用空密码的 root 用户登录,并重置密码:
    mysql -u root
    mysql> UPDATE mysql.user SET password=PASSWORD('新密码') WHERE user='root';
    mysql> FLUSH PRIVILEGES;
    mysql> exit;
  4. 重启 MySQL 服务至正常模式。

15、lvs/nginx/haproxy 优缺点

Nginx 的优点:

  1. 工作在七层,可以针对 HTTP 应用做更灵活的分流策略,如基于域名、目录结构的正则匹配,其灵活性远超 LVS。
  2. 对网络稳定性的依赖较小,理论上只要能 ping 通就能进行负载均衡。
  3. 安装和配置相对简单,错误日志清晰,易于调试。
  4. 能承担较高的负载压力,在较好的硬件上可支撑数万并发。
  5. 能通过检测后端服务器返回的状态码、超时等来判定故障,并将错误请求提交到其他节点。但不支持通过特定 URL 内容来检测。
  6. 不仅是负载均衡器,还是功能强大的 Web 应用服务器,LNMP 架构流行且稳定。
  7. 作为反向代理缓存服务器性能优异,速度可超越传统的 Squid。
  8. 在中层反向代理领域表现出色。
  9. 社区活跃,第三方模块丰富。

Nginx 的缺点:

  1. 通常仅支持 HTTP、HTTPS 和 Email 协议,适用范围有一定限制。
  2. 对后端服务器的健康检查,默认只支持通过端口连通性检测,不支持基于 URL 的深层检测。也不直接支持会话保持,但可通过 ip_hash 等方式解决。

LVS 的优点:

  1. 工作在四层,仅作分发,无流量产生,性能最强,对 CPU 和内存消耗低。
  2. 配置相对固定,人为出错几率小。
  3. 工作非常稳定,自身结合 Keepalived 可实现完整的高可用方案。
  4. 应用范围广,几乎可为所有基于 TCP/IP 的应用做负载均衡。

LVS 的缺点:

  1. 不支持正则处理,不能做动静分离,而这是 Nginx/HAProxy 的优势。
  2. 在大型、异构(如包含 Windows 服务器)环境中,LVS/DR+Keepalived 的配置和维护相对复杂。

HAProxy 的特点:

  1. 支持虚拟主机。
  2. 能够弥补 Nginx 的一些不足,例如支持会话保持、Cookie 引导,同时支持通过获取指定 URL 来检测后端服务器状态
  3. 作为专业的负载均衡软件,在纯负载均衡效率和并发处理上优于 Nginx。
  4. 支持 TCP 协议负载均衡,可对 MySQL 读操作进行负载均衡和健康检查。
  5. 负载均衡算法非常丰富,包括轮询 (roundrobin)、加权轮询 (static-rr)、最少连接 (leastconn)、基于源 IP (source)、基于 URI (uri) 等。

16、MySQL 数据备份工具

  • mysqldump 工具:MySQL 自带的逻辑备份工具。支持基于 InnoDB 的热备份,但由于是逻辑备份,速度相对较慢,适合数据量较小的场景。mysqldump 全量备份配合二进制日志可以实现基于时间点的恢复。
  • 基于 LVM 快照备份:属于物理备份,可以进行文件系统级别的快照备份,或用 tar 命令打包整个数据目录。但这通常是冷备份,且不同存储引擎备份粒度不同。
  • percona xtrabackup 工具:开源的物理热备份工具,支持 InnoDB 存储引擎。它支持全量备份和增量备份,速度非常快,还支持数据迁移、复制环境下的备份恢复等高级功能。启用 innodb_file_per_table 后,甚至可以支持单表备份。

17、keepalived 的工作原理和如何做到健康检查

Keepalived 基于 VRRP(虚拟路由冗余协议)实现。VRRP 将多台提供相同功能的路由器组成一个组,组内有一个 Master 和多个 Backup。Master 拥有一个对外服务的虚拟 IP(VIP),并定时发送 VRRP 组播报文。当 Backup 收不到 VRRP 报文时,就认为 Master 宕机,此时会根据优先级选举新的 Master 接管 VIP,从而实现高可用。

Keepalived 主要有三个模块:core(核心,负责主进程)、check(健康检查)和 vrrp(实现 VRRP 协议)。

Keepalived 健康检查配置示例(在配置文件中):

HTTP_GET | SSL_GET
{
    url {
        path /# 可以配置多个检查的URL
        digest <STRING> # 使用 genhash 工具生成的摘要信息
        status_code 200 # 期望返回的 HTTP 状态码
    }
    connect_port 80 # 连接端口
    bindto <IPADD>
    connect_timeout 3 # 连接超时时间
    nb_get_retry 3 # 重试次数
    delay_before_retry 2 # 重试间隔
}

18、统计 ip 访问情况,要求分析 nginx 访问日志,找出访问页面数量在前十位的 ip

cat access.log | awk '{print $1}' | uniq -c | sort -rn | head -10

19、使用 tcpdump 监听主机为 192.168.1.1,tcp 端口为 80 的数据,同时将输出结果保存输出到 tcpdump.log

tcpdump 'host 192.168.1.1 and port 80' > tcpdump.log

20、如何将本地 80 端口的请求转发到 8080 端口,当前主机 IP 为 192.168.2.1

iptables -A PREROUTING -d 192.168.2.1 -p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.2.1:8080

21、你对现在运维工程师的理解和以及对其工作的认识

运维工程师责任重大,需要保证公司提供的服务持续、快速、稳定、安全。他们的任何一个小失误都可能对公司或客户造成重大损失。因此,运维工作需要严谨细致的态度,同时也需要不断创新和优化,以应对日益复杂的系统环境。

22、实时抓取并显示当前系统中 tcp 80 端口的网络数据信息,请写出完整操作命令

tcpdump -nn tcp port 80

23、服务器开不了机怎么解决一步步的排查

A、造成服务器故障的可能原因:
服务器电源、系统、网络故障分析

B、服务器故障排查步骤:
服务器开机故障排查流程图

24、Linux 系统中病毒怎么解决

  1. 最彻底的方法:重装系统。
  2. 查杀步骤:找到并删除病毒文件。中毒后通常表现为 CPU/内存使用率高、服务器异常向外发包等。
    • 使用 top 命令找出 CPU 使用率异常的进程。
    • 使用 ps aux 结合可疑的进程名(病毒文件命名往往混乱)定位病毒文件位置。
    • 使用 rm -f 删除病毒文件。
    • 检查计划任务 (crontab)、开机启动项、病毒文件所在目录是否有其他可疑文件。
  3. 后续处理:由于可能存在潜伏病毒,建议在备份重要数据后,重装系统以绝后患。

25、发现一个病毒文件你删了他又自动创建怎么解决

这种情况通常是因为存在一个“母进程”在持续生成病毒文件。处理思路如下:

  1. 隔离网络:最好先断开服务器的外网连接(如果是内网服务器则断内网),阻止病毒对外通信和下载。
  2. 顺藤摸瓜:使用 iftop 查看异常外联,用 netstat 查看异常连接和端口,用 lsof -p <pid> 查看进程打开的文件,用 ps auxpstree 仔细排查所有进程,寻找看起来像系统进程但又略有不同的“冒牌货”(例如 /usr/bin/.sshd)。
  3. 清除病毒:找到母进程后,先杀掉所有相关的病毒进程,然后删除其可执行文件,最后再清理那些会自动复活的衍生文件。
  4. 总结:善用 iftoppsnetstatchattr (防止文件被修改), lsofpstree 等工具进行排查。对于感染严重的系统(如引导文件被感染),仍需考虑重装。

26、说说 TCP/IP 的七层模型

  • 应用层 (Application):网络服务与最终用户的接口。协议如 HTTP, FTP, SMTP, DNS, DHCP 等。
  • 表示层(Presentation Layer):负责数据表示、加密、压缩。格式如 JPEG, ASCII 等。(在 TCP/IP 五层模型中已合并到应用层)
  • 会话层(Session Layer):建立、管理、终止会话。(在 TCP/IP 五层模型中已合并到应用层)
  • 传输层 (Transport):提供端到端的可靠或不可靠传输,以及流量控制和差错校验。主要协议有 TCP 和 UDP。
  • 网络层 (Network):进行逻辑地址寻址(IP 地址),实现不同网络间的路径选择。协议如 IP, ICMP, ARP 等。
  • 数据链路层 (Link):建立逻辑连接,进行硬件(MAC)地址寻址、差错校验等。将比特组合成帧。
  • 物理层(Physical Layer):规定物理设备标准,为数据端设备提供传输原始比特流的物理连接。涉及“信号和介质”。

27、你常用的 Nginx 模块,用来做什么

rewrite模块,实现重写功能
access模块:来源控制
ssl模块:安全加密
ngx_http_gzip_module:网络传输压缩模块
ngx_http_proxy_module 模块实现代理
ngx_http_upstream_module模块实现定义后端服务器列表
ngx_cache_purge实现缓存清除功能

28、请列出你了解的 web 服务器负载架构

常见的负载均衡架构/软件有:Nginx, HAProxy, Keepalived, LVS。

29、查看 http 的并发请求数与其 TCP 连接状态

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

此命令会统计并输出如 ESTABLISHEDTIME_WAIT 等各 TCP 状态的数量。

另外,ulimit -n 可以查看 Linux 系统当前会话允许打开的最大文件描述符数量(这直接影响服务器能维持的连接数)。如果需要修改,可以编辑 /etc/security/limits.conf 文件,例如:

* soft nofile 10240
* hard nofile 10240

修改后需要重新登录生效。

30、用 tcpdump 嗅探 80 端口的访问看看谁最高

tcpdump -i eth0 -tnn dst port 80 -c 1000 | awk -F"." '{print $1"."$2"."$3"."$4}'| sort | uniq -c | sort -nr |head -20

31、写一个脚本,实现判断 192.168.1.0/24 网络里,当前在线的 IP 有哪些,能 ping 通则认为在线

#!/bin/bash
for ip in `seq 1 255`
do
{
    ping -c 1 192.168.1.$ip > /dev/null 2>&1
    if [ $? -eq 0 ]; then
        echo 192.168.1.$ip UP
    else
        echo 192.168.1.$ip DOWN
    fi
}&
done
wait

32、已知 apache 服务的访问日志按天记录在服务器本地目录 /app/logs 下,由于磁盘空间紧张现在要求只能保留最近 7 天的访问日志!请问如何解决?

假设日志文件命名格式为 access_www_2015-01-01.log。可以使用 find 命令配合 -mtime 参数来删除 7 天前的文件。

解决方法:

find /application/logs/ -type f -mtime +7 -name "*.log" -exec rm -f {} \;
# 或者使用 xargs
# find /application/logs/ -type f -mtime +7 -name "*.log" | xargs rm -f

通常会将此命令放入 crontab,每天定时执行一次,以实现自动日志清理。

33、如何优化 Linux 系统(可以不说太具体)?

系统优化的常见方面包括:

  1. 账户安全:不用 root 直接操作,添加普通用户并通过 sudo 授权。
  2. 服务安全:更改 SSH 默认端口,禁止 root 远程登录。
  3. 时间同步:配置 NTP 服务自动同步时间。
  4. 软件源:配置国内 yum/apt 源,加速软件安装。
  5. 安全策略:根据业务需求合理配置 iptables/firewalld;对内部测试环境可关闭 SELinux。
  6. 资源限制:调整系统文件描述符数量 (ulimit -n)。
  7. 服务管理:精简不必要的开机启动服务。
  8. 内核参数:根据业务特点优化 /etc/sysctl.conf 中的网络、内存等内核参数。
  9. 文件系统:根据场景选择合适的文件系统挂载参数 (noatimenodiratime 等)。
  10. 系统信息:清除 /etc/issue 等文件中的系统标识信息。

34、请执行命令取出 linux 中 eth0 的 IP 地址 (请用 cut,有能力者也可分别用 awk,sed 命令答)

cut 方法 1:

ifconfig eth0 | sed -n '2p' | cut -d ":" -f2 | cut -d " " -f1

awk 方法 2:

ifconfig eth0 | awk 'NR==2' | awk -F ":" '{print $2}' | awk '{print $1}'

awk 多分隔符方法 3:

ifconfig eth0 | awk 'NR==2' | awk -F "[: ]+" '{print $4}'

sed 方法 4:

ifconfig eth0 | sed -n '/inet addr/p' | sed -r 's#^.*ddr:(.*)Bc.*$#\1#g'

(注:不同系统或版本的 ifconfig 输出格式可能略有差异,上述命令适用于特定格式)。现代系统更推荐使用 ip addr show eth0 命令。

35、每天晚上 12 点,打包站点目录 /var/www/html 备份到 /data 目录下(最好每次备份按时间生成不同的备份包)

可以编写一个 Shell脚本 并配置到 crontab 中。
脚本示例 (/root/backup.sh):

#!/bin/bash
cd /var/www/ && /bin/tar zcf /data/html-$(date +\%Y\%m\%d_\%H\%M\%S).tar.gz html/

配置定时任务:

crontab -e
# 添加以下行
00 00 * * * /bin/bash /root/backup.sh

这样每天零点就会执行备份,并且备份文件名会包含日期和时间戳,确保唯一性。




上一篇:校招面试:简历上写“熟悉Linux操作系统”到底需要会什么?
下一篇:Linux面试题精编:内核原理、Shell脚本、系统管理与安全实战(2024更新)
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-4-7 21:48 , Processed in 1.031579 second(s), 42 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2026 云栈社区.

快速回复 返回顶部 返回列表