Linux 运维工程师练习题 (中等难度,覆盖多场景)

1. 查找与文件操作

  1. 查找 /var/log 目录下所有 .log 文件,将文件大小超过 10MB 的文件路径保存到 large_logs.txt
  2. /home 目录下查找最近 7 天内被修改过的文件,将它们移动到 /backup/recent/ 目录下(目录需提前创建)。

2. 统计与分析

  1. 统计 /etc/passwd 文件中用户名(每行第一个字段)以 ab 开头的用户数量。
  2. /var/log/syslog 文件中包含 “error” 的行进行去重,并统计唯一行的总数。

3. 文本处理

  1. 从文件 data.csv 中提取第 2 列和第 4 列(列以逗号分隔),并按第 2 列字母顺序排序,将结果保存到 sorted_data.csv

    • 文件格式示例
      ID,Name,Age,Department
      1,John,25,HR
      2,Alice,30,IT
  2. 统计 /var/log/dmesg 中各类设备驱动(如 usb, ata, eth 等)的出现次数,并按出现次数从多到少排序。


4. 文件合并与转换

  1. 使用 seq 生成 1 到 100 的序列,保存为 numbers.txt;再将该文件的每 10 行合并为一行,输出到 grouped_numbers.txt
  2. 将两个文件 file1.txtfile2.txt 按行拼接(对应行用逗号分隔),生成新文件 merged.csv

5. 时间与权限管理

  1. /opt/ 下查找所有 30 天前未被访问过的文件,并将它们移动到 /archive/
  2. 修改 /var/log 目录下的所有文件权限为只读(对于所有用户),但保留目录本身的写权限。

6. 链接与文件组织

  1. /home/user/ 下创建一个符号链接,指向 /var/log/syslog 文件,要求链接名为 latest_syslog.log
  2. /data 目录下创建硬链接,指向文件 important.txt;验证硬链接和原文件的 inode 是否一致。

7. 排序与随机操作

  1. 随机打乱 /etc/hosts 文件中的所有行,并将结果保存到 shuffled_hosts.txt
  2. 统计 /tmp/numbers.txt 中出现次数最多的数字,并输出前 5 个数字及其对应的出现次数。
    • 文件格式示例
      1
      2
      3
      2
      1
      1

8. 管道与组合命令

  1. /var/log/auth.log 中提取所有包含 “Failed password” 的行,按时间排序后,保存到 failed_attempts.log
  2. 使用 findxargs 组合命令,将 /data 目录下所有 .txt 文件的内容追加到一个文件 all_texts.txt 中。

9. 文件内容对比

  1. 比较文件 list1.txtlist2.txt 中的内容,找出两个文件的差集(仅出现在其中一个文件中的行),输出到 diff.txt
    • 文件示例
      list1.txt
      apple
      banana
      cherry
      list2.txt
      banana
      cherry
      date

10. 特殊格式与日志分析

  1. /var/log/nginx/access.log 中提取所有以 404 状态码结尾的行,并统计每个 IP 的出现次数,按降序保存到 404_ips.txt

    • 文件格式示例
      192.168.1.1 - - [11/Dec/2024:12:34:56 +0000] "GET /page HTTP/1.1" 404 512
  2. /etc/passwd 提取所有用户的用户名和默认 shell,输出到 user_shells.csv,格式为:

    username,shell

11. 综合实践

  1. 生成一个 1 到 1000 的随机序列,将其按大小排序后,前 500 个保存到 small_numbers.txt,后 500 个保存到 large_numbers.txt

文件准备

根据需要创建文件示例,例如:

  • data.csv

    ID,Name,Age,Department
    1,John,25,HR
    2,Alice,30,IT
    3,Bob,28,Finance
  • /var/log/nginx/access.log

    192.168.1.1 - - [11/Dec/2024:12:34:56 +0000] "GET /page HTTP/1.1" 404 512
    192.168.1.2 - - [11/Dec/2024:12:35:56 +0000] "POST /login HTTP/1.1" 200 1024

完成这些练习可以很好地锻炼 Linux 运维中对文件、日志、和系统管理命令的实际应用能力。

作者:严锋  创建时间:2024-12-11 15:54
最后编辑:严锋  更新时间:2025-05-09 15:48