第1章 练习

1./etc/hosts     /etc/fstab   文件打包压缩到/backup目录   conf.tar.gz 

2.解压到/opt目录下面

3.检查 /opt/etc/hosts    /opt/etc/fstab

 

[root@oldboyedu50-lnb ~]# mkdir -p /backup   (创建目录)

[root@oldboyedu50-lnb ~]# tar  zcf  /backup/conf.tar.gz  /etc/hosts /etc/fstab

tar: Removing leading `/' from member names

 

[root@oldboyedu50-lnb ~]# tar xf  /backup/conf.tar.gz  -C /opt/

[root@oldboyedu50-lnb ~]# ll /opt/etc/

total 8

-rw-r--r-- 1 root root 805 Jul 10 18:21 fstab

-rw-r--r-- 1 root root 177 Jul 19 18:05 hosts

 

 

 

 

 

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

[root@oldboyedu50-lnb /oldboy]# #{1..5}   生成序列

[root@oldboyedu50-lnb /oldboy]# echo {1..10}

1 2 3 4 5 6 7 8 9 10

[root@oldboyedu50-lnb /oldboy]# echo {01..10}

01 02 03 04 05 06 07 08 09 10

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

stu01

stu02

stu03

stu04

stu05

stu06

stu07

stu08

stu09

stu10

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

 

stu01   stu01   stu01   stu01    stu01   stu01   stu01   stu01

stu02   stu02   stu02   stu02    stu02   stu02   stu02   stu02

stu03   stu03   stu03   stu03    stu03   stu03   stu03   stu03

stu04   stu04   stu04   stu04    stu04   stu04   stu04   stu04

stu05   stu05   stu05   stu05    stu05   stu05   stu05   stu05

stu06   stu06   stu06   stu06    stu06   stu06   stu06   stu06

stu07   stu07   stu07   stu07    stu07   stu07   stu07   stu07

stu08   stu08   stu08   stu08    stu08   stu08   stu08   stu08

stu09   stu09   stu09   stu09    stu09   stu09   stu09   stu09

stu10   stu10   stu10   stu10    stu10   stu10   stu10   stu10

 

2.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

 

2.2 方法2 vim

:set nu         #显示行号 

#nu === number

 

:set nonu       #取消显示行号

 

 

2.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   一整行内容

 

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

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

 

2.4 方法4  grep -n

 

grep -n  "."   nginx.conf

 

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

-n  显示行号

 

2.5 方法5  nl  

nl = number of lines

nl  nginx.conf

 

 

2.6 方法6 sed

=显示行号

 

 

小结:

1.cat -n /vim (必会)

2.grep awk    (必会)

3.nl sed

 

/selinux /selinux

 

 

 

 

第3章 保留最近7天访问日志

已知nginx服务的访问日志按天记录在服务器本地目录/app/logs下,由于磁盘空间紧张,现在要求只能保留最近7天访问日志!请问如何解决? 请给出解决办法或配置或处理命令。

删除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 修改时间

 

[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

 

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

 

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

 

4.1 方法1

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

 

4.2 方法2

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

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

 

 

4.3 方法3

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

 

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

 

1)   0-6

0--关机

1--单用户模式

2--多用户模式

3--完全多用户

4--待开发

5--图形界面

6--重启

 

2

runlevel

3

init

 

 

第6章 ##9 装完系统后,希望让网络文件共享服务NFS(iptables),仅在3级别上开机自启动,该如何做?让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

 

第7章 ##10 linux系统中查看中文,但是乱码了,请问如何解决乱码问题?

day12 第二关练习题(下部)_第1张图片

 

7.1   乱码原因

linux系统的字符集和远程连接工具字符集不同

7.2   如何排查:

7.2.1 查看系统的字符集   echo $LANG

7.2.2 检查Xshell使用的字符集

7.3 如何解决:

7.3.1 修改xshell的字符集

7.3.2  修改系统的字符集

1)临时修改字符集,重新登录之后失效

            Export.UTF-8

2)永久修改,重新登录之后生效

             /etc/sysconfig/i18n/里面的字符集修改

             LANG=”en_US.UTF-8”

 

第8章 ##13 已知如下命令及结果:

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

[oldbo2y@test ~]$ cat oldboy.txt

I am oldboy,myqq is 31333741

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

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

 

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

 

8.2.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

 

 

 

8.2.2 方法2 tr+awk

[root@oldboyedu50-lnb /oldboy]# tr   "," " "

I am oldboy myqq is 31333741

 

[root@oldboyedu50-lnb /oldboy]# tr   "," " "

oldboy 31333741

tr:

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  1对1的替换

8.2.3 方法3 tr+cut

[root@oldboyedu50-lnb /oldboy]# cut -d " "   -f2,3,4 oldboy.txt

am oldboy,myqq is

[root@oldboyedu50-lnb /oldboy]# cut -d " "   -f2-5 oldboy.txt

am oldboy,myqq is 31333741

-d 指定分隔符(菜刀)

-f 某一列

 

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

 

[root@oldboyedu50-lnb /oldboy]# tr ","  " " 

I am oldboy myqq is 31333741

[root@oldboyedu50-lnb /oldboy]# tr ","  " " 

oldboy 31333741

 

8.2.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}' oldboy.txt

oldboy

 

8.2.5 方法5 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

oldboy,myqq is 31333741

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

oldboy 31333741

 

小结:

1.sed /tr + awk /cut

2.awk

 

 

b.如果需要从文件中过滤出“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

 

第9章 #显示 /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

USER:root UID:0

USER:bin UID:1

USER:daemon UID:2

USER:adm UID:3

USER:lp UID:4

USER:sync UID:5

 

 

 

[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

 

第10章 ##14 如何查看/etc/services文件的有多少行?

(显示行号 只保留最后一行)

 

[root@oldboyedu50-lnb /oldboy]# wc  /etc/services

 10774  58108 641020 /etc/services

[root@oldboyedu50-lnb /oldboy]# wc  -l /etc/services

10774 /etc/services

 

统计总数

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

 

|传递的是文字

|xargs 传递的是文件名

 

[root@oldboyedu50-lnb /oldboy]# find /etc/ -type f -name "*.conf" | wc -l

195

 

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

egrep "3306或1521"  /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.显示行号

2.find命令mtime *3

3.运行级别 启动流程

4.linux显示乱码排查过程

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

6.其他命令