情景题之小明的Linux实习之旅:linux实战练习1(下)【基础命令,权限修改,日志查询,进程管理...】

本文主要是介绍情景题之小明的Linux实习之旅:linux实战练习1(下)【基础命令,权限修改,日志查询,进程管理...】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

小明的Linux实习之旅:基础指令练习情景练习题下

    • 前景提要
    • 小明是怎么做的
      • 场景1:初识Linux,创建目录和文件
      • 场景2:权限管理,小明的权限困惑
      • 场景3:打包与解压,小明的备份操作
      • 场景4:使用Grep,小明的搜索技能
      • 场景5:系统服务管理,小明的首次接触
        • ==小明笔记大公开:==
      • 场景6:进程管理,小明的多任务处理
        • ==小明笔记大公开:==
      • 场景7:定时任务与系统状态
        • ==小明笔记大公开:==
        • ==小明笔记大公开之`uptime`命令:==
        • ==小明笔记大公开之关于内存:==
        • ==小明笔记大公开之`uptime`命令:==
        • ==小明笔记大公开之`top`命令:==
      • 场景8:dd命令,小明的惊险操作
        • ==小明的提醒:==

前景提要

小明刚刚开始他的Linux测试开发实习。第一天,他的leader给了他一系列任务,帮助他熟悉Linux命令行操作。以下是小明的冒险故事。

小明是怎么做的

场景1:初识Linux,创建目录和文件

  1. 小明的导师要求他创建一个项目目录,并在其中创建一个README文件。

    mkdir ~/project     #make directory建立目录
    cd ~/project    #change directory,改变目录或切换到另一个文件夹
    touch README.md    #碰到文件
    
  2. 小明在README.md中写下了项目简介,但不小心写错了内容。

    vi README.md
    # 按i进入插入模式,输入“这是小明的第一个项目。”
    # 但写成了“这是小明的第一个错误。”
    # 按Esc键,输入:wq保存并退出
    
  3. 小明发现写错了,需要修改内容。

    vi README.md
    # 按i进入插入模式,将“错误”改为“项目”
    # 按Esc键,输入:wq保存并退出
    
  4. 导师检查后,认为小明的描述还不够详细,要求他再添加一些信息。

    echo "项目描述:这是一个用于学习Linux基本命令的项目。" >> README.md
    cat README.md     #concatenate(连锁,用于连接并显示文件内容)
    

小明的电脑界面:
小明的界面

场景2:权限管理,小明的权限困惑

  1. 导师提醒小明要注意文件权限管理,要求他将README.md的权限修改为755。

    chmod 755 README.md    #change mode改变权限
    ls -l README.md        #list(列出目录内容)
    
  2. 导师还要求小明将项目目录的所有者改为root。

    sudo chown root:root ~/project   
    #superuser do,用于执行需要超级用户(root)权限的命令,而不需要实际切换到root用户
    #change owner改变所有者
    ls -ld ~/project   #d:directory,表示只显示目录的信息不显示内部文件(夹)
    

3.导师刚才说错了,他是要确认该项目目录不是root,因为之后需要进行一些写入操作。小明于是默默地将项目目录的所有者改回来。

  •   groups christine  #确认原来默认群组是否也是christine(我的用户名)# 结果:christine : christine[christine@localhost rongyi_project]$ sudo chown # 结果:christine:christine ~/rongyi_project[christine@localhost rongyi_project]$ ls -ld ~/rongyi_project# 结果: drwxrwxr-x. 2 christine christine 68 6月   9 00:46 /home/christine/rongyi_project
    

小明的电脑界面:
在这里插入图片描述

场景3:打包与解压,小明的备份操作

  1. 导师告诉小明要定期备份项目目录,于是小明打包了整个项目目录。

    #确保回到home页面
    cd ~
    # 使用 tar 命令来打包目录时,压缩文件会被存放在执行命令时所在的目录中。
    tar -cvf project_v1.tar project   #区别~/project
    ls -lh project_v1.tar
    
  2. 一天,小明需要恢复之前的备份,于是他解压了备份文件。

    mkdir ~/backup #新建一个备份目录用来放解压文件
    tar -xvf project_v1.tar -C backup   #-C一定是大写,tar方法敏感
    cd backup
    ls
    

小明的电脑界面:
在这里插入图片描述

场景4:使用Grep,小明的搜索技能

  1. 小明需要在项目目录中查找所有包含“项目”字样的文件。

    grep -r "项目" ~/project
    # grep:文本搜索工具,允许你使用正则表达式来搜索文本。
    # -r:递归搜索,即搜索指定目录及其所有子目录中的文件。
    
  2. 导师要求他找出README.md文件中所有包含“描述”字样的行。

    grep "描述" ~/project/README.md
    

小明的电脑界面:
在这里插入图片描述

场景5:系统服务管理,小明的首次接触

  1. 导师让小明检查防火墙状态,并确保它是开启的。

    sudo systemctl status firewalld
    sudo systemctl start firewalld
    
  2. 导师让小明启动MySQL服务并查看其状态。

    sudo systemctl start mysql
    sudo systemctl status mysql
    
  3. 小明还需要启动Redis服务并检查其状态。

    sudo systemctl start redis
    sudo systemctl status redis
    
  4. 最后,导师让小明查看网络接口的状态。

    ifconfig
    

小明的电脑界面:
在这里插入图片描述

小明笔记大公开:

systemctlsystemd的控制工具(control tool)的缩写。systemd是一个初始化系统(init system)和用户空间(userspace)的系统管理器,用于管理系统资源和服务。

  • systemctl start <service>:启动一个服务
  • systemctl stop <service>:停止一个服务
  • systemctl restart <service>:重启一个服务
  • systemctl status <service>:查询一个服务的状态
  • systemctl enable <service>:在系统启动时自动启动一个服务
  • systemctl disable <service>:在系统启动时禁用一个服务的自动启动

场景6:进程管理,小明的多任务处理

  1. 小明查看了系统中所有正在运行的进程。

    ps -ef
    
  2. 小明搜到了一个排序方法,发现有一个进程占用了大量内存资源,于是他结束了该进程。。

    ps aux --sort=-%mem   #按内存使用量排序:通过管道和 sort 命令按 %MEM 或 RSS 列排序,找到内存占用最高的进程。# kill <PID>    #新手不要学小明,容易坏事  终止指定PID
    
  3. 小明根据进程名称结束了一个测试进程。

    pkill test_process  #终止指定进程名
    
小明笔记大公开:
  • UID: 用户ID。显示了哪个用户拥有该进程。例如,root 表示该进程是由 root 用户拥有的。
  • PID: 进程ID。这是一个唯一的数字,用于标识系统中的每个进程。
  • PPID: 父进程ID。这是创建该进程的进程的PID。
  • C: CPU 使用率。这表示进程最近的 CPU 使用率,通常是一个介于 0.0(没有使用)和 100.0(完全使用)之间的十进制数。但在这里,由于 ps 命令的默认输出格式,它可能只是一个简单的数字,代表优先级。
  • STIME: 启动时间。这显示了进程开始运行的时间。
  • TTY: 终端类型。通常表示进程在哪个终端上运行,或者如果没有关联到终端,则可能显示为 ?
  • TIME: CPU 时间。这显示了进程自启动以来所使用的 CPU 时间总量。
  • CMD: 命令。这显示了启动进程的命令名或命令行。

常见的:

  • systemd 是系统的初始化系统和服务管理器,负责启动和管理系统进程。
  • kthreaddksoftirqdkworkermigrationrcu_bhrcu_sched 都是内核线程,它们处理系统的低级任务,如中断、调度和其他内核功能。这些通常不由用户直接管理。

场景7:定时任务与系统状态

  1. 导师要求小明设置一个定时任务,每天备份项目目录。

    crontab -e
    # 添加以下行以每天午夜备份项目目录:
    # 0 0 * * * tar -cvf ~/project_v1_$(date +\%F).tar ~/rongyi_project
    
  2. 小明查看了当前用户的所有定时任务。

    crontab -l
    
小明笔记大公开:

crontab 是由 “cron” 和 “tab” 两个单词组成的缩写。

  1. cron:这是 Unix 和 Linux 系统中用于定时执行任务的守护进程(daemon)的名称。它会在后台运行,并每分钟检查是否有预定的作业需要执行。这些作业通常被称为 “cron jobs”。
  2. tab:这里可以理解为表格(table)的简写,因为 crontab 文件实际上是一个用于存储和管理定时任务的列表或表格。

因此,crontab 的整体意思是“cron的表格”或“cron的任务列表”。

crontab 文件中,每一行代表一个任务,包含了该任务的时间设置和要执行的命令或脚本。这些时间设置可以精确到分钟、小时、日期、月份和星期等不同的时间单位。

  1. 小明查看了系统运行时间和负载信息。

    uptime
    
小明笔记大公开之uptime命令:

显示系统已经运行了多长时间、当前有多少用户登录、以及系统在过去的 1 分钟、5 分钟和 15 分钟内的平均负载。

[christine@localhost ~]$ uptime

06:08:38 up 19:35, 5 users, load average: 0.11, 0.22, 0.26

在上一行小明得到结果中:

  • 06:08:38:当前的系统时间。
  • up 19:35:系统已经运行了 19 小时 35 分钟。(看得出小明很努力,忘了断开)
  • 5 users:当前有 5 个用户登录到系统。
  • load average: 0.11, 0.22, 0.26:系统在过去的 1 分钟、5 分钟和 15 分钟内的平均负载。

负载平均值是一个表示系统负载的度量,但它不是直接表示 CPU 使用率或正在运行的进程数量。它实际上是系统中处于可运行(或等待运行)状态的进程队列的平均长度。负载值越低,表示系统越空闲;负载值越高,表示系统越繁忙。

  • 0.11:过去 1 分钟内的平均负载。
  • 0.22:过去 5 分钟内的平均负载。
  • 0.26:过去 15 分钟内的平均负载。

以小明的这个情况,负载值都很低,表示系统目前很空闲,有足够的处理能力来处理额外的任务。

  1. 小明查看了系统内存使用情况。
free -h
小明笔记大公开之关于内存:

当运行 free -h 命令时,查看系统上的内存使用情况,其中 -h 选项表示“human-readable”,即以人类可读的格式(如 G、M)显示结果。

[christine@localhost ~]$ free -h
total used free shared buff/cache available
Mem: 972M 580M 64M 124M 327M 65M
Swap: 2.0G 496M 1.5G

  • Mem: 这部分显示了物理内存(RAM)的使用情况。
    • total: 总的物理内存大小,这里是 972M(972 兆字节)。
    • used: 当前已使用的物理内存,这里是 580M。
    • free: 当前未使用的物理内存,这里是 64M。
    • shared: 被多个进程共享的内存量,这里是 124M。
    • buff/cache: 缓存和缓冲区使用的内存量,这部分内存可以被回收以满足应用程序的需求,而不必从磁盘读取数据。这里是 327M。
    • available: 估计的、在不交换出的情况下,可以分配给应用程序的内存量。这是 “free” 和 “buff/cache” 的一个估计值,考虑了它们被回收的可能性。这里是 65M。
  • Swap: 这部分显示了交换空间(swap space)的使用情况。
    • total: 总的交换空间大小,这里是 2.0G(2 吉字节)。
    • used: 当前已使用的交换空间,这里是 496M。
    • free: 当前未使用的交换空间,这里是 1.5G。

从小明的输出中,可以看到物理内存的大部分(超过一半)已经被使用,但交换空间的使用量相对较少(不到四分之一)。如果这个系统开始大量使用交换空间,那么性能可能会受到影响,因为从磁盘读取数据通常比从 RAM 读取要慢得多。不过,在这个例子中,系统似乎还有足够的 RAM 和交换空间来处理当前的工作负载。

  1. 小明查看了磁盘使用情况。
df -h
小明笔记大公开之uptime命令:

当运行 df -h 命令时,你正在查看文件系统的磁盘空间使用情况。-h 选项表示“human-readable”,即以人类可读的格式(如 G、M)显示结果。

[christine@localhost ~]$ df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/sda3 38G 5.8G 32G 16% /
devtmpfs 471M 0 471M 0% /dev
tmpfs 487M 0 487M 0% /dev/shm
tmpfs 487M 15M 472M 4% /run
tmpfs 487M 0 487M 0% /sys/fs/cgroup
/dev/sda1 297M 147M 151M 50% /boot
tmpfs 98M 4.0K 98M 1% /run/user/42
tmpfs 98M 32K 98M 1% /run/user/1000

  • 文件系统:文件系统的名称,通常与挂载点或设备关联。
  • 容量:文件系统的总容量。
  • 已用:已使用的磁盘空间。
  • 可用:剩余的磁盘空间。
  • 已用%:已使用的磁盘空间的百分比。
  • 挂载点:文件系统被挂载到哪个目录。

在你的输出中:

  • /dev/sda3 是主要的根文件系统(root filesystem),它位于 sda 磁盘的第三个分区上,总共有 38G 的空间,已经使用了 5.8G,剩余 32G,使用了 16% 的空间,并挂载在根目录 / 下。
  • devtmpfs 和多个 tmpfs 是临时文件系统,用于存储临时文件或作为内存中的文件系统使用。这些文件系统通常不会占用硬盘空间,而是使用 RAM。从输出中可以看出,它们几乎没有被使用。
  • /dev/sda1/boot 分区,用于存放引导加载器(如 GRUB)和内核文件。这个分区总共有 297M 的空间,已经使用了 147M,剩余 151M,使用了 50% 的空间。
  • /run/user/42/run/user/1000 是为特定用户(ID 为 42 和 1000 的用户)提供的临时目录,通常用于存储会话特定的文件。这些目录也没有被大量使用。

从输出中,可以看到主要的文件系统和引导分区都有足够的可用空间。如果小明看到任何文件系统的已用百分比接近或超过 100%,那就需要采取措施来释放空间或扩展文件系统的容量。

  1. 小明使用top命令实时查看系统资源使用情况。
top
小明笔记大公开之top命令:

用于实时监视系统的动态运行状况。当运行 top 命令时,它会显示系统中各个进程的资源占用情况,包括 CPU 使用率、内存占用、运行时间等。同时,top 还会更新这些信息,以便可以看到系统的实时状态。

输出解释:

  • 第一行:显示系统时间、系统运行时间、登录用户数、系统负载(最近1分钟、5分钟、15分钟的平均值)。
  • 第二行:显示进程总数、正在运行的进程数、休眠的进程数、停止的进程数、僵尸进程数。
  • 第三行:显示 CPU 状态,包括用户空间占用 CPU 百分比、内核空间占用 CPU 百分比、空闲 CPU 百分比、等待 I/O 操作的 CPU 百分比、硬中断和软中断占用的 CPU 百分比。
  • 第四行:显示物理内存总量、已使用的物理内存、空闲的物理内存、已缓冲的内存。
  • 第五行:显示交换空间总量、已使用的交换空间、空闲的交换空间。

接下来是进程列表,每个进程都有一行信息,包括进程 ID、用户、优先级、CPU 占用率、内存占用、进程状态等。

常用交互命令:

top 运行过程中,可以按以下键进行交互:

  • P:按 CPU 使用率排序。
  • M:按内存使用量排序。
  • N:以 PID 顺序排序。
  • T:按 CPU 时间排序。
  • R:对当前排序进行反转。
  • k:杀死一个进程(需要输入 PID)。
  • q:退出 。
  • h:显示帮助信息。

注意了:

  • top 命令提供的信息是实时的,所以它会持续更新。
  • 如果你发现某个进程的 CPU 或内存占用过高,可能需要进一步检查该进程。
  • 在使用 top 时,要注意系统负载和 CPU 使用率,以确保系统没有过载或运行缓慢。

场景8:dd命令,小明的惊险操作

*这几步不用跟着做,容易出问题,了解即可

  1. 小明使用dd命令备份数据。

    sudo dd if=/dev/sda of=~/sda_backup.img bs=4M
    # dd 命令用于低级复制和转换文件,在这里,它被用来复制整个硬盘。名称来源于 "data duplicator" 或 "disk dump" 的缩写
    # if 是 "input file" 的缩写。of 是 "output file" 的缩写。bs 是 "block size" 的缩写。
    # if=/dev/sda: 这是 dd 命令的一个选项,指定输入文件(或设备)。
    # 注意:/dev/sda 通常指的是整个硬盘,而不是某个分区(如 /dev/sda1)。
    # bs=4M是 dd 命令的块大小(block size)选项。指定了每次读取和写入的块大小为 4MB,可以提高复制大文件的效率。
    
小明的提醒:

警告:这条命令极其危险,因为它会覆盖 ~/sda_backup.img 文件(如果它已经存在),并且如果错误地指定了 ifof 参数,它可能会导致数据丢失。在执行此类命令之前,请确保你完全理解它的工作原理,并已经采取了适当的预防措施(如备份)。

此外,对于备份整个硬盘,更安全和更常见的方法是使用专业的磁盘镜像工具,如 ddrescue(它可以处理坏扇区)或图形界面的工具,如 CloneZilla。

  1. 小明试图恢复数据,但不小心输入了错误的输出路径,导致系统崩溃。
sudo dd if=~/sda_backup.img of=/wrong/path bs=4M
# 系统崩溃,恢复重启后导师解释了错误的原因
  1. 小明再试一次,这次成功恢复了数据。
sudo dd if=~/sda_backup.img of=/dev/sda bs=4M

这篇关于情景题之小明的Linux实习之旅:linux实战练习1(下)【基础命令,权限修改,日志查询,进程管理...】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1049868

相关文章

python panda库从基础到高级操作分析

《pythonpanda库从基础到高级操作分析》本文介绍了Pandas库的核心功能,包括处理结构化数据的Series和DataFrame数据结构,数据读取、清洗、分组聚合、合并、时间序列分析及大数据... 目录1. Pandas 概述2. 基本操作:数据读取与查看3. 索引操作:精准定位数据4. Group

Spring Boot集成/输出/日志级别控制/持久化开发实践

《SpringBoot集成/输出/日志级别控制/持久化开发实践》SpringBoot默认集成Logback,支持灵活日志级别配置(INFO/DEBUG等),输出包含时间戳、级别、类名等信息,并可通过... 目录一、日志概述1.1、Spring Boot日志简介1.2、日志框架与默认配置1.3、日志的核心作用

Oracle数据库定时备份脚本方式(Linux)

《Oracle数据库定时备份脚本方式(Linux)》文章介绍Oracle数据库自动备份方案,包含主机备份传输与备机解压导入流程,强调需提前全量删除原库数据避免报错,并需配置无密传输、定时任务及验证脚本... 目录说明主机脚本备机上自动导库脚本整个自动备份oracle数据库的过程(建议全程用root用户)总结

SQL Server跟踪自动统计信息更新实战指南

《SQLServer跟踪自动统计信息更新实战指南》本文详解SQLServer自动统计信息更新的跟踪方法,推荐使用扩展事件实时捕获更新操作及详细信息,同时结合系统视图快速检查统计信息状态,重点强调修... 目录SQL Server 如何跟踪自动统计信息更新:深入解析与实战指南 核心跟踪方法1️⃣ 利用系统目录

Linux如何查看文件权限的命令

《Linux如何查看文件权限的命令》Linux中使用ls-R命令递归查看指定目录及子目录下所有文件和文件夹的权限信息,以列表形式展示权限位、所有者、组等详细内容... 目录linux China编程查看文件权限命令输出结果示例这里是查看tomcat文件夹总结Linux 查看文件权限命令ls -l 文件或文件夹

idea的终端(Terminal)cmd的命令换成linux的命令详解

《idea的终端(Terminal)cmd的命令换成linux的命令详解》本文介绍IDEA配置Git的步骤:安装Git、修改终端设置并重启IDEA,强调顺序,作为个人经验分享,希望提供参考并支持脚本之... 目录一编程、设置前二、前置条件三、android设置四、设置后总结一、php设置前二、前置条件

java中pdf模版填充表单踩坑实战记录(itextPdf、openPdf、pdfbox)

《java中pdf模版填充表单踩坑实战记录(itextPdf、openPdf、pdfbox)》:本文主要介绍java中pdf模版填充表单踩坑的相关资料,OpenPDF、iText、PDFBox是三... 目录准备Pdf模版方法1:itextpdf7填充表单(1)加入依赖(2)代码(3)遇到的问题方法2:pd

解密SQL查询语句执行的过程

《解密SQL查询语句执行的过程》文章讲解了SQL语句的执行流程,涵盖解析、优化、执行三个核心阶段,并介绍执行计划查看方法EXPLAIN,同时提出性能优化技巧如合理使用索引、避免SELECT*、JOIN... 目录1. SQL语句的基本结构2. SQL语句的执行过程3. SQL语句的执行计划4. 常见的性能优

深度解析Nginx日志分析与499状态码问题解决

《深度解析Nginx日志分析与499状态码问题解决》在Web服务器运维和性能优化过程中,Nginx日志是排查问题的重要依据,本文将围绕Nginx日志分析、499状态码的成因、排查方法及解决方案展开讨论... 目录前言1. Nginx日志基础1.1 Nginx日志存放位置1.2 Nginx日志格式2. 499

Linux系统中查询JDK安装目录的几种常用方法

《Linux系统中查询JDK安装目录的几种常用方法》:本文主要介绍Linux系统中查询JDK安装目录的几种常用方法,方法分别是通过update-alternatives、Java命令、环境变量及目... 目录方法 1:通过update-alternatives查询(推荐)方法 2:检查所有已安装的 JDK方