2021年04月12日Linux专项练习2

考点1:vi 末行模式相关命令

你使用命令”vi/etc/inittab”查看该文件的内容,你不小心改动了一些内容,为了防止系统出为,你不想保存所修改的内容,你应该如何操作:

  • A 在末行模式下,键入:wq
  • B 在末行模式下,键入:q!
  • C 在末行模式下,键入:x!
  • D 在编辑模式下,键入”ESC”键直接退出vi

解析

显示答案/隐藏答案正确答案: B
vi末行模式命令 描述
:wq 强制性写入文件并退出。即使文件没有被修改也强制写入,并更新文件的修改时间。
:q! 直接强制退出
:x! 写入文件并退出。仅当文件被修改时才写入,并更新文件修改时间,否则不会更新文件修改时间。

在编辑模式下,键入”ESC”键不退出vi 直接进入命令模式

考点2:Linux默认的Shell

shell不仅仅是用户命令解释器,同时一种强大的编程语言,linux缺省的shell是什么

  • A bash
  • B ruby
  • C PHP
  • D perl

解析

显示答案/隐藏答案正确答案: A

考点3:如何退出交互式Shell

退出交互式的shell,应键入( )

  • A Esc
  • B q
  • C exit
  • D quit

解析

显示答案/隐藏答案正确答案: C
  • esc,在vi的插入模式或者底行命令模式下进入命令模式
  • q,用来退出 man 手册查看命令或者配置文件的状态,或者more、less等命令查看文件的状态
  • exit,一般用于退出会话式程序或者交互式命令行,如ssh远程连接,切换 shell(Linux中)
  • quit,一般用于图形界面的退出

以上的exit和quit仅是个人总结,非权威,python中的exit()和quit()都可以用来退出python的交互式shell

考点4:Linux查找字符串grep

Linux系统中在给定文件中查找与设定条件相符字符串的命令为?

  • A grep
  • B gzip
  • C find
  • D sort

解析

显示答案/隐藏答案正确答案: A

grep:查找文件内的内容
gzip:压缩文件,文件经压缩后会增加.gz扩展名
find:在指定目录下查找文件
sort:排序

考点5:Linux任务计划

假如你想计划让系统自动在每个月的第一天早上4点钟执行一个维护工作,以下哪个cron是正确的?

  • A 00 4 1 1-12 * /maintenance.pl
  • B 4 1 * * ~/maintenance.pl
  • C 0 4 31 /1 * * ~/maintenance.pl
  • D 1 4 00 ~/maintenance.pl

解析

显示答案/隐藏答案正确答案: A

Linux计划任务格式

1
分 时 日 月 周  命令/脚本 

上面的周,1表示星期天,…6表示星期六,0,表示星期天

如何查看任务计划表

你们可以打开 /etc/crontab 里面就是任务计划表

1
cat /etc/crontab

运行结果:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[root@localhost ~]# cat /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root

# For details see man 4 crontabs

# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed

[root@localhost ~]#

实例

每天04:00

1
0 4 * * * 要执行的命令 

周二和周五18:00

1
0 18 * * 2,5 要执行的命令 

1月到3月份, 周二和周五18:00

1
0 18 * 1-3 2,5 要执行的命令 

周一到周五17:30发广播,然后17:45分关机
写两条计划任务,不是只能写一条

1
2
30 17 * * 1-5 /usr/bin/wall < /root/msg 
45 17 * * 1-5 /sbin/shutdown -h now

中午12点到14点,每两分钟(偶数)

1
*/2 12-14 * * * 命令 

考点6:导致进程从用户态切换到内核态的情况

下列选项中,会导致用户进程从用户态切换到内核的操作是?
I. 整数除以零
II. sin( )函数调用
III. read系统调用

  • A 仅 I、II
  • B 仅 I、III
  • C 仅 II 、III
  • D I、II和III

解析

显示答案/隐藏答案正确答案: B

用户态切换到内核态的3种方式

a. 系统调用
b. 异常
c. 外围设备的中断

考点7:Linux统计重复行uniq 按行排序sort 查看文件头head

有一个文件ip.txt,每行一条ip记录,共若干行,已排好序,下面哪个命令可以实现”统计出现次数最多的前3个ip及其次数”?( )

  • A uniq -c ip.txt
  • B uniq -c ip.txt | sort -nr | head -n 3
  • C cat ip.txt | count -n | sort -rn | head -n 3
  • D cat ip.txt | count -n

解析

显示答案/隐藏答案正确答案: B

uniq命令:报告或删去重复行,加上-n参数可以统计重复行出现的次数(放在每行开头)。
sort命令:对文本按行进行排序,-n参数表示根据数字大小排序;-r,对应英文单词是reverse,意思是反转排序结果,sort默认是从小到大排序,加上这个参数可以实现从大到小排序。
head命令:取文件的前一部分(默认输出前10行)。加-n [数字]可以指定到底是前几行。
把这三个命令的作用都搞懂,再加上一点 Linux管道符 的知识,这道题目也就很容易解决了。最好是自己动手在命令行下实践几次,加深印象,容易记牢。

考点8:授权 修改属主 修改属组

软件项目存储于/ftproot,允许apache用户修改所有程序,设置访问权限的指令?

  • A chmod 777 /ftproot
  • B chgrp apache /frproot
  • C chown apache /ftproot
  • D chmod apache /ftproot

解析

显示答案/隐藏答案正确答案: A

chmod +权限 +文件或目录
chown +属主.属组+文件或目录
chgrp +属组 +目录
就本题目而言,设置目录的权限可以这样:

1
chmod 777 /ftproot

但是这样做的话所有的用户都可以操作该目录,不是个很好的解决方案。

也可以直接设置目录的属主为apache:

1
chown apache /ftproot

然后再加上权限

1
chmod 7xx /ftproot

把文件夹的属主改成了apache也不代表apache用户能修改所有程序,因为文件所有者权限有可能不可写。

这个题目有问题,如果/ftproot是个目录,这样的话,chmod 777 -r /ftproot才能修改该目录下的所有程序。

考点9:makefile

下列关于makefile描述正确的有?

  • A makefile文件保存了编译器和连接器的参数选项
  • B 主要包含了五个东西:显式规则、隐晦规则、变量定义、文件指示和注释
  • C 默认的情况下,make命令会在当前目录下按顺序找寻文件名为”GNUmakefile“、”makefile“、”Makefile“的文件, 找到了解释这个文件
  • D 在Makefile不可以使用include关键字把别的Makefile包含进来

解析

显示答案/隐藏答案正确答案: ABC

makefile文件保存了编译器和连接器的参数选项,还表述了所有源文件之间的关系(源代码文件需要的特定的包含文件,可执行文件要求包含的目标文件模块及库等).创建程序(make程序)首先读取makefile文件,然后再激活编译器,汇编器,资源编译器和连接器以便产生最后的输出,最后输出并生成的通常是可执行文件.创建程序利用内置的推理规则来激活编译器,以便通过对特定CPP文件的编译来产生特定的OBJ文件.
Makefile里主要包含了五个东西:显式规则、隐晦规则、变量定义、文件指示和注释。
1、显式规则。显式规则说明了,如何生成一个或多的的目标文件。这是由Makefile的书写者明显指出,要生成的文件,文件的依赖文件,生成的命令。
2、隐晦规则。由于我们的make有自动推导的功能,所以隐晦的规则可以让我们比较粗糙地简略地书写Makefile,这是由make所支持的。
3、变量的定义。在Makefile中我们要定义一系列的变量,变量一般都是字符串,这个有点你C语言中的宏,当Makefile被执行时,其中的变量都会被扩展到相应的引用位置上。
4、文件指示。其包括了三个部分,一个是在一个Makefile中引用另一个Makefile,就像C语言中的include一样;另一个是指根据某些情况指定Makefile中的有效部分,就像C语言中的预编译#if一样;还有就是定义一个多行的命令。有关这一部分的内容,我会在后续的部分中讲述。
5、注释。Makefile中只有行注释,和UNIX的Shell脚本一样,其注释是用“#”字符,这个就像C/C++中的“//”一样。如果你要在你的Makefile中使用“#”字符,可以用反斜框进行转义,如:“#”。
默认的情况下,make命令会在当前目录下按顺序找寻文件名为“GNUmakefile”、“makefile”、“Makefile”的文件,找到了解释这个文件。在这三个文件名中,最好使用“Makefile”这个文件名,因为,这个文件名第一个字符为大写,这样有一种显目的感觉。最好不要用 “GNUmakefile”,这个文件是GNU的make识别的。有另外一些make只对全小写的“makefile”文件名敏感,但是基本上来说,大多数的make都支持“makefile”和“Makefile”这两种默认文件名。
在Makefile使用include关键字可以把别的Makefile包含进来,这很像C语言的#include,被包含的文件会原模原样的放在当前文件的包含位置。include的语法是:

1
include &lt;filename&gt;; 

filename可以是当前操作系统Shell的文件模式(可以保含路径和通配符)

考点10:硬链接

在Linux系统,关于硬链接的描述正确的是()

  • A 跨文件系统
  • B 不可以跨文件系统
  • C 为链接文件创建新的i节点
  • D 链接文件的i节点与被链接文件的i节点相同

解析

显示答案/隐藏答案正确答案: BD

链接分硬链接和符号链接

  • 符号链接可以建立对于文件和目录的链接。

  • 符号链接可以跨文件系统,即可以跨磁盘分区。

  • 符号链接的文件类型位是l,链接文件具有新的i节点。

  • 硬链接不可以跨文件系统。它只能建立对文件的链接,

  • 硬链接的文件类型位是-,且硬链接文件的i节点同被链接文件的i节点相同。