三门峡市网站建设_网站建设公司_ASP.NET_seo优化
2025/12/17 15:13:52 网站建设 项目流程

完整教程:Linux面试题及详细答案 120道(111-120-- 系统管理与性能调优

2025-12-17 15:05  tlnshuju  阅读(0)  评论(0)    收藏  举报

前后端面试题》专栏集合了前后端各个知识模块的面试题,包括html,javascript,css,vue,react,java,Openlayers,leaflet,cesium,mapboxGL,threejs,nodejs,mangoDB,SQL,Linux… 。

前后端面试题-专栏总目录

在这里插入图片描述

文章目录

  • 一、本文面试题目录
      • 111. 如何查看Linux系统的版本信息?(`uname -a`、`cat /etc/os-release` 等)
      • 112. `crontab` 命令的作用是什么?如何创建定时任务?其时间格式如何解析?
      • 113. 什么是anacron?它与cron的区别是什么?适用于哪些场景?
      • 114. 如何查看系统的负载情况?`uptime` 命令输出的三个数字分别表示什么?
      • 115. 什么是I/O等待(iowait)?如何查看系统的I/O性能?(如 `iostat` 命令)
      • 116. 如何监控系统的CPU、内存、磁盘I/O和网络性能?(如 `sar`、`vmstat` 命令)
      • 117. 什么是内核参数?如何临时和永久修改内核参数?(`sysctl` 命令和 `/etc/sysctl.conf` 文件)
      • 118. 如何查看系统的启动日志?(`journalctl` 命令或 `/var/log/boot.log`)
      • 119. Linux系统中常见的日志文件有哪些?(如 `/var/log/messages`、`/var/log/auth.log`)
      • 120. 如何清理系统中的临时文件和日志,释放磁盘空间?
  • 二、120道Linux面试题目录列表

一、本文面试题目录

111. 如何查看Linux系统的版本信息?(uname -acat /etc/os-release 等)

112. crontab 命令的作用是什么?如何创建定时任务?其时间格式如何解析?

  • crontab 作用:用于创建和管理周期性执行的定时任务(cron jobs),适用于自动化脚本执行、日志清理、备份等场景。

  • 时间格式解析
    基本格式为 分 时 日 月 周 命令,每个字段含义如下:

    字段取值范围特殊符号说明
    0-59*(任意)、/(间隔)、,(列表)、-(范围)*/10表示每10分钟
    0-23同上8-18表示8点到18点
    1-31同上1,15表示每月1日和15日
    1-12(或Jan-Dec)同上*/3表示每3个月
    0-6(0=周日,或Sun-Sat)同上1-5表示周一到周五
  • 创建和管理定时任务

    crontab -e  # 编辑当前用户的定时任务(首次使用需选择编辑器)
    # 示例任务(添加到编辑界面):
    # 每天凌晨3点执行备份脚本
    0 3 * * * /home/user/backup.sh
    # 每小时的第15分钟和第45分钟执行日志清理
    15,45 * * * * /home/user/clean_logs.sh
    # 每周一到周五的18点执行数据同步
    0 18 * * 1-5 /home/user/sync_data.sh
    # 保存退出后生效,查看当前用户的任务:
    crontab -l
    # 删除当前用户的所有定时任务:
    crontab -r
  • 注意

    • 系统级任务通常放在/etc/cron.d/目录,需指定执行用户。
    • 任务输出默认通过邮件发送给用户,可重定向到文件(如>> /var/log/cron.log 2>&1)。

113. 什么是anacron?它与cron的区别是什么?适用于哪些场景?

  • anacron概念:anacron是用于补充cron的工具,专门处理因系统关机或休眠而错过的定时任务,确保周期性任务最终会执行。

  • 与cron的区别

    特性cronanacron
    适用场景持续运行的服务器可能频繁关机的设备(如笔记本、台式机)
    时间精度分钟级(精确到分钟)天级(最小周期为1天)
    任务触发严格按时间点执行系统启动后检查是否有错过的任务,若有则执行
    配置方式用户级crontab -e,系统级/etc/cron.d/主要通过/etc/anacrontab配置
  • 工作原理
    anacron通过记录任务上次执行时间(存储在/var/spool/anacron/),与当前时间对比,若超过设定周期则执行任务。

  • 配置示例(/etc/anacrontab

    # 格式:周期(天) 延迟(分钟) 任务标识 命令
    1 5 cron.daily    run-parts /etc/cron.daily    # 每天至少执行一次,延迟5分钟
    7 10 cron.weekly   run-parts /etc/cron.weekly   # 每7天至少执行一次,延迟10分钟
    @monthly 15 cron.monthly run-parts /etc/cron.monthly  # 每月至少执行一次,延迟15分钟
  • 适用场景
    笔记本电脑、个人台式机等非24小时运行的设备,确保关机期间错过的备份、日志轮转等任务在下次开机后执行。

114. 如何查看系统的负载情况?uptime 命令输出的三个数字分别表示什么?

  • 查看系统负载的命令

    1. uptime:简洁显示系统运行时间和负载。
    2. w:在uptime基础上增加用户登录信息。
    3. top/htop:动态显示负载及进程资源占用。
  • uptime 输出解读

    uptime  # 输出示例:15:30:00 up 2 days,  3:45,  2 users,  load average: 0.85, 0.70, 0.65
    • 前半部分:系统当前时间、运行时长、登录用户数。
    • 三个数字(load average):分别表示过去1分钟、5分钟、15分钟的系统平均负载,即等待CPU处理的任务数(包括运行中和等待I/O的进程)。
  • 负载数值的意义

    • 对于单核CPU:负载<1表示空闲,1表示满负荷,>1表示任务排队。
    • 对于多核CPU:负载<核心数表示正常(如4核CPU,负载<4为合理)。
    • 若15分钟负载持续高于核心数,可能存在CPU瓶颈。

115. 什么是I/O等待(iowait)?如何查看系统的I/O性能?(如 iostat 命令)

  • I/O等待(iowait)
    指CPU空闲且等待磁盘I/O操作完成的时间百分比。iowait过高通常表示磁盘读写速度跟不上CPU处理速度,可能是磁盘性能不足或I/O请求过多导致。

  • 查看I/O性能的工具

    1. iostat(需安装sysstat包):

      iostat  # 显示CPU和磁盘I/O统计(默认间隔1秒,显示一次)
      iostat 5 3  # 每5秒刷新一次,共3次
      # 输出关键指标解读:
      # %iowait:CPU等待I/O的时间百分比(过高需关注)
      # tps:每秒I/O传输次数
      # kB_read/s:每秒读取数据量(kB)
      # kB_wrtn/s:每秒写入数据量(kB)
    2. iotop:类似top,按I/O使用率排序进程:

      sudo iotop  # 实时显示进程的I/O读写情况
    3. dstat:综合显示CPU、内存、I/O等性能指标:

      dstat -d  # 仅显示磁盘I/O统计
  • 分析建议
    %iowait持续高于20%,且磁盘kB_read/skB_wrtn/s接近硬件上限,可能需要优化磁盘(如更换SSD)或减少I/O密集型操作。

116. 如何监控系统的CPU、内存、磁盘I/O和网络性能?(如 sarvmstat 命令)

  • 综合性能监控工具
    1. sar(系统活动报告,需安装sysstat):

      # 监控CPU(每2秒一次,共3次)
      sar -u 2 3
      # 监控内存
      sar -r 2 3
      # 监控磁盘I/O
      sar -b 2 3
      # 监控网络(需先开启网络统计:sudo sar -n DEV 1 1)
      sar -n DEV 2 3
      # 查看历史数据(默认保存28天,位于/var/log/sysstat/)
      sar -u -f /var/log/sysstat/sa01  # 查看1号的CPU数据
    2. vmstat(虚拟内存统计):

      vmstat 2 3  # 每2秒一次,共3次
      # 关键指标:
      # r:等待运行的进程数(过高表示CPU繁忙)
      # free:空闲内存(kB)
      # si/so:交换区读写量(非0表示内存不足)
      # bi/bo:磁盘I/O读写块数(过高表示磁盘繁忙)
      # us/sy/id/wait:用户态/系统态/空闲/I/O等待的CPU时间占比
    3. top/htop(实时进程监控):

      top  # 动态显示进程的CPU、内存占用(按P排序CPU,按M排序内存)
      htop  # 更友好的交互界面(需安装)
    4. nmon(综合监控工具,支持图形化输出):

      nmon  # 启动后按c(CPU)、m(内存)、d(磁盘)、n(网络)查看对应指标

117. 什么是内核参数?如何临时和永久修改内核参数?(sysctl 命令和 /etc/sysctl.conf 文件)

  • 内核参数概念:内核参数是控制Linux内核行为的配置项(如网络队列大小、虚拟内存策略),直接影响系统性能和功能。

  • 查看内核参数

    sysctl -a  # 显示所有内核参数(数量较多)
    sysctl net.ipv4.ip_forward  # 查看特定参数(如IPv4转发功能)
    cat /proc/sys/net/ipv4/ip_forward  # 直接查看/proc下的参数文件(内核参数映射)
  • 临时修改内核参数(立即生效,重启后失效):

    # 方法1:sysctl命令
    sudo sysctl -w net.ipv4.ip_forward=1  # 启用IPv4转发
    # 方法2:直接写入/proc文件
    sudo echo 1 > /proc/sys/net/ipv4/ip_forward
  • 永久修改内核参数(重启后仍生效):

    # 编辑配置文件(传统方式)
    sudo vim /etc/sysctl.conf
    # 添加参数(格式:参数名 = 值)
    net.ipv4.ip_forward = 1
    vm.swappiness = 10  # 减少swap使用(0-100,值越小越倾向使用内存)
    # 使配置生效
    sudo sysctl -p  # 加载/etc/sysctl.conf中的配置
    # 现代系统可能使用/etc/sysctl.d/目录下的.conf文件(优先级更高)
    sudo vim /etc/sysctl.d/99-custom.conf  # 创建自定义配置文件
    sudo sysctl --system  # 加载所有配置文件

118. 如何查看系统的启动日志?(journalctl 命令或 /var/log/boot.log

  • 查看启动日志的方法

    1. journalctl(适用于使用systemd的系统,如CentOS 7+、Ubuntu 16.04+):

      # 查看所有启动日志
      journalctl -b  # -b 表示当前启动的日志
      # 查看上一次启动的日志
      journalctl -b -1
      # 实时查看新增日志(类似tail -f)
      journalctl -f
      # 按时间筛选(如查看今天的启动日志)
      journalctl -b --since today
      # 查看特定服务的启动日志(如sshd)
      journalctl -u sshd -b
    2. 传统日志文件

      # 查看boot.log(部分系统保存启动过程日志)
      cat /var/log/boot.log
      # 查看系统初始化日志(适用于SysVinit系统)
      cat /var/log/init.d/*
      # 查看内核启动消息
      dmesg  # 显示内核环缓冲区信息(启动初期的硬件检测等)
      dmesg | grep -i error  # 筛选启动过程中的错误
  • 注意journalctl依赖systemd-journald服务,日志默认保存在/var/log/journal/,而传统日志文件由rsyslog等服务管理。

119. Linux系统中常见的日志文件有哪些?(如 /var/log/messages/var/log/auth.log

  • 常见日志文件及用途

    日志文件用途适用系统
    /var/log/messages系统通用日志(内核消息、服务启动/停止等)CentOS/RHEL
    /var/log/syslog系统通用日志(类似messages)Ubuntu/Debian
    /var/log/auth.log认证相关日志(登录、sudo、ssh等操作)Ubuntu/Debian
    /var/log/secure安全认证日志(类似auth.log)CentOS/RHEL
    /var/log/boot.log系统启动过程日志多数Linux
    /var/log/kern.log内核消息日志多数Linux
    /var/log/cron定时任务(cron)执行日志多数Linux
    /var/log/nginx/access.logNginx访问日志(路径因软件而异)安装Nginx的系统
    /var/log/mysql/error.logMySQL错误日志(路径因软件而异)安装MySQL的系统
    /var/log/audit/audit.log审计日志(记录系统调用、文件访问等)启用auditd服务的系统
  • 日志查看技巧

    # 查看最近100行日志
    tail -n 100 /var/log/syslog
    # 实时跟踪日志更新
    tail -f /var/log/auth.log
    # 搜索包含"error"的日志行
    grep -i "error" /var/log/messages
    # 按时间范围筛选日志(需日志含时间戳)
    grep "2023-10-01 10:" /var/log/syslog

120. 如何清理系统中的临时文件和日志,释放磁盘空间?

  • 清理临时文件

    1. 清理/tmp目录(系统重启会自动清空,可手动删除长时间未使用的文件):

      # 删除7天前的临时文件
      sudo find /tmp -type f -mtime +7 -delete
      # 清空整个/tmp目录(谨慎:确保无运行中程序依赖的文件)
      sudo rm -rf /tmp/*
    2. 清理用户缓存

      # 清理浏览器缓存(以Firefox为例)
      rm -rf ~/.mozilla/firefox/*/Cache/*
      # 清理APT缓存(Debian/Ubuntu)
      sudo apt clean  # 清理所有下载的包文件
      sudo apt autoremove  # 移除不再需要的依赖包
  • 清理日志文件

    1. 手动截断大日志(保留文件但清空内容,避免服务因文件消失出错):

      sudo truncate -s 0 /var/log/syslog  # 清空syslog日志
    2. 日志轮转配置(自动压缩和删除旧日志,避免日志无限增长):
      查看/etc/logrotate.d/目录下的配置文件(如/etc/logrotate.d/syslog),示例配置:

      /var/log/syslog {
      daily  # 每天轮转
      rotate 7  # 保留7天的日志
      compress  # 压缩旧日志
      delaycompress  # 延迟压缩(保留最新一个未压缩)
      missingok  # 日志文件不存在时不报错
      }
  • 查找大文件辅助清理

    # 查找/var目录下大于100MB的文件
    sudo find /var -type f -size +100M -exec ls -lh {} \;
  • 注意:清理日志和临时文件时,避免删除正在被写入的文件(可通过lsof命令检查文件是否被占用)。

二、120道Linux面试题目录列表

文章序号Linux面试题120道
1Linux面试题及详细答案120道(01-15)
2Linux面试题及详细答案120道(16-30)
3Linux面试题及详细答案120道(31-45)
4Linux面试题及详细答案120道(46-60)
5Linux面试题及详细答案120道(61-75)
6Linux面试题及详细答案120道(76-95)
7Linux面试题及详细答案120道(96-110)
8Linux面试题及详细答案120道(111-120)

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询