首页 > 代码库 > Linux运维班第一关课后学习效果能力上机大考察

Linux运维班第一关课后学习效果能力上机大考察

kan
1、创建目录/data/oldboy,并且在该目录下创建文件oldboy.txt。然后在文件oldboy.txt里写入内容"net addr:192.168.181.134  Bcast:192.168.181.255  Mask:255.255.255.0" (不包含引号)。
解答:
分析过程:要完成此题,我们首先要想如何递归创建目录。
法1:
[root@oldboy oldboy]# mkdir /data/oldboy -p
[root@oldboy oldboy]# echo net addr:192.168.181.134 Bcast:192.168.181.255 Mask:255.255.255.0 >oldboy.txt
总结:
1)mkdir -p 是用来递归创建目录的。
2)echo 可以用来讲内容直接写入文件,如果文件不存在,会自动再 创建文件,

 
2、将题1中的oldboy.txt文件内容通过命令过滤只输出如下内容:*****
10.0.0.8 10.0.0.255 255.255.255.0
net addr:192.168.181.134  Bcast:192.168.181.255  Mask:255.255.255.0
解答:
[root@oldboy oldboy]# awk -F "[ :]+" ‘{print $3,$5,$7}‘ oldboy.txt
192.168.181.134 192.168.181.255 255.255.255.0
[root@oldboy oldboy]# awk -F "[ :]+" ‘{print $3" "$5" "$7}‘ oldboy.txt
192.168.181.134 192.168.181.255 255.255.255.0
总结:
1) -F ‘[ :]+‘表示指定分隔符为空格和: ,方括号里有两个分隔符,所以需要加+号 ‘{print $3" "$5" "$7}‘ 表示打印输出 第三个占位符的字符串,第五个占位符???第七。"空格"是根据题目要求打印空格加以区分
 

 
3、将题1中的oldboy目录移动到/tmp下,并将/etc/passwd文件复制到/tmp/oldboy下。
 
[root@oldboy ~]# mv /data/oldboy /tmp
[root@oldboy ~]# cp /etc/passwd /tmp/oldboy/
总结:
1)mv是移动目录和文件的命令,少用rm命令,可先mv到/tmp下时间长之后没什么影响再删除,血的教训呀。
2)cp是复制文件

 
4、在题3的基础上使用awk取passwd文件等第10行到20行的第三列重定向到/tmp/oldboy/test.txt文件里   *****
[root@oldboy oldboy]# awk ‘NR>9 && NR<21‘ passwd
[root@oldboy oldboy]# awk -F ‘:‘ ‘NR>9 && NR<21 {print $3}‘ passwd >/tmp/oldboy/test.txt
总结:
1)awk:NR行号,&& 是并且的意思。awk可以用来处理每一行都要处理的文本。
2)使用awk我们要先看分隔符有哪些,看他们的规律。然后再-F ‘:‘ 来定义分隔符,本文的分隔符是:。
3)‘NR>9 && NR<21 {print $3}‘ 表示NR行号大于9并且小于21,{}花括号表示执行前面的结果。也就是打印输出$3 NR10~20的每行第三个占位符的字符串,awk是每行都会执行的。

 
 
5、在题3的基础上要求命令rm删除文件时提示如下禁止使用rm的提示,并使该效果永久生效。rm -f passwd Do
not use rm command*****
 
 
解答:
[root@oldboy oldboy]# echo ‘alias rm="echo not use rm command"‘
alias rm="echo not use rm command"
[root@oldboy oldboy]# echo ‘alias rm="echo not use rm command"‘ >>/etc/profile
[root@oldboy oldboy]# echo ‘alias rm="echo not use rm command"‘
alias rm="echo not use rm command"
[root@oldboy oldboy]# echo ‘alias rm="echo not use rm command"‘ >>/etc/bashrc
[root@oldboy oldboy]# . /etc/profile
alias rm=‘echo not use rm command‘
bash: alias: =echo: not found
bash: alias: not: not found
bash: alias: use: not found
alias rm=‘echo not use rm command‘
bash: alias: command: not found
alias rm=‘echo not use rm command‘
bash: alias: =echo: not found
bash: alias: not: not found
bash: alias: use: not found
alias rm=‘echo not use rm command‘
bash: alias: chenbaojia: not found
[root@oldboy oldboy]# . /etc/bashrc
alias rm=‘echo not use rm command‘
bash: alias: =echo: not found
bash: alias: not: not found
bash: alias: use: not found
alias rm=‘echo not use rm command‘
bash: alias: command: not found
alias rm=‘echo not use rm command‘
bash: alias: =echo: not found
bash: alias: not: not found
bash: alias: use: not found
alias rm=‘echo not use rm command‘
bash: alias: chenbaojia: not found
总结:
1)alias 设置别名
2)etc/profile
这个文件是每个用户登录时都会运行的环境变量设置
.bashfile
是单用户登录时比如root会运行的
3). / etc/profile (. / 点加空格 加文件,表示不用重启既可以重新加载文件并实效。)

 
6、在题3的基础上,删除/tmp/oldboy/下初passwd以外的其他文件。*****
解答:
法一
[root@oldboy oldboy]# find /tmp/oldboy/ -type f ! -name ‘passwd‘ -exec rm -f {} \;
[root@oldboy oldboy]# ls
passwd
[root@oldboy oldboy]# touch oldboy.txt test.txt /tmp/oldboy/
[root@oldboy oldboy]# ls
oldboy.txt passwd test.txt
[root@oldboy oldboy]# find /tmp/oldboy/ -type f ! -name "passwd" |xargs
/tmp/oldboy/oldboy.txt /tmp/oldboy/test.txt
法二
[root@oldboy oldboy]# find /tmp/oldboy/ -type f ! -name "passwd" |xargs rm -f
[root@oldboy oldboy]# ls
passwd
总结:
1)! 是取反的意思, ! -name ‘passwd‘ 是说找除了passwd之外其他文件。 -exec 是find 一个参数,表示把-exec前面的结果交给后面的命令执行, {} \; 这个是在命令之后必须加上的固定格式。
2)|xargs 也是把前面的结果交给后面的命令处理。

7、在题3的基础上,请打印/etc/passwd文件中的第2~5行(不低于三种方法)
解答:
法一
[root@oldboy oldboy]# head -5 passwd |tail -4
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
法二:
[root@oldboy oldboy]# head -5 passwd |tail -4
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
法三:
[root@oldboy oldboy]# sed -n ‘2,5‘p passwd
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
总结:
1)head 命令默认表示输出文本前十,-(数字)表示需要输出的行号
2)tail 命令默认表示输出文本后十,-(数字)表示需要输出为行号
3)sed -n (不加-n 默认全部输出,加上之后根据我们指定结果输出,)p的意思是打印输出。

8、在题3的基础上,使用命令调换passwd文件里的root位置和/bin/bash位置?即将所有的第一列和最后一列位置调换。例子:*****
默认:root:x:0:0:root:/root/:/bin/bash  修改后/bin/bash:x:0:0:root:/root:root
解答:
[root@oldboy oldboy]# awk -F ‘:‘ ‘{print $7,$2,$3,$4,$5,$6,$1}‘ passwd
/bin/bash x 0 0 root /root root
/sbin/nologin x 1 1 bin /bin bin
/sbin/nologin x 2 2 daemon /sbin daemon
/sbin/nologin x 3 4 adm /var/adm adm
/sbin/nologin x 4 7 lp /var/spool/lpd lp
/bin/sync x 5 0 sync /sbin sync
/sbin/shutdown x 6 0 shutdown /sbin shutdown
/sbin/halt x 7 0 halt /sbin halt
/sbin/nologin x 8 12 mail /var/spool/mail mail
/sbin/nologin x 10 14 uucp /var/spool/uucp uucp
/sbin/nologin x 11 0 operator /root operator
/sbin/nologin x 12 100 games /usr/games games
/sbin/nologin x 13 30 gopher /var/gopher gopher
/sbin/nologin x 14 50 FTP User /var/ftp ftp
/sbin/nologin x 99 99 Nobody / nobody
/sbin/nologin x 69 69 virtual console memory owner /dev vcsa
/sbin/nologin x 499 76 Saslauthd user /var/empty/saslauth saslauth
/sbin/nologin x 89 89 /var/spool/postfix postfix
/sbin/nologin x 74 74 Privilege-separated SSH /var/empty/sshd sshd
/bin/bash x 500 500 /home/oldboy oldboy
/sbin/nologin x 38 38 /etc/ntp ntp
总结:
1)awk 可以用来处理每一行都需要处理的文本,因为awk是逐行执行的。利用分隔符,然后再print 打印对应占位符的字符串即可
 

9、把/data目录及其子目录下所有以扩展名.txt结尾的文件中包含oldgirl的字符串全部替换为oldboy。*****
解答:
[root@oldboy data]# find /data/ -type f -name ‘*.txt‘
/data/12.txt
/data/1.txt
/data/oldboy.txt
/data/3307/aa.txt
/data/3307/123.txt
/data/456.txt
/data/a.txt
/data/3306/456.txt
/data/3306/123.txt
/data/123.txt
[root@oldboy data]# find /data/ -type f -name ‘*.txt‘|xargs sed "s#oldgirl#oldboy#g"
oldboy
oldboy
inet addr:192.168.181.134 Bcast:192.168.181.255 Mask:255.255.255.0
oldboy
oldboy
oldboy
oldboy
oldboy
oldboy
oldboy
[root@oldboy data]# find /data/ -type f -name ‘*.txt‘|xargs sed -i "s#oldgirl#oldboy#g"
[root@oldboy data]# find /data/ -type f -name ‘*.txt‘|xargs cat
oldboy
oldboy
inet addr:192.168.181.134 Bcast:192.168.181.255 Mask:255.255.255.0
oldboy
oldboy
oldboy
oldboy
oldboy
oldboy
oldboy
总结:
1)首先find 加上文件路径然后-type f 确定文件类型, -name "*.txt" *表示所有名字为.txt为后缀的文件。显示出来。
2)|xargs 管道的意思把前面的搜索结果交给后面的命令
3)sed ‘s###g‘ 这是标准格式,当然#号键可以是任意相同的字符代替。 sed "s#oldgirl#oldboy#g" 把oldgirl替换成oldboy。然后就能看到结果了。
4)看到结果之后确认无误, find /data/ -type f -name ‘*.txt‘|xargs sed -i "s#oldgirl#oldboy#g" 加上-i 确认修改,然后我们在看下。确认下结果。

 
10、查找/oldboy下所有7天以前以olg结尾的大雨1M的文件移动到/tmp下 *****
解答:
[root@oldboy oldboy]# ls -lh 首先模拟大于1M的文件,查看当前文件最大最接近的。
总用量 624K
-rw-r--r-- 1 root root 596K 11月 23 13:34 456.log 这是最接近的
drwxr-xr-x 3 root root 4.0K 11月 12 06:27 ext
-rw-r--r-- 1 root root 0 11月 12 06:27 jeacen
drwxr-xr-x 2 root root 4.0K 11月 12 07:16 new
-rw-r--r-- 1 root root 24 11月 23 05:57 nginx.conf
-rw-r--r-- 1 root root 0 11月 12 06:27 oldboy
drwxr-xr-x 2 root root 4.0K 11月 12 06:27 test
-rw-r--r-- 1 root root 0 11月 12 06:27 widi.gz
drwxr-xr-x 2 root root 4.0K 11月 12 06:27 xiaodong
drwxr-xr-x 2 root root 4.0K 11月 12 06:27 xiaofan
drwxr-xr-x 2 root root 4.0K 11月 12 06:27 xingfujie
-rw-r--r-- 1 root root 0 11月 12 06:27 yingsui.gz
[root@oldboy oldboy]# cat 456.log >>123.log 追加数据,让他变 1M+
[root@oldboy oldboy]# cat 456.log >>123.log 还不够 再来一次,并且把数据追加给123.log
[root@oldboy oldboy]# ls -lh
总用量 1.8M
-rw-r--r-- 1 root root 1.2M 12月 3 00:07 123.log 达到数据要求
-rw-r--r-- 1 root root 596K 11月 23 13:34 456.log
drwxr-xr-x 3 root root 4.0K 11月 12 06:27 ext
-rw-r--r-- 1 root root 0 11月 12 06:27 jeacen
drwxr-xr-x 2 root root 4.0K 11月 12 07:16 new
-rw-r--r-- 1 root root 24 11月 23 05:57 nginx.conf
-rw-r--r-- 1 root root 0 11月 12 06:27 oldboy
drwxr-xr-x 2 root root 4.0K 11月 12 06:27 test
-rw-r--r-- 1 root root 0 11月 12 06:27 widi.gz
drwxr-xr-x 2 root root 4.0K 11月 12 06:27 xiaodong
drwxr-xr-x 2 root root 4.0K 11月 12 06:27 xiaofan
drwxr-xr-x 2 root root 4.0K 11月 12 06:27 xingfujie
-rw-r--r-- 1 root root 0 11月 12 06:27 yingsui.gz
 
[root@oldboy oldboy]# cat 456.log >>455.log 这个是为了让两个文件时间一致,
[root@oldboy oldboy]# ls -lh
总用量 2.4M
-rw-r--r-- 1 root root 1.2M 12月 3 00:07 123.log
-rw-r--r-- 1 root root 596K 12月 3 00:08 455.log
-rw-r--r-- 1 root root 596K 11月 23 13:34 456.log
drwxr-xr-x 3 root root 4.0K 11月 12 06:27 ext
-rw-r--r-- 1 root root 0 11月 12 06:27 jeacen
drwxr-xr-x 2 root root 4.0K 11月 12 07:16 new
-rw-r--r-- 1 root root 24 11月 23 05:57 nginx.conf
-rw-r--r-- 1 root root 0 11月 12 06:27 oldboy
drwxr-xr-x 2 root root 4.0K 11月 12 06:27 test
-rw-r--r-- 1 root root 0 11月 12 06:27 widi.gz
drwxr-xr-x 2 root root 4.0K 11月 12 06:27 xiaodong
drwxr-xr-x 2 root root 4.0K 11月 12 06:27 xiaofan
drwxr-xr-x 2 root root 4.0K 11月 12 06:27 xingfujie
-rw-r--r-- 1 root root 0 11月 12 06:27 yingsui.gz
[root@oldboy oldboy]# date -s 20161215
2016年 12月 15日 星期四 00:00:00 CST
[root@oldboy oldboy]# find /oldboy/ -type f -name "*log" -size +1M -mtime +7
/oldboy/123.log
[root@oldboy oldboy]# find /oldboy/ -type f -name "*log" -size +1M -mtime +7 -exec mv {} /tmp \;
[root@oldboy oldboy]# ls -lh /tmp/
总用量 1.2M
-rw-r--r-- 1 root root 1.2M 12月 3 00:07 123.log
-rw-r--r-- 1 root root 0 11月 12 09:13 ett
drwxr-xr-x 2 root root 4.0K 11月 23 10:35 oldboy
-rw-r--r-- 1 root root 931 11月 23 08:27 passwd
[root@oldboy oldboy]#
总结
1)首先我们模拟数据,创建大于1M的文件
2)然后再通过date -s 修改时间变成七天后的时间,因为系统创建文件时间是以创建时的时间,而我们修改系统时间后,文件时间不变。
3) find /oldboy/ -type f -name "*log" -size +1M -mtime +7 表示在oldboy目录下寻找*.log 的文件,-size 是文件大小的参数, 注意kb的话是要小写的。MB 就是大写。 -mtime +7 是时间参数, +7是七天前, -7是七天内。7是最近七天。
4) -exec mv {} /tmp \; mv {} 花括号里表示是前面处理的结果。

 
 
11、什么是Linux的运行级别,请描述Linux的运行级别不同数字的含义(附加题)

 
[root@oldboy data]# cat /etc/inittab 查看当前系统运行级别文件
 
0 - halt (Do NOT set initdefault to this) 关机
# 1 - Single user mode 单用户模式
# 2 - Multiuser, without NFS (The same as 3, if you do not have networking) 多用户没有NFS相当于windows安全模式
# 3 - Full multiuser mode 完整多用户命令行模式
# 4 - unused 保留
# 5 - X11 图形界面模式
# 6 - reboot (Do NOT set initdefault to this) 重启

 
12、请描述buffer和cache的区别(附加题)
解答:
1)把数据写入到内存,存储数据的地方就叫做buffer缓冲区
2)把数据从内存取出来,这个就叫做缓存区cache.

 
13、请说出你知道的下列字符在Linux里可以代表的意义(附加题)
~ - . .. | >  >>  <  << !
解答:
~:表示管理员的家目录
-:表示上一级目录
.:表示当前目录
|:表示管道
>:输出重对象
>>:追加输出重对象
<:输入重对象
<<:追加输入重对象
!:取反的意思。
 

Linux运维班第一关课后学习效果能力上机大考察