01.第一次考试:Linux基础命令

时间:2022-06-04 20:54:54

第一题(20分)

1、请简述冯诺依曼型计算机的五大组成部分及各部分的功能。(5分)

电子计算机的问世,奠基人是英国科学家艾兰· 图灵(Alan Turing)和美籍匈牙利科学家冯· 诺依曼(John Von· Neumann)。图灵的贡献是建立了图灵机的理论模型,奠定了人工智能的基础。而冯· 诺依曼则是首先提出了计算机体系结构的设想。

有5大部件构成:运算器、控制器、存储器和输入输出设备组成

(1)运算器

运算器是计算机中执行各种算术和逻辑运算操作的部件。运算器的基本操作包括加、减、乘、除四则运算,与、或、非、异或等逻辑操作,以及移位、比较和传送等操作,亦称算术逻辑部件(ALU)。

(2)控制器

控制器由程序计数器、指令寄存器、指令译码器、时序产生器和操作控制器组成,它是发布命令的"决策机构",即完成协调和指挥整个计算机系统的操作。

运算器和控制器统称*处理器,也叫做CPU。*处理器是电脑的心脏。

(3)存储器

存储器分为内存和外存。

内存是电脑的记忆部件,用于存放电脑运行中的原始数据、中间结果以及指示电脑工作的程序。
内存可以分为随机访问存储器和只读存储器,前者允许数据的读取与写入,磁盘中的程序必须被调入内存后才能运行,*处理器可直接访问内存,与内存交换数据。电脑断电后,随机访问存储器里的信息就会丢失。后者的信息只能读出,不能随意写入,即使断电也不会丢失。
外存就像笔记本一样,用来存放一些需要长期保存的程序或数据,断电后也不会丢失,容量比较大,但存取速度慢。当电脑要执行外存里的程序,处理外存中的数据时,需要先把外存里的数据读入内存,然后*处理器才能进行处理。外存储器包括硬盘、光盘和优盘。

(4)输入设备

输入设备是向计算机输入数据和信息的设备。是计算机与用户或其他设备通信的桥梁。输入设备是用户和计算机系统之间进行信息交换的主要装置之一。
键盘,鼠标,摄像头,扫描仪等都属于输入设备。

(5)输出设备

输出设备是计算机硬件系统的终端设备,用于接收计算机数据的输出显示、打印、声音、控制外围设备操作等。也是把各种计算结果数据或信息以数字、字符、图像、声音等形式表现出来。常见的输出设备有显示器、打印机等。


2、请简述Unix、Linux、GNU三者的关系。(5分)

(1)UNIX

UNIX操作系统(尤尼斯),是一个强大的多用户、多任务操作系统,支持多种处理器架构,按照操作系统的分类,属于分时操作系统,最早由KenThompson、Dennis Ritchie和Douglas McIlroy于1969年在AT&T的贝尔实验室开发。目前它的商标权由国际开放标准组织所拥有,只有符合单一UNIX规范的UNIX系统才能使用UNIX这个名称,否则只能称为类UNIX(UNIX-like)。
举例:AIX(Advanced Interactive eXecutive)是IBM开发的一套UNIX操作系统。

(2)Linux

Linux是一套免费使用和*传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。
通常说以Linux作为系统内容的操作系统为Linux操作系统,使用Linux内核和GNU开源软件的操作系统为GNU/Linux

(3)GNU

GNU计划,又称革奴计划,是由Richard Stallman在1983年9月27日公开发起的。它的目标是创建一套完全*的操作系统。Richard Stallman最早是在net.unix-wizards新闻组上公布该消息,并附带《GNU宣言》等解释为何发起该计划的文章,其中一个理由就是要"重现当年软件界合作互助的团结精神"。为保证GNU软件可以*地"使用、复制、修改和发布",所有GNU软件都有一份在禁止其他人添加任何限制的情况下授权所有权利给任何人的协议条款,GNU通用公共许可证(GNU General Public License,GPL)。即"反版权"(或称Copyleft)概念。


3、Linux的哲学思想都有哪些?(5分)

  • 一切皆文件(包括硬件设备)
  • Linux主要由短小,且目的单一的程序组成(所以一个命令一般只干一件事)
  • 将多个短小的程序串联起来可以完成复杂的任务
  • 尽量避免捕获用户接口(尽量避免跟用户进行接触,从发起->回车,全自动,不需要用户再操作)
  • 通过文件保存软件的配置信息(只需要一个简单的文本编辑器就可以操作整个系统)

4、说出5个你了解的 GNU/Linux 系统发行版(5分)

  • RedHat --> CentOS --> Fedora
  • Slackware --> SUSE
  • Debian --> Ubuntu

第二题(20分)

1、CentOS7中root默认的Shell是什么?还有其他你知道的shell吗?(5分)

[root@localhost ~]# echo $SHELL
/bin/bash

bash 是一个为GNU计划编写的Unix shell。它的名字是一系列缩写:Bourne-Again SHell - 这是关于Bourne shell(sh)的一个双关语(Bourne again / born again)。Bourne shell是一个早期的重要shell,由史蒂夫·伯恩在1978年前后编写,并同Version 7 Unix一起发布。bash则在1987年由布莱恩·福克斯创造。在1990年,Chet Ramey成为了主要的维护者。
其他shell:tcsh、csh、ash、bsh、ksh


2、如何执行history中上一条的命令?

  • 使用键盘上方向键一次,并回车执行
  • 输入!!并回车执行
  • 输入!-1并回车执行
  • Ctrl+p并回车执行

3、Linux系统下文件类型有几种?分别是什么?

  • -:普通文件
  • d:目录文件
  • b:块设备 /dev/sda
  • c:字符设备 /dev/tty
  • l:符号链接文件 /etc/redhat-release
  • p:管道文件pipe 测试:mkfifo pfile
  • s:套接字文件socket /dev/log

4、使用ls命令显示/bin下所有文件,并按mtime排序。(5分)

ls -tl /bin/

第三题(30分)

1、求1000以内所有偶数的和(15分)

(1)方法一:使用步进生成1~100,然后bc计算

echo {2..1000..2} | tr " " + | bc

(2)方法二:使用seq生成1~100,然后bc计算

seq -s "+" 2 2 1000 | bc

(3)方法三:使用循环遍历1~100并逐个累加

sum=0
for i in $(seq 0 2 1000);do 
# echo $i
       sum=$(( $sum + $i ))
done
echo $sum

2、编写shell脚本,可以接收一个用户名作为参数,执行结果为输出用户信息,格式如下:用户名-密码-家目录路径-默认shell(15分)

#!/bin/bash
username=$1
password=`grep $username /etc/shadow | cut -d: -f2`
homedir=`grep $username /etc/passwd | cut -d: -f6`
usershell=`grep $username /etc/passwd | cut -d: -f7`
echo $username-$password-$homedir-$usershell

第四题(30分)

1、编写shell脚本,将/etc目录中不包含sysconfig文件夹下的内容,打包压缩成压缩包,名称格式为myetc-年月日-时:分:秒-tar.gz, 并保存至/data/myetc文件夹下。

(1)方法一:将目录列表写入文本文件,然后用tar排除文件中的目录列表

#!/bin/bash
mkdir -pv /data/myetc
touch /root/a.txt
touch /root/b.txt
echo "/etc" > /root/a.txt
echo "/etc/sysconfig" > /root/b.txt
tar zcvfp /data/myetc/myetc-`date +%Y%m%d-%H:%M:%S`.tar.gz -T a.txt -X b.txt

(2)方法二:直接使用tar的exclude选项排除指定目录

tar zcvf /data/myetc/myetc`date '+%Y%m%d-%H:%M:%S'`.tar.gz /etc --exclude /etc/sysconfig

2、编写一个shell脚本, 检查上题中的/data/myetc 目录下是否有名称为去年的压缩包,若有,将其删除。

#!/bin/bash
cd /data/myetc
lastyear=`date +%Y -d "-1 year"`
find /data/myetc -regex ".*-$lastyear.*.gz" -delete