Linux与Bash编程作业

一、项目简介

Linux 是常用的服务器操作系统。测试工程师通常需要连接系统进行环境部署,查看日志等操作。

1.1 知识点

  • 远程登录 Linux 系统
  • Linux 系统文件处理命令
  • Linux 统计命令
  • Linux 性能统计命令
  • Linux 进程查询
  • Linux 三剑客之 awk
  • Linux 三剑客之 grep
  • Linux 三剑客之 sed
  • Bash 编程

1.2 受众

  • 高级测试工程师

1.3 作业要求

  1. 登录 Linux 系统:
    • 学员练习系统:账号密码参考入学须知贴。
  2. 完成以下操作
      1. 创建新目录。
      1. 切换到新目录下。
      1. 创建新文件,在新文件中添加内容。
      1. 查看新文件中的内容。
      1. 修改新文件权限为可读、可写、可执行。
      1. 查看当前目录。
  3. 查询 Linux 系统负载与进程。
  4. 查询 Linux 系统内存使用数据并保存到文件中。
  5. 统计内存数据文件的字节数。
  6. 对内存数据文件的每一行按 ASCII 码值降序排列并去重。
  7. 查询 Linux 系统进程列表快照。
  8. 统计 /home 目录下不同用户的普通文件的总数是多少。
  9. 统计 netstat -anp 状态为 LISTEN 和 CONNECT 的连接数量分别是多少。
  10. 使用 bash 实现自动创建目录并生成文件。
  11. 使用 bash 判断目录是否存在。

二、实现过程

  1. 登录 Linux 系统:

  1. 完成以下操作
      1. 创建新目录。
      1. 切换到新目录下。
      1. 创建新文件,在新文件中添加内容。
      1. 查看新文件中的内容。
      1. 修改新文件权限为可读、可写、可执行。
      1. 查看当前目录。

  1. 查询 Linux 系统负载与进程。
    • top命令:显示系统的实时进程和负载信息。
      • -b命令:以批处理模式运行,用于重定向输出。
      • -n命令:运行次数。
      • head -n命令:显示行数。


  • uptime命令:显示系统的运行时间、用户数和平均负载。

  1. 查询 Linux 系统内存使用数据并保存到文件中。
    • free 命令:显示系统的内存使用情况。
    • -m 选项表示以 MB(兆字节)为单位显示内存。

  1. 统计内存数据文件的字节数。

image

  • stat 命令:显示文件的详细信息。
  • -c %s 选项:仅显示文件的大小(以字节为单位)。

  1. 对内存数据文件的每一行按 ASCII 码值降序排列并去重。

因数据量少,排序效果不佳,故尝试追加读取内存数据,再重新排序:

  1. 查询 Linux 系统进程列表快照。

    • ps 命令:显示当前运行的进程。
    • aux 选项:显示所有用户的所有进程,包括详细信息。

  1. 统计 /home 目录下不同用户的普通文件的总数是多少。
    • find 命令:在指定目录下查找文件。
    • -type f 选项:仅查找普通文件。
    • wc -l 命令:统计行数。

  1. 统计 netstat -anp 状态为 LISTEN 和 CONNECT 的连接数量分别是多少。
    • netstat 命令:显示网络连接和端口。
    • -anp 选项:显示所有连接和监听端口,包括进程信息。
    • grep LISTEN :过滤出状态为 LISTEN 的行。

  1. 使用 bash 实现自动创建目录并生成文件。
#!/bin/bash
# 自动创建目录并生成文件的脚本
dir_name="auto_created_dir"
file_name="auto_created_file.txt"

# 检查目录是否存在,不存在则创建
if [ ! -d "$dir_name" ]; then
    mkdir "$dir_name"
    echo "文件夹 $dir_name 创建成功。"
else
    echo "文件夹 $dir_name 已存在。"
fi

# 切换到新目录并创建文件
cd "$dir_name"
if [ $? -eq 0 ]; then
    echo "文件创建成功。" > "$file_name"
    echo "文件 $file_name 创建至 $dir_name 文件夹中。"
else
    echo "修改文件夹为 $dir_name 失败。"
    exit 1
fi

  1. 使用 bash 判断目录是否存在。
#!/bin/bash

# 指定要检查的目录名称
dir_name="check_dir"

# 检查目录是否存在
if [ -d "$dir_name" ]; then
    echo "文件夹 $dir_name 已存在。"
else
    echo "文件夹 $dir_name 不存在。"
fi