第二关练习题-下部

 

作者:左婷婷

归档:学习笔记

2018/7/24

 

快捷键:

Ctrl + 1    标题1

Ctrl + 2    标题2

Ctrl + 3    标题3

Ctrl + 4    实例

Ctrl + 5    程序代码

Ctrl + 6    正文

格式说明:

蓝色字体:注释

×××背景:重要

绿色背景:注意


老男孩教育教学核心思想6重:重目标、重思路、重方法、重实践、重习惯、重总结

学无止境,老男孩教育成就你人生的起点!

联系方式:

网站运维QQ交流群:

Linux  385168604

架构师 390642196

Python 29215534

大数据 421358633

官方网站:

http://www.oldboyedu.com


 

1.1 打印配置文件nginx.conf内容的行号及内容,该如何做?... 3

1.1.1 方法1 cat 3

1.1.2 方法2 vim.. 3

1.1.3 方法3  awk 显示某一列... 3

1.1.4 方法4  grep -n. 4

1.1.5 方法5  nl     number of lines. 4

1.2 本地目录/app/logs下删除7天之前的日志... 5

1.2.1  find  -mtime +7|xargs ls –l 5

1.2.2 #找出/app/logs  下面以.log结尾的7天之前的文件 显示详细信息(ls  -l) (3种方法) 5

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

1.4 iptables开机自启动?... 6

1.5 linux系统中查看中文,但是乱码了,请问如何解决乱码问题?... 7

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

1.6.1 方法1 sed+awk. 7

1.6.2 方法2 tr+awk. 8

1.6.3 方法3 tr+cut 8

1.6.4 方法4 awk. 8

1.6.5 方法5  sed  sed. 9

1.7 如果需要从文件中过滤出“oldboy,31333741”字符串,请再给出命令. 9

1.8 显示 /etc/passwd 1列和第3列内容 要求格式显示为: 9

1.9 如何查看/etc/services文件的有多少行?... 9

1.9.1 显示行号 只保留最后一行... 9

1.10 统计出 /etc目录下面 .conf结尾的文件的数量... 10

1.11 总结:... 10

1.12 预习:... 10

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1.1  打印配置文件nginx.conf内容的行号及内容,该如何做?

 [root@oldboyedu50-lnb /oldboy]# echo stu{01..10} |xargs -n1  >nginx.conf

1.1.1 方法1 cat  

[root@oldboyedu50-lnb /oldboy]# cat -n nginx.conf       //显示行号

     1  stu01

     2  stu02

     3  stu03

     4  stu04

     5  stu05

     6  stu06

     7  stu07

     8  stu08

     9  stu09

    10  stu10

1.1.2 方法2 vim

使用vim nginx.conf

按esc退出后

加入:set nu  回车       #显示行号  

#nu === number

:set nonu       #取消显示行号

1.1.3 方法3  awk 显示某一列

[root@oldboyedu50-lnb ~]# awk  '{print NR,$1}' /oldboy/nginx.conf

1 stu01

2 stu02

3 stu03

4 stu04

5 stu05

6 stu06

7 stu07

8 stu08

9 stu09

10 stu10

NR   行号

$1   1

$2   2

$0   一整行内容

1.1.3.1  显示/proc/mounts 文件的行号和第1列和第3

awk '{print NR,$1,$3}' /proc/mounts 

1.1.4 方法4  grep -n

grep -n  "."   nginx.conf         显示所有行

.   正则表达式  任意一个字符

-n  显示行号

1.1.5 方法5  nl    number of lines

nl  nginx.conf         显示行号

方法6 sed

Sed  =  nginx.conf

=显示行号

小结:

1.cat -n /vim (必会)

2.grep awk    (必会)

3.nl sed

/selinux /selinux

1.2 本地目录/app/logs下删除7天之前的日志

mkdir -p /app/logs             //  创建环境

cd /app/logs

for  time in  {01..20};do  date -s "201805$time"; touch access_www_$(date +%F).log ;done

date -s "20180520 00:00:00"

 

date             //显示时间 修改时间

find 

-mtime

 modify  time 修改时间

1.2.1 find  -mtime +7|xargs ls –l

[root@oldboyedu50-lnb /app/logs]# find  -mtime +7|xargs ls –l    //  显示前七天之前的文件

-rw-r--r-- 1 root root 0 May  1 00:00 ./access_www_2018-05-01.log

-rw-r--r-- 1 root root 0 May  2 00:00 ./access_www_2018-05-02.log

-rw-r--r-- 1 root root 0 May  3 00:00 ./access_www_2018-05-03.log

-rw-r--r-- 1 root root 0 May  4 00:00 ./access_www_2018-05-04.log

-rw-r--r-- 1 root root 0 May  5 00:00 ./access_www_2018-05-05.log

-rw-r--r-- 1 root root 0 May  6 00:00 ./access_www_2018-05-06.log

-rw-r--r-- 1 root root 0 May  7 00:00 ./access_www_2018-05-07.log

-rw-r--r-- 1 root root 0 May  8 00:00 ./access_www_2018-05-08.log

-rw-r--r-- 1 root root 0 May  9 00:00 ./access_www_2018-05-09.log

-rw-r--r-- 1 root root 0 May 10 00:00 ./access_www_2018-05-10.log

-rw-r--r-- 1 root root 0 May 11 00:00 ./access_www_2018-05-11.log

-rw-r--r-- 1 root root 0 May 12 00:00 ./access_www_2018-05-12.log

1.2.2 #找出/app/logs 下面以.log结尾的7天之前的文件 显示详细信息(ls -l) (3种方法)

find /app/logs/   -type f  -name "*.log" -mtime +7

方法1

find /app/logs/   -type f  -name "*.log" -mtime +7|xargs ls -l

方法2

ls -l   $(find /app/logs/   -type f  -name "*.log" -mtime +7)

ls -l   `find /app/logs/   -type f  -name "*.log" -mtime +7`

方法3

find /app/logs/   -type f  -name "*.log" -mtime +7 -exec ls -l {}  \;

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

运行级别

10-6  含义  

关机 (不要把运行级别设置为0

单用户模式 single user mode

多用户模式无法使用 NFS

完全多用户模式 命令行模式 文本模式 (工作默认的环境)

待开发

5  X11   桌面(desktop)模式 图形化界面模式重启   (不要把运行级别设置为6

runlevel    查看

init       修改

1.4 iptables开机自启动?

[root@oldboyedu50-lnb ~]# chkconfig --level 3  iptables on    //防火墙开机自启动

[root@oldboyedu50-lnb ~]# chkconfig |grep ipt         查看

iptables        0:off   1:off   2:off   3:on    4:off   5:off   6:off

1.5 linux系统中查看中文,但是乱码了,请问如何解决乱码问题?

已知如下命令及结果:

[oldboy@test ~]$ mkdir /oldboy ; echo "I am oldboy,myqq is 31333741">/oldboy/oldboy.txt

[oldboy@test ~]$ cat oldboy.txt

I am oldboy,myqq is 31333741

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

b.如果需要从文件中过滤出“oldboy,31333741”字符串,请再给出命令.

1.6.1 方法1 sed+awk

[root@oldboyedu50-lnb /oldboy]# sed 's#,# #g' oldboy.txt     将逗号替换为空格

I am oldboy myqq is 31333741

[root@oldboyedu50-lnb /oldboy]# sed 's#,# #g' oldboy.txt |awk '{print $3,$6}'    显示第三,六列

oldboy 31333741

1.6.2 方法2 tr+awk

[root@oldboyedu50-lnb /oldboy]# tr   "," " " 将逗号替换为空格

I am oldboy myqq is 31333741

[root@oldboyedu50-lnb /oldboy]# tr   "," " " 显示第三,六列

oldboy 31333741

tr   sed命令阉割版 

[root@oldboyedu50-lnb /oldboy]# echo 123123|tr "123" "abc"   

abcabc

[root@oldboyedu50-lnb /oldboy]# echo 112233|tr "123" "abc"

aabbcc

[root@oldboyedu50-lnb /oldboy]# #tr  11的替换

1.6.3 方法3 tr+cut

[root@oldboyedu50-lnb /oldboy]# tr ","  " "  将逗号替换为空格

I am oldboy myqq is 31333741

[root@oldboyedu50-lnb /oldboy]# tr ","  " "  //-d 指定分隔符(菜刀)

-f 某一列

oldboy 31333741

1.6.4 方法4 awk

[root@oldboyedu50-lnb /oldboy]# cat oldboy.txt

I am oldboy,myqq is 31333741

[root@oldboyedu50-lnb /oldboy]# awk -F ","  '{print $2}' oldboy.txt  //以逗号分割显示第二列 

myqq is 31333741

#-F 指定分隔符(菜刀)

#-F指定多个分隔符

[root@oldboyedu50-lnb /oldboy]# awk -F "[, ]"  '{print $3,$6}' oldboy.txt  //以逗号空格为分隔符显示第三,六列

Oldboy 31333741

1.6.5 方法5 sed  sed

[root@oldboyedu50-lnb /oldboy]# cat oldboy.txt

I am oldboy,myqq is 31333741

[root@oldboyedu50-lnb /oldboy]# sed 's#I am ##g'  oldboy.txt  //将I am替换为空

oldboy,myqq is 31333741

[root@oldboyedu50-lnb /oldboy]# sed 's#I am ##g'  oldboy.txt |sed  's#,myqq is##g' //将I am替换为空

再将,myqq is替换为空

oldboy 31333741

1.7 如果需要从文件中过滤出“oldboy,31333741”字符串,请再给出命令.

[root@oldboyedu50-lnb /oldboy]# awk -F"[ ,]"   '{print $3"*_*"$NF}' oldboy.txt

oldboy*_*31333741

[root@oldboyedu50-lnb /oldboy]# awk -F"[ ,]"   '{print $3":)"$NF}' oldboy.txt

oldboy:)31333741

[root@oldboyedu50-lnb /oldboy]# awk -F"[ ,]"   '{print $3","$NF}' oldboy.txt   以空格逗号为分隔符,加上“,”显示第三,最后一列

oldboy,31333741

1.8 显示 /etc/passwd 1列和第3列内容 要求格式显示为:

USER:1列内容  UID:3列内容

USER:1列内容  UID:3列内容

USER:1列内容  UID:3列内容

USER:1列内容  UID:3列内容

USER:1列内容  UID:3列内容

[root@oldboyedu50-lnb /oldboy]# awk -F":"   '{print "USER:"$1,"UID:"$3}' /etc/passwd|column -t

USER:root       UID:0

USER:bin        UID:1

USER:daemon     UID:2

USER:adm        UID:3

USER:lp         UID:4

1.9 如何查看/etc/services文件的有多少行?

1.9.1 显示行号 只保留最后一行

[root@oldboy oldboy]# cat -n /etc/services

[root@oldboyedu50-lnb /oldboy]# wc  /etc/services     //统计文件信息

 10774  58108 641020 /etc/services      

[root@oldboyedu50-lnb /oldboy]# wc  -l /etc/services      //-l显示行号

10774 /etc/services

1.10 统计出 /etc目录下面 .conf结尾的文件的数量

|传递的是文字

|xargs 传递的是文件名

[root@oldboyedu50-lnb /oldboy]# find /etc/ -type f -name "*.conf" | wc –l 统计.conf结尾的文件的数量

195

过滤出/etc/services 文件包含33061521两数字所在的行的内容。

egrep "33061521"  /etc/services

egrep "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

| 扩展正则表达式  egrep == grep -E

1.11 总结:

1.显示行号

2.find命令mtime *3

3.运行级别 启动流程

4.linux显示乱码排查过程

5.awk取出某一列 指定分隔符

6.其他命令

1.12 预习:

linux文件属性

软连接与硬链接区别

磁盘空间不足及排查解决过程