SCAU期末笔记 - Linux系统应用与开发教程课后习题

server/2024/12/14 4:20:05/

时间紧迫,只过一遍课后习题

第1章 Linux概述

1.Linux有哪些特点?

开放性、多用户、多任务、良好的用户界面、设备独立性、完善的网络功能、可靠的系统安全、良好的可移植性。

2.Linux和UNIX是什么关系?

Linux是一个类UNIX内核的可自由发布的实现版本。

3.软件按提供方式和是否盈利可以划分哪几种类型?

  • 商业软件:用户只有使用权,不提供源代码。
  • 共享软件:试用一段时间后收费,不提供源代码。
  • 自由软件:不一定免费,但开发者提供软件全部源代码。
  • 免费软件:不要钱,但不一定提供源代码。

4.什么是GNU计划?

目标是创建一套完全自由的类UNIX系统,要求①可自由复制GNU的软件;②可自由修改源代码;③可自由发布修改过的源代码,但不得收取任何版权费用。

5.阐述GNU/Linux系统的基本体系结构。

分两个层次,上面是用户(或应用程序)空间,这是用户应用程序执行的地方。用户空间之下是内核空间,包含了系统调用接口、内核、依赖于体系结构的内核代码及硬件平台。
GNU/Linux操作系统的结构
内核可以进一步划分为3层。最上面是系统调用接口,实现一些最基本的功能。系统调用接口之下是内核,可以更精确地定义独立于体系结构的内核代码,这些代码对Linux支持的处理器体系结构通用。内核之下是依赖于体系结构的内核代码,这些代码服务于特定体系结构的处理器和平台。
Linux内核

6.Linux内核包含哪几部分?每部分的作用是什么?

  • 1.系统调用接口提供某些机制执行从用户空间到内核的函数调用。
  • 2.进程管理的重点是进程的执行。
  • 3.内存管理按照所谓的内存页的方式对内存进行管理。
  • 4.虚拟文件系统为文件系统提供了一个通用的接口抽象。
  • 5.网络堆栈为各种网络协议提供一个用户接口,提供一种标准化方法来管理连接。
  • 6.设备驱动能够驱动特定的硬件设备。
  • 7.依赖体系结构的代码包含各种特定体系结构的子目录,使有些元素能够正常操作并实现更高效率。

7.以根目录“/”为起点,Linux中由根目录派生而来的第一层目录有哪些?它们的主要作用是什么?

Linux下常用的目录及主要作用如下。
/bin、 /usr/bin:一般放置执行文件。
/sbin、/usr/sbin:系统管理员常用指令集目录。
/boot:开机设定目录,也是放置vmlinuz 的地方。
/dev:系统设备文件目录。
/etc:系统配置文件目录,尤其是passwd、shadow 文件。
/etc/rc.d/init.d:系统开机时载入服务的脚本目录。
/home:系统使用者目录。
/root:系统管理员目录。
/ib:Linux执行或编译程序函数库目录。
/mnt:软驱与光驱接入挂载目录。
/proc:系统核心与执行程序的一些信息。
/tmp:临时文件目录。
/ost+found:放置系统产生错误时遗失的片段。
/usr/src:存放程序源代码,Linux内核的源代码就放在usr/src/linux里。
/var:系统日志文件目录。

8.Linux的运行级别有几个?

一共7种,编号从0到6分别是关机级别、单用户字符模式级别、多用户字符模式级别(不启动NFS)、多用户字符模式级别(启动网络功能)、用户自定义级别、图形用户界面级别、重启级别。

9.安全关闭Lunix系统的命令有几种?

3种,分别是shutdownhaltpoweroff

第2章 Linux桌面环境的使用

1.CentOS 8默认的桌面环境是什么?

CentOS 8默认的桌面环境背景为蓝色,该桌面环境由组合面板和桌面组成。组合面板在桌面上方,包含“Activities”按钮、时间和输入法等。

2.如何修改系统的日期和时间?

搜索栏搜索“time”即可设置日期与时间。

3.如何更改桌面的背景?

桌面右击弹出的菜单中选择相应命令即可。

4.默认情况下系统不支持输入中文,如何安装支持输入中文的输入法?

用终端输入sudo dnf installl ibus-libpinyin.x86_64 -y后按Enter键。

5.如何查看系统的磁盘使用情况?

单机桌面环境左上角的“Activities”按钮,在左面板中单机“Show Applications”图标,然后找出“Disk Usage Analyzer”和“Disks”图标,单击即可打开对应窗口。

第3章 Linux文本编辑器

1._____命令用于在vi编辑器中保存文件并退出。

  • A.:q退出编辑器,如果文件已修改请使用下面的命令
  • B.ZZ:wq的快捷键
  • C.:q!退出编辑器,且不保存文件
  • D.:wq退出编辑器,且保存文件

2.使用vi编辑器进行C语言程序的编写,为了更清楚地阅读程序代码,需要在vi编辑器中显示文件中每一行的行号,为此需要执行_____命令。

  • A.:set autoindent用于开启自动缩进
  • B.:set ignorecase控制搜索时不再区分大小写
  • C.set number用于显示所有行的行号
  • D.set ruler用于显示光标当前的行号和列号

3.不属于vi编辑器的3种工作模式的是_____。

  • A.命令模式:进入vi编辑器的默认模式,可以对文件进行移动光标、复制、删除、粘贴等操作。
  • B.插入模式:在此模式下可以输入字符。
  • C.末行模式:用于文件的保存、退出、查找、替换、设置行号等。
  • D.改写模式:不存在

4.vi编辑器的3种工作模式是如何切换的?

使用vi编辑器主要是根据操作需要在各种模式下切换,切换方法如下图所示。启动vi编辑器后,默认会进入命令行模式,通过i、o、a、R 等快捷键可以切换到插入模式,通过:、/、?等快捷键可以切换到末行模式。在插入模式或末行模式下,通过Esc键可切换回命令行模式,插入模式和末行模式之间不能直接切换。vi编辑器工作模式的切换

5.在命令模式下,怎样查找匹配某个模式的行?

在命令模式下,输入/来启动搜索模式。此时,你可以输入要查找的正则表达式模式。然后按Enter键,就会高亮显示第一个匹配项,然后可以使用n键跳转到下一个匹配项,使用N键跳转到上一个匹配项。

6.修改完之后,要全部复原,有哪些方法?

  • 使用:q!命令退出编辑器,且不保存文件
  • 在插入模式编辑完文件后,按Esc键返回命令模式,然后按u键来撤销上一步删除或修改的操作;如果想撤销多个以前的修改或删除操作,则多次按u

7.假设要复制第10行到第14行这5行的内容,并将其粘贴到最后一行之后,有哪些办法?

将光标移至第10行,用<5>yy将当前行向下n行复制到缓冲区,然后将光标移到最后一行最后面,直接p粘贴即可。

8.假设要删除第10行到第14行这5行之间以#开头的批注内容,应如何操作?

将光标移至第10行,用<5>dd将当前行向下n行删除。

第4章 Shell环境与命令基础

1.Linux文件属性和权限一共有10位,分成4段,第3段表示的内容是_____。

  1. 第1位:表示文件类型。例如,“-”表示普通文件,“d”表示目录,“l”表示链接文件等。
  2. 第2-4位:表示文件所有者的权限。这3位分别代表读(r)、写(w)和执行(x)权限。例如,“rwx”表示所有者具有读、写和执行权限。
  3. 第5-7位:表示文件所有者所在组的权限。这3位的含义与所有者权限相同,分别代表组用户对该文件的读、写和执行权限。
  4. 第8-10位:表示其他用户的权限。这3位也分别代表其他用户对该文件的读、写和执行权限。

因此,第3段(即第5-7位)表示的是文件所有者所在组的权限。

2.系统中某文件的详细格式为-rwxr-xr-x 1 root root 722684 Jun 15 2021 /bin/bash,该文件应拥有_____权限。

在Linux系统中,文件的详细格式-rwxr-xr-x表示了该文件的权限和其他一些属性。这个格式可以拆分为几个部分来理解:

  • -:这是文件类型的标识,-表示这是一个普通文件。如果是目录,这里会是d;如果是链接文件,这里会是l,等等。
  • rwx:这是文件所有者的权限。r表示读权限(read),w表示写权限(write),x表示执行权限(execute)。因此,rwx表示文件所有者具有读、写和执行权限。
  • r-x:这是文件所属组的权限。组用户具有读和执行权限,但没有写权限。
  • r-x:这是其他用户的权限。其他用户也具有读和执行权限,但没有写权限。

所以,根据给定的文件详细格式-rwxr-xr-x,该文件应拥有的权限是:

  • 文件所有者(root):读、写和执行权限。
  • 文件所属组(root):读和执行权限。
  • 其他用户:读和执行权限。

综上所述,该文件应拥有读、写和执行(对所有者而言),以及读和执行(对组用户和其他用户而言)的权限。

在Linux系统中,文件的权限可以使用三位数字来表示,每一位数字代表不同用户类别的权限。这些用户类别分别是:文件所有者(owner)、文件所属组(group)和其他用户(others)。每位数字是通过将读(read,r,值为4)、写(write,w,值为2)和执行(execute,x,值为1)权限对应的值相加得到的。如果没有某个权限,则对应位置为0。

对于文件-rwxr-xr-x,其权限可以用以下三位数字表示:

  1. 文件所有者(owner)的权限

    • 读(r):4
    • 写(w):2
    • 执行(x):1
    • 总和:4 + 2 + 1 = 7
  2. 文件所属组(group)的权限

    • 读(r):4
    • 写(w):无(对应值为0)
    • 执行(x):1
    • 总和:4 + 0 + 1 = 5
  3. 其他用户(others)的权限

    • 读(r):4
    • 写(w):无(对应值为0)
    • 执行(x):1
    • 总和:4 + 0 + 1 = 5

因此,文件-rwxr-xr-x的权限可以用三位数字755来表示。

这种表示方法简洁明了,方便在脚本和命令行操作中使用。例如,使用chmod命令来更改文件权限时,就可以使用这种数字表示法。例如,要将一个文件的权限设置为755,可以使用命令chmod 755 文件名

3.系统中某文件的详细格式为-rwxr-xr-x 1 tony admin 722684 Jun 15 2021 /bin/bash,该文件所属用户以及所属的组分别是_____。

同上题,所属用户为tony,所属的组为admin

4.系统中某文件的详细格式为-rwxr-xr-x 1 tony admin 722684 Feb 03 2020 hue.log,如果要将该文件所属用户修改为kubernetes,应该使用命令_____。

chown kubernetes hue.log

  • chown:这是用于更改文件或目录所有者和/或组的命令。
  • kubernetes:这是你想要设置的新文件所有者。
  • hue.log:这是你想要更改所有者的文件的名称。
  • chmod 用于更改文件或目录的权限。这些权限决定了谁可以读取、写入或执行该文件或目录。

5.系统中某文件的详细格式为-rwxr-xr-x 1 tony admin 197609 Feb 03 2020 hue.log,如果要将该文件所属组修改为hdfs,应该使用命令_____。

chgrp hdfs hue.logchown :hdfs hue.log都可以

6.系统中存在压缩文件apache-tomcat-9.0.43.tar.gz,应该采用命令_____对该文件进行解压缩。

tar -xzvf apache-tomcat-9.0.43.tar.gz

  • -x:表示解压缩(extract)。
  • -z:表示文件是通过 gzip 压缩的。
  • -v:表示在解压缩时显示进度(verbose)。
  • -f:表示后面跟的是要处理的文件名(file)。

7.系统中有用户user1和user2,同属于user组。在用户user1目录下有一文件file1,它拥有644的权限,如果用户user2想修改用户user1目录下的file1文件,应拥有_____权限。

文件权限644的分解如下:

  • 所有者(user):6(4+2,即读和写权限)
  • 所属组(group):4(只有读权限)
  • 其他用户(others):4(只有读权限)

所以同组用户user2想要获得写权限至少是把4变成6(4+2),即664

8.使用mkdir命令创建一个临时文件夹/mnt/tmp,并将一些文件复制并粘贴到其中。使用完后要删除/mnt/tmp文件夹及其中的所有文件,应该使用命令_____。

rm -r /mnt/tmp中的-r表示递归删除,即删除里面的所有文件。

9.什么是Shell?Shell的作用是什么?

Shell是一种命令行界面。作为用户与Linux系统间接口的程序,Shell允许用户向操作系统输入需要执行的命令。

10.more命令和less命令有什么区别?

less命令允许使用者向上滚动以浏览已经看过的部分,而且less命令比more命令在打开大型文件时快。

11.硬链接和符号链接有什么区别?

硬链接是通过共享文件系统的inode来直接关联文件数据,而符号链接则是通过存储目标文件的路径来间接引用文件。

12.描述ln、cp、mv、rm命令对文件链接数和索引节点号的影响。

  1. ln

    • 硬链接:增加原文件链接数,索引节点号不变。
    • 符号链接:创建新文件(独立索引节点号),不增加目标文件链接数。
  2. cp:复制文件,分配新索引节点号,链接数为1。

  3. mv

    • 同文件系统移动:不改变索引节点号和链接数。
    • 跨文件系统移动:相当于复制(新索引节点号)和删除(减少原链接数)。
  4. rm:删除文件,减少链接数;若删除最后一个硬链接,释放索引节点和数据块。

13.查找一个文件,比较find命令和locate命令的查找速度。

  • 在查找速度方面,locate命令通常比find命令快得多,因为它不需要遍历整个文件系统。
  • 在搜索条件方面,find命令更加灵活和强大,可以满足多种复杂的搜索需求。
  • 在实时性方面,find命令能够找到最新创建或修改的文件,而locate命令则可能因数据库更新延迟而找不到这些文件。

第5章 系统管理

1.终止一个前台进程可能用到的命令和操作室____。

  • A.kill要知道进程的后台ID才可以终止
  • B.Ctrl+C可以直接终止一个前台进程
  • C.shut down关机
  • D.halt也是用于关机

2.关于文件系统的安装和卸载,下面描述正确的是_____。

  • A.如果光盘未经卸载,光驱是打不开的
  • B.安装文件系统的挂载点只能是/mnt下 虽然/mnt是一个常见的挂载点,但用户可以选择文件系统中的任何空目录作为挂载点,只要该目录满足挂载要求(如权限、空间等)。
  • C.不管光驱中是否有光盘,系统都可以安装CD-ROM设备 如果没有光盘在光驱中,或者光盘无法被读取(如损坏、格式不兼容等),那么文件系统就无法挂载该光盘,也就无法访问光盘上的数据。
  • D.mount/dev/fd0/floppy此命令中目录/floppy是自动生成的 在使用mount命令挂载设备时,指定的挂载点目录(如/floppy)必须事先存在,或者用户需要在执行mount命令时同时创建该目录。

3.使用at规划进程任务时,为了删除已经规划好的工作任务,用户可以使用_____工具。

  • A.atq:用于列出当前用户已计划的任务。它显示任务的编号、执行时间和命令。
  • B.atrm:用于删除已计划的任务。用户需要知道任务的编号,然后使用 atrm <job_id> 来删除对应的任务。
  • C.rm:是Linux/Unix系统中用于删除文件或目录的命令,与 at 任务规划无关。
  • D.del:在Windows系统中用于删除文件或目录的命令,同样与 at 任务规划无关。在Linux/Unix系统中,del 并不是标准的命令。

所以,为了删除已经规划好的 at 工作任务,应该使用 atrm 命令。

4.系统启动时的日志信息存放在____。

  • A./var/log/syslog:记录系统级别的消息和事件,包括硬件、网络、用户登录等。
  • B./var/log/boot:记录系统启动过程中的关键步骤和状态。
  • C./var/log/messages:记录系统的大部分重要事件和消息,包括内核和服务信息。
  • D./var/log/statues:可能是特定系统或应用程序自定义的日志文件,记录相关消息和事件(需查阅文档确认)。

5.常用的文件系统有哪几种?

6种,分别是FAT、NTFS、Ext2、Ext3、Ext4和ISO 9600。

6.Linux系统为什么可以支持大部分的文件系统?

使用一种统一的接口VFS,将不同文件系统的实现细节隐藏起来,因此从外部看上去,所有的文件系统都是一样的。

7.进程的启动方式有几种?

  1. 手动启动进程,想要在后台运行就在运行命令末尾加上一个&
  2. 调度启动进程:at命令、crontab命令。

8.Linux系统用户文件/etc/passwd的每一行代表一个用户账号信息,它的每一个区域代表什么?

  1. 用户名
  2. 密码占位符(通常为“x”或类似字符)
  3. 用户ID(UID)
  4. 组ID(GID)
  5. 用户信息(全名或备注)
  6. 家目录
  7. 登录Shell

9.简述Linux系统的引导过程。

  1. BIOS/UEFI阶段:初始化硬件并加载引导程序到内存。
  2. MBR/GPT阶段:从磁盘的引导扇区或GPT分区加载引导加载程序。
  3. 引导加载程序阶段(如GRUB):显示引导菜单并加载内核到内存。
  4. 内核阶段:初始化硬件,挂载根文件系统,并准备进入用户空间。
  5. init/systemd阶段:启动系统服务,管理依赖关系,并准备用户登录。
  6. 用户空间阶段:提供用户登录界面,初始化用户环境,开始用户会话。

10.假设当前登录用户为oracle,要求每星期五21点30分开始以oracle用户执行/home/oracle/exportdata.sh程序导出数据库数据文件,请给出解决方案。

  1. 登录oracle用户:以oracle用户身份登录Linux系统。

  2. 编辑crontab:使用crontab -e命令编辑crontab文件。

  3. 添加定时任务:在crontab文件中添加30 21 * * 5 /home/oracle/exportdata.sh

  4. 确保脚本可执行:使用chmod +x /home/oracle/exportdata.sh命令设置脚本可执行权限。

  5. 验证:等待或检查系统日志确认任务是否成功设置和执行。

11.写一个crontab语句,实现每天的09:00到10:00这个时间段内,每间隔10分钟调用一次脚本/usr/local/srcipt/sh。

*/10 9 * * * /usr/local/script/sh
0 10 * * * /usr/local/script/sh

12.如何查看当前系统内还剩下多少可用内存?

free -h

13.如何查看当前系统内磁盘还剩下多少可用空间?

df -h

第6章 网络管理

1.Linux系统下,如何永久设置网络接口的IP地址?

  1. 打开终端:使用管理员权限登录系统并打开终端。

  2. 找到网络配置文件

    • 对于Debian/Ubuntu等基于Debian的发行版,网络配置文件通常位于/etc/network/interfaces/etc/netplan/目录下。
    • 对于Red Hat/CentOS等基于Red Hat的发行版,网络配置文件通常位于/etc/sysconfig/network-scripts/目录下,文件名格式为ifcfg-<接口名称>
  3. 编辑网络配置文件

    • 使用文本编辑器(如nano、vi等)打开相应的网络配置文件。
    • 找到或添加对应网络接口的配置部分。
    • 设置IP地址、子网掩码、网关等参数。例如,在Debian/Ubuntu系统中,可以添加如下行:
      auto <接口名称>
      iface <接口名称> inet static
      address <IP地址>
      netmask <子网掩码>
      gateway <网关地址>
      
      在Red Hat/CentOS系统中,可以设置如下参数:
      DEVICE=<接口名称>
      BOOTPROTO=static
      IPADDR=<IP地址>
      NETMASK=<子网掩码>
      GATEWAY=<网关地址>
      
  4. 保存并关闭文件:在编辑器中保存修改并关闭文件。

  5. 重启网络服务:使修改生效,通常需要重启网络服务。可以使用如下命令:

    • 在Debian/Ubuntu系统中:sudo systemctl restart networkingsudo service network restart
    • 在Red Hat/CentOS系统中:sudo systemctl restart networksudo service network restart
    • 也可以针对特定网络接口进行重启,如:sudo ifdown <接口名称> && sudo ifup <接口名称>
  6. 验证配置:使用ip addr show <接口名称>ifconfig <接口名称>命令查看网络接口的配置信息,确保IP地址已成功设置。

2.以绘图方式解释服务的xinetd工作模式和stand-alone工作模式,并说明选择不同工作模式的原则。

stand-alone
xinetd
基于服务负载和响应速度需求,选择xinetd模式处理低负载、对响应速度要求不高的服务,而stand-alone模式则适用于高负载、对响应速度要求高的服务。

3.Linux系统中的WWW服务软件是什么?Windows系统的WWW服务软件是什么?

Linux 系统中,Apache 是最常用的网页服务器软件;Windows 系统中,IIS 是微软自家的网页服务器软件,使用也比较广泛。

4.vsFTPd可以采用xinetd工作模式或stand-alone工作模式运行,两种模式的配置方法有什么区别?

xinetd 模式配置方法
主要配置文件:
/etc/xinetd.d/vsftpd:主要配置 vsftpd 的端口、服务类型等。
/etc/vsftpd/vsftpd.conf:主要配置 vsftpd 自身的参数,如用户权限、目录限制等。
配置步骤:
修改 /etc/xinetd.d/vsftpd 配置 vsftpd 在 xinetd 中的启动方式、端口等。
修改 /etc/vsftpd/vsftpd.conf 配置 vsftpd 的具体参数。
重启 xinetd 服务。

stand-alone 模式配置方法
主要配置文件:
/etc/vsftpd/vsftpd.conf:配置 vsftpd 的所有参数。
配置步骤:
直接修改 /etc/vsftpd/vsftpd.conf 配置 vsftpd 的所有参数。
重启 vsftpd 服务。

配置区别总结
xinetd 模式 需要配置两个文件,且需要重启 xinetd 服务。
stand-alone 模式 只需配置一个文件,且只需重启 vsftpd 服务。

5.SELinux具有哪些作用?

SELinux是一种强制访问控制系统,它能为 Linux 系统提供更细粒度的安全保护。
它的主要作用是:

  • 限制进程权限: 每个进程只能访问系统中它被允许访问的部分。
  • 提高系统安全性: 防止恶意软件获取过多的权限,从而降低系统被攻击的风险。
  • 增强系统稳定性: 通过隔离不同进程,减少系统崩溃的可能性。

6.如果要检测本地到192.168.1.102的网络是否连通,应该怎么检测?

ping 192.168.1.102

7.想要查看8080端口被哪个进程占用,应该使用什么命令?

netstat -ano | findstr "8080"得到进程ID,然后tasklist | findstr 进程ID即可查看进程详细信息

8.如何修改默认网关?

  1. 编辑 /etc/sysconfig/network-scripts/ifcfg-<接口名> 文件

    sudo nano /etc/sysconfig/network-scripts/ifcfg-eth0
    

    添加或修改如下条目:

    BOOTPROTO=static
    IPADDR=192.168.1.100
    PREFIX=24
    GATEWAY=192.168.1.1
    DEVICE=eth0
    ONBOOT=yes
    
  2. 重启网络服务

    sudo systemctl restart network
    

9.DHCP服务的作用是什么?什么场景下会用到DHCP服务?

DHCP的作用是允许网络设备自动获取网络配置参数。DHCP服务会在需要自动分配IP地址和其他网络配置参数的场景中用到。

10.想要在本地增加一个域名解析,使得域名MH01路由到192.168.1.102,应该怎么做?

  1. 打开本地hosts文件(Windows系统通常位于C:\Windows\System32\drivers\etc\hosts,Linux和Mac系统通常位于/etc/hosts)。

  2. 在文件末尾添加一行,格式为“192.168.1.102 MH01”,保存文件。

第7章 Shell程序设计

1.下列对Shell变量FRUIT操作,正确的是_____。

  • A.为变量赋值:$FRUIT=apple 错误,因为给变量赋值时不应包含$符号,正确的赋值应为FRUIT=apple
  • B.显示变量的值:fruit=apple 错误,因为它只是重新赋值给变量,并没有显示变量的值。
  • C.显示变量的值:echo $FRUIT
  • D.判断变量是否有值:[-f"$FRUIT"] 错误,判断变量是否有值的正确方式通常使用[ -z "$FRUIT" ]来检查变量是否为空,或者使用[ -n "$FRUIT" ]来检查变量是否非空。[-f"$FRUIT"]是检查文件是否存在并且是普通文件的测试条件,不适用于检查变量是否有值。

2.简述Shell程序的特点和用途。

特点:①不同解释器使用不同的语法;②解释性语言不需要重新编译。
用途:①系统管理;②数据处理;③自动化测试。

3.如何执行bash程序?如何调试bash程序?

执行:直接在终端里输入程序的路径,回车即可。
调试:在bash脚本的关键位置使用echo命令输出变量值或调试信息。

4.概述Shell程序的基本结构。

Shell类型说明、注释、函数定义、主过程

5.编写程序,列出1~50的奇数。

#!/bin/bash# 使用for循环列出1到50之间的奇数
for ((i=1; i<=50; i+=2))
doecho $i
done

6.编写程序,查看/usr/local/hue.log第10行第3列的内容。

#!/bin/bash# 使用awk提取第10行,然后使用cut提取第3列(假设列是由空格分隔的)
# 注意:这里的NR=10表示处理第10行,$3表示提取第3个字段
awk 'NR==10 {print $3}' /usr/local/hue.log

7.编写程序,求100以内的素数。

#!/bin/bash# 定义一个函数来判断一个数是否为素数
is_prime() {local num=$1if [ $num -le 1 ]; thenreturn 1 # 不是素数fifor ((i=2; i*i<=num; i++)); doif [ $((num % i)) -eq 0 ]; thenreturn 1 # 不是素数fidonereturn 0 # 是素数
}# 遍历1到100之间的数字,并打印出素数
for ((num=1; num<=100; num++)); doif is_prime $num; then# 注意这里的-eq 0表示函数返回0,即该数是素数# 在Bash中,函数返回0通常表示成功/真,非0表示失败/假# 但在这里,我们反其道而行之,因为0不是素数,而函数返回0表示“是素数”的判断是反直觉的# 不过,由于我们的函数命名为is_prime,并且我们按照函数名来解读其返回值# 所以当函数返回0时,我们理解为“是素数”并打印该数echo $numfi
done

8.设计一个函数,使其列出指定目录下的子目录。

#!/bin/bash# 定义一个函数来列出指定目录下的子目录
list_subdirectories() {local directory=$1# 使用find命令查找指定目录下的所有目录(不包括文件)# -type d 表示只查找目录# -maxdepth 1 表示只查找当前目录下的项,不递归进入子目录find "$directory" -type d -maxdepth 1
}# 调用函数并传递要列出的目录作为参数
# 例如,列出/path/to/directory下的子目录
list_subdirectories "/path/to/directory"

9.bash中%#的用法描述如下。

#的作用是去掉符号左边内容,%的作用是去掉符号右边内容,假设有变量file=/dir1/fir2/fir3/my.file.txt,观察以下实例。
${file#*/};表示去掉第一个及其左边的字符串:dir1/dir2/dir3/my.file.txt
${file##*/};表示去掉最后一个及其左边的字符串:my.file.txt
${file#*.};表示去掉第一个及其左边的字符串:file.txt
${file##*.};表示去掉最后一个及其左边的字符串:txt
${file%/*};表示去掉右边最后一个及其右边的字符串:/dir1/dir2/dir3
${file%%/*};表示去掉最右边最后一个及其右边的字符串。
${file%.*};表示去掉最后一个及其右边的字符串:/dir1/dir2/dir3/my.file
${file%%.*};表示去掉第一个及其右边的字符串:/dir1/dir2/dir3/my
根据以上描述编写Shell程序,功能是将输入的目录下的.txt文件批量修改为.doc文件。

#!/bin/bash# 检查是否提供了目录路径作为参数
if [ -z "$1" ]; thenecho "Usage: $0 directory_path"exit 1
fi# 获取目录路径
directory=$1# 检查提供的路径是否为一个有效的目录
if [ ! -d "$directory" ]; thenecho "Error: $directory is not a valid directory."exit 1
fi# 遍历指定目录下的所有文件
for file in "$directory"/*.txt; do# 检查是否真的有.txt文件存在if [ -f "$file" ]; then# 提取文件名(包含路径,但不包含扩展名)filename="${file%.*}"# 构建新的文件名(将扩展名改为.doc)new_file="$filename.doc"# 执行重命名操作mv "$file" "$new_file"# 输出重命名结果echo "Renamed $file to $new_file"fi
done# 如果没有找到.txt文件,则给出提示
if [ $(ls "$directory"/*.txt 2>/dev/null | wc -l) -eq 0 ]; thenecho "No .txt files found in $directory."
fi

第8章 基于Linux的C编程

1.总结Linux环境下C语言程序的开发工具。

  • 文本编辑器:如Vim、Emacs、Nano、VS Code等,用于编写C语言源代码。
  • 编译器:如GCC(GNU Compiler Collection),用于将C源代码编译成可执行文件或目标文件。
  • 调试器:如GDB(GNU Debugger),用于调试C程序,查找并修复错误。
  • 构建工具:如Make,用于自动化编译和链接过程,管理项目中的依赖关系。
  • 集成开发环境(IDE):如Eclipse CDT、Code::Blocks、CLion等,提供了编辑器、编译器、调试器等一站式开发体验。

2.C头文件和C函数库之间有什么联系?

  • 头文件:包含了函数声明、宏定义、类型定义等,是编译器在编译C程序时需要的信息。头文件告诉编译器如何调用库中的函数,以及这些函数所需的参数类型和返回类型。
  • 函数库:实现了头文件中声明的函数。当链接器处理编译后的目标文件时,它会查找并链接这些函数库中的实际函数实现。

3.简述GCC的用法和常用选项的含义。

GCC的基本用法
GCC编译器的基本用法是:

gcc [选项] 源文件... [-o 输出文件]

其中,源文件可以是C或C++源文件,GCC会根据文件扩展名自动判断使用哪种语言进行编译。如果没有指定输出文件,GCC会默认生成名为a.out的可执行文件。

常用选项的含义

  1. -o <输出文件>:指定输出文件的名称。如果不指定,GCC会默认生成名为a.out的可执行文件。

  2. -c:只编译不链接,生成目标文件(.o)。这通常用于多文件项目的编译过程,以便后续进行链接。

  3. -g:在生成的目标文件中包含调试信息,这对于使用GDB等调试器进行调试是必要的。

  4. -Wall:打开GCC能够提供的所有常用警告信息,帮助开发者发现潜在的代码问题。

  5. -O、-O1、-O2、-O3:优化选项。-O表示启用优化,但优化级别较低;-O1-O2-O3分别表示启用不同级别的优化,数字越大优化越深入,但编译时间也会相应增加。-O0表示不进行优化(这是默认设置)。

  6. -I <目录>:指定头文件搜索路径。GCC会在这些路径中查找包含的文件。

  7. -L <目录>:指定库文件搜索路径。GCC会在这些路径中查找链接时需要的库文件。

  8. -l <库名>:链接指定的库。库名通常为lib<库名>.so(动态库)或lib<库名>.a(静态库)去掉前缀lib和后缀(.so.a)。

4.静态函数库与动态函数库有什么区别?

  • 链接方式:静态库在编译时链接到程序中,成为程序的一部分;动态库在运行时链接,程序运行时才加载。
  • 内存使用:多个程序使用同一个静态库时,每个程序都会有一份库的副本;而动态库可以被多个程序共享,节省内存。
  • 更新与维护:静态库更新后,需要重新编译使用它的程序;动态库更新后,只需替换库文件,无需重新编译程序。
  • 加载速度:静态库在程序启动时已经加载完成;动态库可能需要额外的加载时间,尤其是在程序启动时。

5.软件维护工具make是如何使用的?

Make是一个控制程序编译的工具,它使用一个名为Makefile的文件来指定编译规则。使用Make的基本步骤是:

  • 创建一个Makefile文件,定义目标、依赖关系和编译规则。
  • 在终端中运行make命令,Make会根据Makefile中的规则自动编译和链接程序。

Makefile中常用的规则包括:

  • target: dependencies:定义目标和依赖关系。
  • command:在目标需要更新时执行的命令。

6.什么场景下需要使用make工具?

大型项目;依赖关系;重复编译;跨平台编译

7.使用gcc生成的.o文件和.s文件有什么区别?

  • .o文件:目标文件(Object File),是编译器将源文件编译成机器代码(但尚未链接成可执行文件)的中间文件。它包含了程序的机器指令、数据段、重定位信息等,但还没有与库文件链接。
  • .s文件:汇编文件(Source File in Assembly Language),是编译器将源文件转换成汇编代码后生成的文件。它包含了程序的汇编指令,是编译器输出的中间表示形式之一,通常用于调试或优化。要生成.s文件,可以使用GCC的-S选项。

8.简述采用gdb调试C语言程序的步骤。

  1. 编译程序:gcc -g -o example example.c
  2. 启动GDB:gdb example
  3. 设置断点:break main
  4. 启动程序:run
  5. 单步执行:stepnext
  6. 查看变量值:print aprint bprint sum
  7. 继续执行:continue
  8. 查看函数调用栈(如果需要):backtrace
  9. 退出GDB:quit

9.下图所示的程序结构所对应的makefile文件如何编写?

程序结构

# 指定编译器
CC = gcc# 编译选项
CFLAGS = -Wall -g# 指定源文件目录
SRC_DIR = .
FUNCTIONS_DIR = functions# 指定源文件
SRCS = $(wildcard $(SRC_DIR)/*.c)
FUNCTIONS_SRCS = $(wildcard $(FUNCTIONS_DIR)/*.c)# 生成的目标文件
OBJS = $(SRCS:.c=.o)
FUNCTIONS_OBJS = $(FUNCTIONS_SRCS:.c=.o)# 最终的可执行文件
TARGET = hello# 默认目标
all: $(TARGET)# 链接目标文件和库(如果有)生成可执行文件
$(TARGET): $(OBJS) $(FUNCTIONS_OBJS)$(CC) $(CFLAGS) -o $(TARGET) $(OBJS) $(FUNCTIONS_OBJS)# 编译源文件生成目标文件
%.o: %.c$(CC) $(CFLAGS) -c $< -o $@# 清理生成的文件
clean:rm -f $(OBJS) $(FUNCTIONS_OBJS) $(TARGET)# 伪目标,不生成文件,仅用于执行命令
.PHONY: all clean

第9章 GTK+图形用户界面程序设计

1. 简述X Window的编程架构

X Window系统是一个为图形界面提供基本框架的窗口系统,它本身并不直接提供图形界面的各种控件和元素,而是为开发者提供了一个底层的绘图接口和事件处理机制。开发者需要基于X Window系统提供的接口来创建和管理窗口、处理用户输入等。X Window系统的编程架构主要包括以下几个部分:

  • 服务器(X Server):负责管理硬件资源和显示内容,将客户端的请求转化为屏幕上的显示。
  • 客户端(X Client):负责发送请求给服务器,请求内容包括窗口的创建、移动、改变大小、绘制图形等。
  • 协议(X Protocol):定义了客户端和服务器之间通信的格式和规则,确保双方能够正确理解和处理对方的请求和响应。

2. 简述GTK+图形用户界面程序的开发流程

GTK+图形用户界面程序的开发流程通常包括以下几个步骤:

  • 安装开发环境:首先需要安装GTK+开发库和相关工具,如gcc编译器等。
  • 编写源代码:使用C语言(或其他绑定语言)编写GTK+程序的源代码,包括窗口的创建、控件的添加、事件的处理等。
  • 编译和链接:使用gcc等编译器编译源代码,并链接GTK+库生成可执行文件。
  • 运行和调试:运行生成的可执行文件,进行界面测试和调试,确保程序能够正确显示和处理用户输入。

3. GTK+有什么特点?它由几部分组成?

GTK+的特点主要包括稳定、跨平台、多种语言绑定、接口丰富、与时俱进、算法丰富以及移动嵌入式应用广泛等。

GTK+由多个部分组成,主要包括以下几个核心库:

  • Glib:提供了底层的数据结构、类型、线程支持、事件循环和动态加载等功能。
  • GObject:实现了面向对象系统,使得GTK+中的对象可以具有封装、继承和多态等特性。
  • Pango:支持文本的渲染和布局。
  • ATK(Accessibility Toolkit):帮助创建易使用的应用程序,并允许用户运行带有屏幕渲染和其他工具的应用程序。
  • GDK(GIMP Drawing Kit):处理底层图形渲染,是GTK+与X Window系统或其他图形系统之间的接口。

4. GTK+的对象层次结构是怎样的?

GTK+的对象层次结构是基于面向对象的思想设计的,它有一个根对象(通常是GtkObject),然后其他对象都继承自这个根对象或根对象的子类。GTK+中的对象通常是由结构体模拟的,每个子类结构体都包含了父类结构体的所有成员,并添加了新的成员和成员函数。例如,GtkWindow对象继承自GtkWidget对象,而GtkWidget对象又继承自GtkObject对象。这样的继承关系使得GTK+中的对象可以具有层次化的结构和功能。

5. 举例说明哪些属于GTK+的非容器控件

GTK+中的非容器控件是指那些不包含其他控件的控件,它们通常用于显示信息或接收用户输入。以下是一些常见的GTK+非容器控件的例子:

  • GtkButton:按钮控件,用于响应用户的点击事件。
  • GtkLabel:标签控件,用于显示文本信息。
  • GtkEntry:单行文本输入框控件,用于接收用户输入的文本。
  • GtkScale:滑块控件,用于调整数值。

6. GTK+的容器控件和非容器控件有什么区别?

GTK+的容器控件和非容器控件的主要区别在于它们是否包含其他控件。容器控件可以包含其他控件,并将它们组织在一起形成一个界面布局。非容器控件则不包含其他控件,它们通常用于显示信息或接收用户输入。例如,GtkWindow和GtkBox都是容器控件,它们可以包含其他控件如GtkButton和GtkLabel等。而GtkButton和GtkLabel则是非容器控件,它们不包含其他控件。

7. GTK+的容器控件是如何分类的?

GTK+的容器控件可以根据不同的特性进行分类,常见的分类方式有以下几种:

  • 根据布局方式分类:如GtkBox(水平或垂直布局)、GtkGrid(网格布局)、GtkFixed(固定布局)等。
  • 根据是否包含滚动条分类:如GtkScrolledWindow(带滚动条的容器)等。
  • 根据是否允许子控件重叠分类:如GtkOverlay(允许子控件重叠的容器)等。

8. 简述GTK+的事件处理机制

GTK+的事件处理机制是基于信号和回调函数的。当一个事件发生时(如用户点击按钮、输入文本等),GTK+会发出一个信号。开发者可以连接一个回调函数到这个信号上,当信号发出时,回调函数就会被调用。回调函数可以处理事件并执行相应的操作。GTK+的事件处理机制使得开发者能够方便地处理用户输入和界面交互。

9. 简述GTK+进行国际化编程的流程

GTK+进行国际化编程的流程通常包括以下几个步骤:

  • 准备国际化资源:创建不同语言的翻译文件(如.po文件),并定义需要国际化的字符串。
  • 加载翻译文件:在程序中加载翻译文件,并根据当前的语言环境选择合适的翻译。
  • 更新界面:使用翻译后的字符串更新界面上的控件和文本。
  • 测试和调试:在不同语言环境下测试程序,确保翻译正确且界面显示正常。

请注意,以上关于GTK+国际化编程的流程可能因具体项目需求和实现方式而有所不同。在实际开发中,开发者需要根据项目需求选择合适的国际化方案和工具。

第10章 SSH服务

1.SSH服务的公私钥默认存放在目录_____中。

  • A.~/.ssh
  • B./etc/ssh
  • C.~/ssh
  • D./usr/local/ssh

在Linux和类Unix系统中,SSH服务的公私钥默认存放在用户主目录下的.ssh目录中。具体来说,公钥通常存储在/.ssh/id_rsa.pub(对于RSA密钥对)或/.ssh/id_ecdsa.pub(对于ECDSA密钥对)等文件中,而私钥则存储在/.ssh/id_rsa(对于RSA)或/.ssh/id_ecdsa(对于ECDSA)等文件中。这些文件是隐藏的,因为它们的名称以点(.)开头。

/etc/ssh目录通常包含SSH服务器的配置文件(如sshd_config),而不是存储用户的公私钥。/usr/local/ssh则可能是SSH服务器软件的安装目录,但也不是存放用户公私钥的地方。~/ssh则是一个不常见的路径,通常不是SSH公私钥的默认存放位置。

2.SSH服务的默认端口号是_____。

  • A.22 (SSH服务)
  • B.8080 (Web代理和服务器)
  • C.443 (HTTPS服务)
  • D.3306 (MySQL数据库服务)

3.实现本地和服务器之间的文件传输,应该使用_____命令。

  • A.ssh (用于在不安全的网络中提供安全远程登录和其他安全网络服务)
  • B.scp (用于实现本地和服务器之间的文件传输)
  • C.cp (用于在文件系统中创建文件的副本)
  • D.copy (Linux里面没有这个命令)

4.使用_____命令生成公私钥。

  • A.ssh-keygen
  • B.ssh-genkey
  • C.ssh-keygenerate
  • D.ssh-keycreate

A A A,其他几个命令都完全不存在

5.文件_____用于存放用户唯一的私钥。

  • A.id.rsa
  • B.id_rsa (用于存放用户的唯一私钥)
  • C.id_rsa.pub (包含与私钥相对应的公钥)
  • D.id.rsa.pub

第11章 Linux网络防火墙

1. 利用iptables加入相应的规则拦截所有TCP下的3306端口的请求。

# 添加规则拦截所有TCP下的3306端口的请求
sudo iptables -A INPUT -p tcp --dport 3306 -j DROP# 保存规则
sudo service iptables save

2. 拦截所有TCP下的8080端口的请求,只保留两个白名单IP地址192.168.0.2和192.168.0.3。

# 允许白名单IP地址访问8080端口
sudo iptables -A INPUT -p tcp -s 192.168.0.2 --dport 8080 -j ACCEPT
sudo iptables -A INPUT -p tcp -s 192.168.0.3 --dport 8080 -j ACCEPT# 拦截所有其他IP地址访问8080端口的请求
sudo iptables -A INPUT -p tcp --dport 8080 -j DROP# 保存规则
sudo service iptables save

3. 通过自定义链的方式实现习题1和习题2。

# 创建自定义链block_3306
sudo iptables -N block_3306# 创建自定义链block_8080_except_whitelist
sudo iptables -N block_8080_except_whitelist# 将自定义链应用到INPUT链
sudo iptables -A INPUT -p tcp --dport 3306 -j block_3306
sudo iptables -A INPUT -p tcp --dport 8080 -j block_8080_except_whitelist# 在自定义链block_3306中添加DROP规则
sudo iptables -A block_3306 -j DROP# 在自定义链block_8080_except_whitelist中添加白名单和DROP规则
sudo iptables -A block_8080_except_whitelist -s 192.168.0.2 -j ACCEPT
sudo iptables -A block_8080_except_whitelist -s 192.168.0.3 -j ACCEPT
sudo iptables -A block_8080_except_whitelist -j DROP# 保存规则
sudo service iptables save

4. 放行所有TCP下的8080端口的请求,但同时将两个IP地址192.168.0.2和192.168.0.3加入拦截黑名单。

# 允许所有IP地址访问8080端口
sudo iptables -A INPUT -p tcp --dport 8080 -j ACCEPT# 添加黑名单IP地址到DROP链
sudo iptables -A INPUT -p tcp -s 192.168.0.2 --dport 8080 -j DROP
sudo iptables -A INPUT -p tcp -s 192.168.0.3 --dport 8080 -j DROP# 注意:这种配置方式可能会导致逻辑上的混乱,因为首先允许了所有访问,然后又特别拦截了某些IP。
# 更合理的做法是首先拦截黑名单,然后允许其他所有访问(如果需要的话)。
# 为了更清晰,我们可以使用自定义链:# 清理之前添加的规则
sudo iptables -F INPUT# 创建自定义链block_8080_blacklist
sudo iptables -N block_8080_blacklist# 将自定义链应用到INPUT链
sudo iptables -A INPUT -p tcp --dport 8080 -j block_8080_blacklist# 在自定义链block_8080_blacklist中添加黑名单和允许规则
sudo iptables -A block_8080_blacklist -s 192.168.0.2 -j DROP
sudo iptables -A block_8080_blacklist -s 192.168.0.3 -j DROP
sudo iptables -A block_8080_blacklist -j ACCEPT# 保存规则
sudo service iptables save

5. 拦截局域网内TCP下的有关80、443端口的所有请求。

假设局域网IP范围是192.168.0.0/24,你可以使用以下规则:

# 拦截局域网内所有IP访问80和443端口的请求
sudo iptables -A INPUT -p tcp -s 192.168.0.0/24 --dport 80 -j DROP
sudo iptables -A INPUT -p tcp -s 192.168.0.0/24 --dport 443 -j DROP# 保存规则
sudo service iptables save

第12章 Linux日志分析工具及应用

1. rsyslogd的服务名称怎样与应用程序关联起来?

在CentOS7中,rsyslogd是默认的日志服务,它负责收集、处理和转发系统日志。rsyslogd的服务名称与应用程序的关联主要通过配置文件/etc/rsyslog.conf及其包含的规则来实现。这些规则指定了哪些应用程序的日志应该被收集,以及这些日志应该如何被处理和存储。

具体来说,rsyslogd的配置文件中包含了设备字段、级别字段和动作字段,这些字段共同定义了日志的收集和处理规则。设备字段用来指定需要监视的事件,级别字段用于指明与每一种功能有关的级别和优先级,而动作字段则用于描述对应功能的动作。通过这些规则,rsyslogd能够将来自不同应用程序的日志进行分类、过滤和存储。

例如,配置文件中的一条规则可能指定将来自某个特定应用程序的日志消息发送到特定的文件或远程服务器。这样,当该应用程序运行时,其产生的日志就会被rsyslogd捕获并按照规则进行处理。

2. 将rsyslogd配置为通过UDP客户端远程传输日志,在服务器接收日志。

要将rsyslogd配置为通过UDP客户端远程传输日志,并在服务器上接收日志,可以按照以下步骤进行:

服务器端配置

  1. 编辑rsyslog配置文件/etc/rsyslog.conf
  2. 取消以下两行的注释,以启用UDP 514端口接收日志:
$ModLoad imudp
$UDPServerRun 514
  1. 根据需要添加日志存储规则。例如,可以将远程主机的日志存储到特定的目录中:
$template Remote,"/var/log/syslog/%fromhost-ip%/%fromhost-ip%_%$YEAR%-%$MONTH%-%$DAY%.log"
:fromhost-ip, !isequal, "127.0.0.1" ?Remote
&~
  1. 重启rsyslog服务以应用更改:
systemctl restart rsyslog

客户端配置

  1. 编辑rsyslog配置文件/etc/rsyslog.conf
  2. 在文件末尾添加一行,指定将日志发送到远程服务器的UDP 514端口:
*.* @rsyslog服务器IP

例如,如果rsyslog服务器的IP地址是192.168.31.80,则添加:

*.* @192.168.31.80
  1. 重启rsyslog服务以应用更改:
systemctl restart rsyslog

完成上述配置后,客户端的日志就会通过UDP协议发送到服务器,并在服务器上按照指定的规则进行存储。

3. 在习题2的基础上,将传输协议改为TCP,并使用其他端口进行传输。

要在习题2的基础上将传输协议改为TCP,并使用其他端口进行传输,可以按照以下步骤进行:

服务器端配置

  1. 编辑rsyslog配置文件/etc/rsyslog.conf
  2. 取消以下两行的注释,并修改端口号(例如改为515),以启用TCP接收日志:
$ModLoad imtcp
$InputTCPServerRun 515
  1. 根据需要添加日志存储规则(与UDP配置相同)。
  2. 重启rsyslog服务以应用更改。

客户端配置

  1. 编辑rsyslog配置文件/etc/rsyslog.conf
  2. 在文件末尾添加一行,指定将日志发送到远程服务器的TCP指定端口(例如515):
*.* @@rsyslog服务器IP:515

例如,如果rsyslog服务器的IP地址是192.168.31.80,则添加:

*.* @@192.168.31.80:515
  1. 重启rsyslog服务以应用更改。

完成上述配置后,客户端的日志就会通过TCP协议发送到服务器的指定端口,并在服务器上按照指定的规则进行存储。

4. 修改logrotate的配置,观察这些参数的改变对结果的影响。

Logrotate是Linux系统中用于日志轮转的工具,它可以根据配置文件的规则自动压缩、删除和归档日志文件。要修改logrotate的配置并观察参数改变对结果的影响,可以按照以下步骤进行:

  1. 编辑logrotate的主配置文件/etc/logrotate.conf或特定应用的配置文件(位于/etc/logrotate.d/目录下)。

  2. 修改配置文件中的参数,例如:

    • weekly:将日志轮转周期改为每周。
    • rotate 4:保留4个轮转后的日志文件。
    • create:在轮转后自动创建新的日志文件。
    • dateext:使用日期作为命名格式来切割日志文件。
    • compress:通过gzip压缩转储后的日志文件。
    • size 100M:当日志文件达到100MB时触发轮转。
  3. 保存配置文件并手动触发logrotate以测试更改:

logrotate -f /etc/logrotate.conf

或针对特定应用:

logrotate -f /etc/logrotate.d/nginx
  1. 观察日志文件目录中的变化,确认新的日志文件是否按照预期被创建、压缩和归档。

通过修改logrotate的配置文件并观察结果,可以了解不同参数对日志轮转行为的影响,并根据实际需求进行调整。

5. 配置logwatch为以E-mail接收日志分析报告,并且执行logwatch通过邮件读取报告。

要配置logwatch以通过E-mail接收日志分析报告,并按照邮件读取报告,可以按照以下步骤进行:

  1. 安装logwatch(如果尚未安装):
yum -y install logwatch
  1. 配置logwatch

    • 编辑logwatch的配置文件/usr/share/logwatch/default.conf/logwatch.conf
    • 修改以下参数:
      • MailTo:设置为要接收日志分析报告的E-mail地址。
      • MailFrom:设置为发送日志分析报告的E-mail地址(通常是系统管理员的邮箱)。
      • Detail:设置日志分析报告的详细程度(Low、Med或High)。
      • mailer:设置为用于发送邮件的程序路径。如果系统安装了msmtp等邮件客户端,可以将其路径设置在这里(例如/usr/local/msmtp/bin/msmtp -t)。
  2. 配置邮件客户端(如msmtp):

    • 下载并安装msmtp。
    • 配置msmtp的配置文件(通常位于/usr/local/etc/msmtprc或类似路径)。
    • 设置邮件服务器的地址、端口、用户名和密码等参数。
  3. 测试logwatch

    • 运行logwatch并指定接收报告的E-mail地址:
    /usr/share/logwatch/scripts/logwatch.pl --mailto your-email@example.com
    
    • 检查是否收到了包含日志分析报告的E-mail。
  4. 自动化logwatch(可选):

    • 可以将logwatch配置为定期运行,例如通过cron作业。编辑crontab文件并添加一条新的cron作业:
    0 2 * * * /usr/share/logwatch/scripts/logwatch.pl --mailto your-email@example.com
    

    这条cron作业将每天凌晨2点运行logwatch并发送日志分析报告到指定的E-mail地址。

通过以上步骤,您可以配置logwatch以通过E-mail接收日志分析报告,并方便地通过邮件读取报告内容。

第13章 Linux数据备份

1. LVM自底向上的3个部分中,不包括_____。

  • A. 物理卷
  • B. 逻辑卷
  • C. 操作系统
  • D. 卷组

答案:C. 操作系统

LVM(逻辑卷管理)自底向上的三个主要部分是物理卷(Physical Volume, PV)、卷组(Volume Group, VG)和逻辑卷(Logical Volume, LV)。操作系统并不是LVM结构的一部分,而是使用LVM来管理存储的系统软件。

2. 使用_____命令查看目前系统存在的物理卷。

  • A. pvs
  • B. vgs
  • C. fdisk -l
  • D. du -h

答案:A. pvs

pvs命令用于列出系统中所有的物理卷及其相关信息。vgs命令用于列出卷组信息,fdisk -l用于列出所有磁盘分区信息,而du -h用于显示文件和目录的磁盘使用情况。

3. 使用_____命令查看目前系统的分区分布。

  • A. df -h
  • B. du -h
  • C. fdisk -l
  • D. vgs

答案:C. fdisk -l

fdisk -l命令用于列出所有磁盘的分区信息。df -h命令用于显示磁盘空间的使用情况,以人类可读的格式(如MB、GB)显示。du -h命令用于显示文件和目录的磁盘使用情况,也是以人类可读的格式显示。vgs命令则用于列出LVM卷组的信息。

4. 使用_____命令创建逻辑卷。

  • A. lvcreate
  • B. vgextend
  • C. vgcreate
  • D. pvcreate

答案:A. lvcreate

lvcreate命令用于在指定的卷组中创建逻辑卷。vgextend命令用于将物理卷添加到卷组中,vgcreate命令用于创建卷组,pvcreate命令用于将物理分区初始化为物理卷。

5. 使用_____命令删除逻辑卷。

  • A. lvremove
  • B. pvremove
  • C. vgrename
  • D. vgremove

答案:A. lvremove

lvremove命令用于删除逻辑卷。pvremove命令用于删除物理卷(但通常先要从卷组中移除物理卷),vgrename命令用于重命名卷组,vgremove命令用于删除卷组(但通常先要从卷组中删除所有逻辑卷)。


http://www.ppmy.cn/server/150002.html

相关文章

iPhone批量删除照片的方法

对于每一个iPhone用户来说&#xff0c;照片管理是一项日常而重要的任务。随着时间的积累&#xff0c;无数的照片快速填满了我们的存储空间&#xff0c;从美丽的风景到重要的家庭聚会&#xff0c;每一张照片都记录着我们生活中的瞬间。然而&#xff0c;当存储空间即将耗尽时&…

【vue2】文本自动省略组件,支持单行和多行省略,超出显示tooltip

代码见文末 vue3实现 最开始就用的vue3实现&#xff0c;如下 Vue3实现方式 vue2开发和使用文档 组件功能 TooltipText 是一个文字展示组件&#xff0c;具有以下功能&#xff1a; 文本显示&#xff1a;支持单行和多行文本显示。自动判断溢出&#xff1a;判断文本是否溢出…

Spring Boot接收从前端传过来的数据常用方式以及处理的技巧

Spring Boot接收从前端传过来的数据常用方式以及处理的技巧 一、params 传参 restful风格的请求 二、Body中的form-data 传参三、Body中的raw的json格式 传参 一、params 传参 参数是会拼接到url后面的请求 场景规范&#xff1a;url后面的key值<3个参数的时候&#xff0c…

深入探讨Python正则表达式

则表达式&#xff08;Regular Expressions&#xff0c;简称 regex 或 regexp&#xff09;是一种强大的文本处理工具&#xff0c;可以用于搜索、匹配、替换、分割等操作。Python 的 re 模块提供了丰富的正则表达式功能。 一、正则表达式的基础知识 正则表达式是一种模式匹配工具…

VLA模型

目录 引言1. 机器人大模型面临的挑战2. 目前的数据集2.1 RT-12.2 Open X-Embedding2.3 DROID 3. 目前的VLA模型3.1 Goat3.2 RT-13.2.1 总体架构3.2.2 效果 3.3 RT-23.3.1 总体架构3.3.2 效果 3.4 RT-X3.4.1 模型效果1). RT-1-X2). RT-2-X 3.5 RT-H3.5.1 总体架构3.5.2 效果 3.6…

【机器人】控制之稳定性判定: 李雅普诺夫Lyapunov (4) 李函数设计再举例

图中的动力学方程和 Lyapunov 函数构造方式是基于能量的物理意义&#xff0c;以及该系统的特性推导出来的。以下详细解释为什么可以用图中的 Lyapunov 函数 VV 来描述该动力学方程的特性。 1. 动力学方程的意义 2. Lyapunov 函数的物理意义 3. 为什么可以用这个 Lyapunov 函数表…

PCDN加速对游戏的优势

PCDN&#xff08;Peer-to-CDN&#xff09;对游戏加速确实具有显著优势。以下是对这一观点的详细解释&#xff1a; 一、PCDN技术原理 PCDN是一种基于P2P&#xff08;Peer-to-Peer&#xff09;技术的内容分发网络&#xff0c;通过挖掘和利用边缘网络的闲置资源&#xff0c;构建一…

如何在 Docker 中查看日志?

在 Docker 中查看容器的日志是一个常见的任务&#xff0c;可以帮助你调试应用程序、监控其运行状况以及解决可能出现的问题。Docker 提供了 docker logs 命令来方便地访问容器的标准输出和标准错误流。以下是使用 docker logs 的一些基本方法和其他获取日志信息的方式&#xff…