老男孩教育-第2周课前测试考试题

第2章 第2周课前测试考试题

2.1 过滤一级目录

第1题如何过滤出已知当前目录下oldboy中的所有一级目录

(提示:不包含oldboy目录下面目录的子目录及隐藏目录,即只能是一级目录)?

[[email protected] ~]# mkdir /oldboy/{a..b}/{c..g}/{e..f} -p

方法一

[[email protected] ~]# tree -L 1 -dfi /oldboy/
/oldboy
/oldboy/a
/oldboy/b
2 directories

tree命令参数

-d     List directories only
-f     Prints the full path prefix for each file
-i     Makes tree not print the indentation lines
-L     Max display depth of the directory tree

方法二

[[email protected] ~]# find /oldboy/ -maxdepth 1 -type d
/oldboy/
/oldboy/b
/oldboy/a

方法三

[[email protected] ~]# ls -l /oldboy/|grep ^d|awk ‘{print $9}‘
[[email protected] ~]# ls -l /oldboy/|sed -n ‘/^d/p‘|awk ‘{print $9}‘
[[email protected] ~]# ls -l /oldboy/|awk ‘/^d/‘|awk ‘{print $9}‘
a
b

方法四

[[email protected] ~]# ls -F /oldboy/|grep /
[[email protected] ~]# ls -p /oldboy/|grep /
a/
b/

ls的参数

-F, --classify  append indicator (one of */=>@|) to entries
-p, --indicator-style=slash  append / indicator to directories

2.2 切换到上一次目录

第2题/oldboy 和 /tmp目录这间来回切换

[[email protected] oldboy]# pwd# 当前路径
/oldboy
[[email protected] oldboy]# cd /tmp/# 切换到/tmp
[[email protected] tmp]# cd -# 切换回上一次的目录
/oldboy
[[email protected] oldboy]# pwd# 检查
/oldboy
[[email protected] oldboy]# echo $OLDPWD# 能够来回切换,是由这个变量控制的
/tmp

2.3 查看最近的文件

第3题一个目录中有很多文件(ls -l 查看时好多屏),想用一条命令最快速度查看到最近更新的文件。如何看?

[[email protected] oldboy]# ls -lrt
总用量 20
-rw-r--r-- 1 root root   16 8月  25 22:24 c.sh
-rw-r--r-- 1 root root   16 8月  25 22:24 b.sh
-rw-r--r-- 1 root root   16 8月  25 22:24 a.sh
drwxr-xr-x 7 root root 4096 8月  26 09:12 a
drwxr-xr-x 7 root root 4096 8月  26 09:12 b
-rw-r--r-- 1 root root    0 8月  26 09:35 chen.txt
-rw-r--r-- 1 root root    0 8月  26 09:36 oldboy.txt

总结:

当ls -l列出目录条目时,默认是按文件名来排序的,如果想看到最新更新的文件,则应该加-t参数,它代表按修改时间排序,但是如果只加-t参数,列表的排序默认是最近更新的条目在最上方,但题目中很文件特别多,放在屏幕最上方就需要再滑滚轮来看了,所以应该再加-r参数,代表逆序排序,就是跟默认的排序相反。

2.4 软链接

第4题/application/apache2.2.17 -> /application/apache

在配置apache时 执行了./configure --prefix=/application/apache2.2.17 来编译apche,在make install 完成后,希望用户访问 apache 路径更简单,需要给/application/apache2.2.17 目录做一个软链接/application/apache,使得内部开发或管理人员通过/application/apache 就可以访问到 apache 的安装目录/application/apache2.2.17 下的内容,请你给出实现的命令。(提示:apache 为一个 web 服务)

[[email protected] ~]# mkdir -p /application/apache2.2.17     
[[email protected] ~]# ln -s /application/apache2.2.17/ /application/apache
[[email protected] ~]# ls -lid /application/apache2.2.17/ /application/apache
142163 lrwxrwxrwx 1 root root   26 8月  26 09:43 /application/apache -> /application/apache2.2.17/
142162 drwxr-xr-x 2 root root 4096 8月  26 09:41 /application/apache2.2.17/

总结:

1.目录只能做软链接,不能做硬链接

2.符号连接目录的inode不同,而硬连接文件原文件或目录的inode是相同的

3.软链接相当于文件或目录的快捷方式

4.删除符号连接,对原文件或目录无影响

5.删除原文件或目录,会导致符号连接失效

2.5 删7天前的文件

第5题考查find命令

已知 apache 服务的访问日志按天记录在服务器本地目录/app/logs 下,由于磁盘空间紧张,现在要求只能保留最近 7 天的访问日志!请问如何解决? 请给出解决办法或配置或处理命令。(提示:可以从 apache 服务配置上着手,也可以从生成出来的日志上着手。)

解答:

查找出7天以前的日志文件,将它们给删了,可以把这条命令放到定时任务的配置文件里,这样就可以实现自动删除了。

准备素材

mkdir /app/logs -p
cd /app/logs/
touch {1..10}.log

把系统时间往后调,这样现在创建的文件可以是7天前的

[[email protected] logs]# date
2016年 09月 09日 星期五 00:00:01 CST

方法一

[[email protected] logs]# find ./ -type f -name "*.log" -mtime +7|xargs rm
# 找文件类型,名字是以.log结尾的,而且是7天以前就创建了的,找到后就删掉。把找到的结果塞进管道,接着用xargs命令处理成一行内容,再全部给rm命令处理掉。

方法二

[[email protected] logs]# rm -f `find ./ -type f -name "*.log" -mtime +7` # 注意尖角号

方法三

[[email protected] logs]# find ./ -type f -name "*.log" -mtime +7 -exec rm {} \;

2.6 实时查看文件的动态改变

第6题调试系统服务时,希望能实时查看/var/log/messages 系统日志的更新,如何做?

解答:

[[email protected] ~]# tail -f /var/log/messages# 实时查看这个文件尾部的变化
[[email protected] ~]# tailf /var/log/messages# 独立存在的命令,生产环境不建议使用

验证:

可以克隆一个会话,输入命令/etc/init.d/network restart,可以观察到文件/var/log/messages是有变化的

总结:

-f  参数的意思是当文件增长时,会实时输出被增加的数据
-F  参数和-f不一样的是,它会不断的重次

2.7 显示行号

第7题打印轻量级 web 服务的配置文件 nginx.conf 内容的行号及内容,该如何做?

1、cat -n 显示行号

[[email protected] ~]# cat -n nginx.conf 
     1  chen001
     2  chen002
     3  chen003
     4  chen004
     5  chen005

2、nl  专业显示行号的命令

[[email protected] ~]# nl nginx.conf 
     1  chen001
     2  chen002
     3  chen003
     4  chen004
     5  chen005

3、grep  点代表所有的内容,先把所有的内容过滤出来,接着在前面分别加上行号

[[email protected] ~]# grep -n . nginx.conf 
1:chen001
2:chen002
3:chen003
4:chen004
5:chen005

4、awk  NR代表行号,逗号代表默认的分隔符是空格,$0代表所有域,即整行内容

[[email protected] ~]# awk ‘{print NR,$0}‘ nginx.conf 
1 chen001
2 chen002
3 chen003
4 chen004
5 chen005

5、vim显示行号

[[email protected] ~]# vim nginx.conf  # 显示行号 :set nu   去掉行号  :set nonu
  1 chen001
  2 chen002
  3 chen003
  4 chen004
  5 chen005

总结:

专业显示行号的命令是nl,正则表达示中的特殊符号,点代表任意字符,^代表以…开头,$符号代表以…结尾,\代表转义字符,awk的打印功能不要忘记加单引号括起来。

2.8 开机自启动服务

第8题装完 Centos 系统后,希望网络文件共享服务 NFS,仅在 3 级别上开机自启动,该如何做?

[[email protected] ~]# chkconfig --level 3 nfs on
[[email protected] ~]# chkconfig --list nfs
nfs             0:关闭  1:关闭  2:关闭  3:启用  4:关闭  5:关闭  6:关闭

2.9 系统运行级别

第9题linux 系统运行级别一般为 0-6,请分别写出每个级别的含义。

Linux系统运行级别的配置文件是:/etc/inittab

0 - halt (Do NOT set initdefault to this)# 关机,别设置默认级别为0
1 - Single user mode # 单用户模式
2 - Multiuser, without NFS (The same as 3, if you do not have networking)
# 没有网络文件系统的多用户模式,其它和3都一样
3 - Full multiuser mode# 完整的多用户模式
4 - unused# 未使用
5 - X11# 桌面
6 - reboot (Do NOT set initdefault to this)# 重启,如果设置为默认,则开机后就重启,不断循环
id:3:initdefault: # 默认的级别是3级别,修改默认级别,就在这个地方改

2.10 中文乱码

第10题linux 系统中查看中文乱码,请问如何解决乱码问题?

方法一:当前生效

[[email protected] ~]# echo $LANG# 先看当前的环境变量LANG
en_US.UTF-8
[[email protected] ~]# export LANG=‘zh_CN.UTF-8‘# 修改字符集的环境变量为中国中文
[[email protected] ~]# echo $LANG               
zh_CN.UTF-8

方法二:永久生效,写到配置文件里

[[email protected] ~]# cat /etc/sysconfig/i18n # 先看字符集配置文件
LANG="en_US.UTF-8"
SYSFONT="latarcyrheb-sun16"
[[email protected] ~]# echo ‘LANG="zh_CN.UTF-8"‘ >/etc/sysconfig/i18n
# 修改字符集,将美国英语改成中国中文
[[email protected] ~]# source /etc/sysconfig/i18n # 使字符集配置文件生效

方法三:永久生效,放到系统全局环境变量配置文件里

[[email protected] ~]# echo "export LANG=‘zh_CN.UTF-8‘" >>/etc/profile
[[email protected] ~# . /etc/profile # 使配置文件立马生效

验证:

[[email protected] ~]# echo $LANG# 把变量LANG打印出来

zh_CN.UTF-8

总结:

中文乱码是因为字符集不一致而导致的,所以需要把默认的字符集变量改为中文的UTF-8类型就可以了,还要记得source这个文件下,将配置文件生效。

2.11 优化系统

第11题如何优化 linux 系统(可以不说太具体)?

1.关防火墙

2.关selinux

3.设置开机默认的运行级别为3

4.精简开机自启动服务,只保留5个:network、network、crond、rsyslog、sysstat

5.做定时任务,同步时间

6.中文字符集

7.增大文件描述符

8.注释多余的系统虚拟帐号

9.隐藏linux版本信息的显示

10.bash安全,例如,空闲超时时间,命令历史记录的数量

11.定时清理邮件服务临时目录垃圾文件

12.优化内核参数

13.锁定关键系统文件,防止提权篡改

14.优化sshd服务,例如:不允许空密码、不允许root用户远程连接,修改远程连接的端口等

15.sudo授权普通用户能远程管理服务器

16.给grub菜单加密码,防止进入单用户模式,破解root密码

17.禁止ping

18.升级不漏洞的软件

2.12 打包和压缩

第12题/etc/目录为 linux 系统的默认的配置文件及服务启动命令的目录

1.请用 tar 打包/etc 整个目录(打包及压缩)

2.请用 tar 打包/etc 整个目录(打包及压缩,但需要排除/etc/services 文件)

3.请把 a 点命令的压缩包,解压到/tmp 指定目录下(最好只用 tar 命令实现)

解答:

第一小题

[[email protected] ~]# cd /# 先切换到上级目录
[[email protected] /]# tar zcvf etc.tar.gz ./etc
# z代表支持gzip解压文件,c代表建立新的压缩档案,v代表显示操作过程,f代表指定压缩文件,切记,f这个参数是最后一个参数,后面只能接档案名。
[[email protected] /]# du -h etc.tar.gz # 可看到单个压缩文件的大小是9.3M
9.3M    etc.tar.gz

第二小题

[[email protected] /]# tar zcf etc.tar.gz ./etc --exclude=./etc/services
[[email protected] /]# tar tf etc.tar.gz |grep /etc/services
# 验证:t代表列出档案的内容,看不到文件

第三小题

[[email protected] /]# mkdir /tmp/etcbak# 准备好解压的目录
[[email protected] /]# tar -zxf etc.tar.gz -C /tmp/etcbak/
# x代表解压,C代表指定解压后的目录
[[email protected] /]# ll /tmp/etcbak/etc/#验证

总结:

一般用法:打包参数:zcvf解包参数:zxvf

注:tar是打包,不是压缩!

打包和压缩的概念

打包是指将一大堆文件或目录变成一个总的文件

压缩则是将一个大的文件通过一些压缩算法变成一个小文件

为什么要区分这两个概念呢?这源于Linux中很多压缩程序只能针对一个文件进行压缩,这样当你想要压缩一大堆文件时,你得先将这一大堆文件先打成一个包(tar命令),然后再用压缩程序进行压缩(gzip bzip2命令)。

linux下最常用的打包程序就是tar了,使用tar程序打出来的包我们常称为tar包,tar包文件的命令通常都是以.tar结尾的。生成tar包后,就可以用其它的程序来进行压缩。

tar命令常用参数

-z, --gzip# 压缩为gzip包
    filter the archive through gzip
-c, --create# 创建一个档案
    create a new archive
-v, --verbose# 显示详细信息,可省略……
    verbosely list files processed
-f, --file=ARCHIVE# 指定档案的名称
    use archive file or device ARCHIVE
-t, --list  # 列出档案内的内容
    list the contents of an archive
-x, --extract, --get# 解包
    extract files from an archive
-C, --directory=DIR # 指定解包的目录
    change to directory DIR
--exclude=PATTERN# 排除
    exclude files, given as a PATTERN

2.13 过滤指定字符串

第13题考查grep命令

已知如下命令及结果:

[[email protected] ~]$ echo "I am oldboy,myqq is 31333741">>oldboy.txt 
[[email protected] ~]$ cat oldboy.txt  
I am oldboy,myqq is 31333741

现在需要从文件中过滤出“oldboy”和“31333741”字符串,请给出命令。

解答:

[[email protected] ~]# awk -F ‘[ ,]+‘ ‘{print $3,$6}‘ oldboy.txt  
oldboy 31333741

总结:

-F指定分隔符,这个文件的内容只有一行,但分隔符有空格和逗号,所以再用[ ]把多个分隔符括起来,后面的+号代表把这多个分隔符看成是一个分隔符。

2.14 统计行号

第14题如何查看/etc/services 文件内容有多少行?

方法一:先用wc输出总数,再过滤

[[email protected] ~]# wc /etc/services 
 10774   58104   641020 /etc/services
 总行数  单词数  字节数
[[email protected] ~]# wc /etc/services |awk ‘{print $1}‘
10774

方法二:直接用wc的-l参数来统计共多少行

[[email protected] ~]# wc -l /etc/services 
10774 /etc/services

总结:

wc命令可以给每个文件打印字节数,字符数,总行数,单词总数,最长行的长度

wc命令的参数

-c, --bytes  print the byte counts
-m, --chars  print the character counts
-l, --lines  print the newline counts
-w, --words  print the word counts
-L, --max-line-length  print the length of the longest line
# 最长行的长度:字符数,计空格

2.15 过滤指定字符串所在的行

第15题过滤出/etc/services 文件包含 3306 或 1521 两数据库端口的行的内容。

方法一

[[email protected] ~]# grep -E "3306|1521" /etc/services 
mysql           3306/tcp                        # MySQL
mysql           3306/udp                        # MySQL
ncube-lm        1521/tcp                # nCube License Manager
ncube-lm        1521/udp                # nCube License Manager

方法二

[[email protected] ~]# egrep --color=auto "3306|1521" /etc/services
mysql           3306/tcp                        # MySQL
mysql           3306/udp                        # MySQL
ncube-lm        1521/tcp                # nCube License Manager
ncube-lm        1521/udp                # nCube License Manager
时间: 2024-08-24 05:30:27

老男孩教育-第2周课前测试考试题的相关文章

老男孩教育-第4周课前测试考试题

第4章 第4周课前测试考试题 4.1 定时任务规则的含义01 第1题 如果在某用户的crontab文件中有以下记录,该行中的命令多久执行一次(RHCE考试题)?(  ) 30 4 * * 3 mycmd A. 每小时. B. 每周. C. 每年三月中每小时一次. 解答:每周三的4点30分,执行mycmd. 4.2 定时任务规则的含义02 第2题 如果在某用户的crontab文件中有以下记录,该行中的命令多久执行一次(RHCE考试题)?( )*/5 * * * * mycmd A. 每5分钟一次.

老男孩教育-第3周课前测试考试题

第3章 第3周课前测试考试题 3.1 取出文件的访问权限掩码 第1题 如何取得/etiantian 文件的权限对应的数字内容,如-rw-r--r-- 为 644,要求使用命令取得644 这样的数字. 思路: 1.利用cut命令切割不同的字段出来,再利用tr命令将字母逐个转化为数字,再利用awk将不同的域相加后,再输出结果 2.stat命令可以查看到文件的详细信息,再从内容里面过滤出访问权限掩码 解答: 准备练习素材: [[email protected] ~]# touch /etiantian

老男孩教育-第1周课前测试考试题

课前考试题汇总 如何成为高手? 针对性刻意练习 学习的过程注定是辛苦的,分享可以得到即时反馈,这是良性循环的开始 学习过程必须养成做笔记的习惯,重复的力量是无穷怕,好的习惯只需要21天即可培养出来 技术的提升只是量的增长,思想的提升才是质的飞跃  --by 老男孩 第1章 第1周课前测试考试题 1.1 创建目录 第1题创建一个目录/data. [[email protected] ~]# mkdir /data 验证 [[email protected] ~]# ls -ld /data drw

老男孩教育-Linux运维就业班入学第一关课前测试考试题及解答

第一题 创建一个目录 /data [[email protected] ~]# mkdir /data 1.1 扩展知识1: 创建目录 ===== make directory  mkdir 1.2 扩展知识2:如果有一个相同的目录已存在了,会报以下错误提示 [[email protected] ~]# mkdir /data mkdir: cannot create directory `/data': File exists 1.3 扩展知识3:查看 显示目录下面的内容 [[email pr

linux第三关课前测试考试题

 1.如何取得/etiantian文件的权限对应的数字内容,如-rw-r--r--为644,要求使用命令取得644这样的数字. 解答: stat /etiantian |awk -F"[0/]" 'NR==4{print $2}' stat /etiantian |sed -nr '4s#^.*\(0|/.*$##gp' stat -c %a /etiantian 2.linux下通过mkdir命令创建一个新目录/oldboy/ett,它的硬链接数是多少,为什么? 如果在/oldboy

LInux运维入学课前测试考试题

1.创建一个目录/data. 解答: mkdir /data 2.在/data 下面建立一个文件 oldboy.txt. 解答: touch /data/oldboy.txt 3.为 oldboy.txt 增加内容为" I am studying linux.". 解答: echo 'I am studying linux.'>> /data/oldboy.txt 4.把 oldboy.txt 文件拷贝到/tmp 下. 解答: cp /data/oldboy.txt 5.把

2017-2018-1 20155318 《信息安全系统设计基础》第十周课上测试及课下作业

2017-2018-1 20155318 <信息安全系统设计基础>第十周课上测试及课下作业 课上测试 解析:填充消除了冲突不命中,对于x和y数组,只有在引用第0个和第4个元素的时候发生不命中.因而命中率为75%. 解析:高速缓存容量为2048,高速缓存结构为(( 32 ),8,8,32) 解析:不同层之间是以块为大小传输单元在层与层之间复制,空缓存的不命中叫强制性不命中或冷不命中 解析:存储器层次结构的每一层都缓存来自较低一层的数据.缓存存储器是分块的,数据总是以块为基本单位在每一层之间传递,

20155204 信息安全系统设计 第十周 课上测试补交

20155204 信息安全系统设计 第十周 课上测试补交 我的答案:D 我的答案:ACD 我的答案:ACD 我的答案:ABC 我的答案:ABCD 我的答案:A 我的答案:C 我的答案:C 我的答案:C 我的答案:ABD 我的答案:ABCD 我的答案:B 我的答案:A 我的答案:ABC 我的答案:C 我的答案:ACD 我的答案:BDE 我的答案:CE 我的答案:C 我的答案:ADEG 我的答案:BCD 总分:16

2017-2018-1 20155214 《信息安全系统设计基础》 第9周课下测试-mypwd

2017-2018-1 20155214 <信息安全系统设计基础> 第9周课下测试-mypwd(深入版) 题目要求: 1 学习pwd命令 2 研究pwd实现需要的系统调用(man -k; grep),写出伪代码 3 实现mypwd 4 测试mypwd 在第9周学习总结中,我直接调用了系统调用getcwd()输出当前绝对路径.这次我尝试用c语言实现它的功能. 函数原型 #include <unistd.h> char *getcwd(char *buf, size_t size);