2021年04月12日Linux专项练习2
考点1:vi 末行模式相关命令
你使用命令”vi/etc/inittab”查看该文件的内容,你不小心改动了一些内容,为了防止系统出为,你不想保存所修改的内容,你应该如何操作:
- A 在末行模式下,键入
:wq
- B 在末行模式下,键入
:q!
- C 在末行模式下,键入
:x!
- D 在编辑模式下,键入”ESC”键直接退出vi
解析
显示答案/隐藏答案
正确答案: Bvi末行模式命令 | 描述 |
---|---|
: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
解析
显示答案/隐藏答案
正确答案: Agrep:查找文件内的内容
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
解析
显示答案/隐藏答案
正确答案: ALinux计划任务格式
1 | 分 时 日 月 周 命令/脚本 |
上面的周,1表示星期天,…6表示星期六,0,表示星期天
如何查看任务计划表
你们可以打开 /etc/crontab 里面就是任务计划表
1 | cat /etc/crontab |
运行结果:
1 | [root@localhost ~]# cat /etc/crontab |
实例
每天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 | 30 17 * * 1-5 /usr/bin/wall < /root/msg |
中午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
解析
显示答案/隐藏答案
正确答案: Buniq
命令:报告或删去重复行,加上-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
解析
显示答案/隐藏答案
正确答案: Achmod +权限 +文件或目录
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
包含进来
解析
显示答案/隐藏答案
正确答案: ABCmakefile文件保存了编译器和连接器的参数选项,还表述了所有源文件之间的关系(源代码文件需要的特定的包含文件,可执行文件要求包含的目标文件模块及库等).创建程序(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 <filename>; |
filename可以是当前操作系统Shell的文件模式(可以保含路径和通配符)
考点10:硬链接
在Linux系统,关于硬链接的描述正确的是()
- A 跨文件系统
- B 不可以跨文件系统
- C 为链接文件创建新的i节点
- D 链接文件的i节点与被链接文件的i节点相同
解析
显示答案/隐藏答案
正确答案: BD链接分硬链接和符号链接
符号链接可以建立对于文件和目录的链接。
符号链接可以跨文件系统,即可以跨磁盘分区。
符号链接的文件类型位是l,链接文件具有新的i节点。
硬链接不可以跨文件系统。它只能建立对文件的链接,
硬链接的文件类型位是-,且硬链接文件的i节点同被链接文件的i节点相同。