Linux第二关练习题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux第二关练习题相关的知识,希望对你有一定的参考价值。

第1章 PATH

1.1 PATH 存放的是linux下命令的路径(位置)

[[email protected] ~]# echo $PATH

/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

1.2 linux启动过程

开机自检(Bios

MBR引导

GRUB菜单

加载内核

运行init进程

读取/etc/inittab配置文件

执行/etc/rc.d/rc.sysinit脚本

执行/etc/rc.d/rc脚本

启动mingetty进程

1.3 linux执行命令过程

1.是否是别名

2.PATH中找命令是否存在

    1).提示

    command not found

    2).执行

实例1-1             如何过滤出已知当前目录下oldboy中的所有一级目录(提示:不包含oldboy目录下面目录的子目录及隐藏目录,即只能是第一级目录)

mkdir /oldboy -p

cd /oldboy

mkdir ext/oldboy test xiaodong xiaofan xingfujie -p

touch jeacen oldboy wodi.gz yingsui.gz

方法1-tree

[[email protected] /oldboy]# tree -dL 1

.

├── ext

├── test

├── xiaodong

├── xiaofan

└── xingfujie

5 directories

方法2-find

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

.

./xiaodong

./xiaofan

./test

./ext

./xingfujie

[[email protected] /oldboy]# find -maxdepth  1  -type d  -name "."

.

[[email protected] /oldboy]# find -maxdepth  1  -type d  ! -name "."

./xiaodong

./xiaofan

./test

./ext

./xingfujie

方法3 d开头的

[[email protected] /oldboy]# ll |grep "^d"

drwxr-xr-x  3 root root 4096 Jul 19 23:59 ext

drwxr-xr-x. 2 root root 4096 Jul 16 19:24 test

drwxr-xr-x  2 root root 4096 Jul 19 23:59 xiaodong

drwxr-xr-x  2 root root 4096 Jul 19 23:59 xiaofan

drwxr-xr-x  2 root root 4096 Jul 19 23:59 xingfujie

方法4 第2列大于1

[[email protected] /oldboy]# ll |awk  '$2>1'

total 40

drwxr-xr-x  3 root root 4096 Jul 19 23:59 ext

drwxr-xr-x. 2 root root 4096 Jul 16 19:24 test

drwxr-xr-x  2 root root 4096 Jul 19 23:59 xiaodong

drwxr-xr-x  2 root root 4096 Jul 19 23:59 xiaofan

drwxr-xr-x  2 root root 4096 Jul 19 23:59 xingfujie

方法5 ls

[[email protected] /oldboy]# ls -F

alex.txt  jeacen  oldboy.txt  test.sh  t.sh.bak  xiaodong/  xingfujie/

ext/      oldboy  test/       t.sh     wodi.gz   xiaofan/   yingsui.gz

[[email protected] /oldboy]# #-F 不同类型的文件 加上不同的标记  目录/

[[email protected] /oldboy]# ls -F |grep "/"

ext/

test/

xiaodong/

xiaofan/

xingfujie/

方法6 *目录标记

[[email protected] /oldboy]# ls -ld */

drwxr-xr-x  3 root root 4096 Jul 19 23:59 ext/

drwxr-xr-x. 2 root root 4096 Jul 16 19:24 test/

drwxr-xr-x  2 root root 4096 Jul 19 23:59 xiaodong/

drwxr-xr-x  2 root root 4096 Jul 19 23:59 xiaofan/

drwxr-xr-x  2 root root 4096 Jul 19 23:59 xingfujie/

实例1-2             /etc/目录为linux系统的默认的配置文件及服务启动命令的目录

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

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

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

1.创建压缩包

tar zcvf  /tmp/etc.tar.gz         /etc/

#z    gzip    通过gzip 软件压缩

#c    create  创建包

#v    verbose 显示过程

#f    file    指定文件

2.查看压缩包内容

tar ztf  /tmp/etc.tar.gz

#t   list  显示压缩包内容

3.解压

tar zxf   etc.tar.gz

#x    extract 解压

[[email protected] /tmp]# ll /tmp/etc.tar.gz

-rw-r--r-- 1 root root 9734648 Jul 20 01:41 /tmp/etc.tar.gz

解压到/opt

[[email protected] /tmp]# tar xf  /tmp/etc.tar.gz -C  /opt/

[[email protected] /tmp]# ll /opt/

total 12

drwxr-xr-x.  2 root root 4096 Jul 11 01:16 data

drwxr-xr-x  78 root root 4096 Jul 19 20:43 etc

drwxr-xr-x.  2 root root 4096 Mar 26  2015 rh

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

[[email protected] /tmp]# tar zcf /tmp/etc-pai.tar.gz    /etc/  --exclude /etc/services

tar: Removing leading `/' from member names

[[email protected] /tmp]# tar  tf /tmp/etc-pai.tar.gz |grep services

etc/init/readahead-disable-services.conf

[[email protected] /tmp]# tar  tf /tmp/etc.tar.gz |grep services

etc/init/readahead-disable-services.conf

etc/services

tar zcf /tmp/etc-pai.tar.gz    /etc/  --exclude /etc/services

tar命令经典故障

Removing leading `/' from member names

[[email protected] /oldboy]# tar zcf  /tmp/etc.tar.gz         /etc/

tar: Removing leading `/' from member names

把压缩包中的开头的/(根)删除掉

背后过程:

打包压缩过程中  文件或目录 绝对路径---->相对路径

    打包的时候:

        /etc/host

        /etc/profile

    压缩包中样子

        etc/host

        etc/profile

这个提示原因: 防止解压的时候覆盖源文件。

实例1-3             假如当前目录是/etc/sysconfig/network-scripts/

cd - 进入到上一次所在的位置

An  argument  of  -  is equivalent to $OLDPWD.

cd -  ===  cd $OLDPWD

cd .   进入当前目录

cd ..  进入上一级目录

cd ~   进入当前目录的家目录

实例1-4             按照时间顺序查看文件

ls -lrt

#-r 逆序

#-t 按照修改时间

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

-F == -f --try  如果文件不存在 会不断重试

tail -f /var/log/secure

[[email protected] ~]# ll -t

total 52

-rw-r--r--. 1 root root    10 Jul 17 04:28 oldboy.log

-rw-r--r--. 1 root root    56 Jul 16 18:42 *.sh

drwxr-xr-x. 3 root root  4096 Jul 15 01:48 oldboy

-rw-------. 1 root root  1160 Jul 14 23:41 anaconda-ks.cfg

-rw-r--r--. 1 root root 21736 Jul 14 23:41 install.log

-rw-r--r--. 1 root root  5890 Jul 14 23:38 install.log.syslog

实例1-5             打印配置文件nginx.conf内容的行号及内容,该如何做?

[[email protected] /oldboy]# #{1..5}   生成序列

[[email protected] /oldboy]# echo {1..10}

1 2 3 4 5 6 7 8 9 10

[[email protected] /oldboy]# echo {01..10}

01 02 03 04 05 06 07 08 09 10

[[email protected] /oldboy]# echo stu{01..10} |xargs -n1

stu01

stu02

stu03

stu04

stu05

stu06

stu07

stu08

stu09

stu10

[[email protected] /oldboy]# echo stu{01..10} |xargs -n1  >nginx.conf

方法1 cat  

[[email protected] /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 vim

:set nu         #显示行号 

:set nonu       #取消显示行号

方法3  awk

显示某一列

[[email protected] ~]# 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

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

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

方法4  grep -n

grep -n  "."   nginx.conf

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

-n  显示行号

方法5  nl    

number of lines

nl  nginx.conf

方法6 sed

= 显示行号

实例1-6             已知nginx服务的访问日志按天记录在服务器本地目录/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 显示时间 修改时间

-mtime  modify  time 修改时间

[[email protected] /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-7             找出/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-8             linux系统运行级别一般为0-6,请分别写出每个级别的含义。

1) 0-6 

2)

runlevel

3)

init

实例1-9              装完系统后,希望让网络文件共享服务NFS(iptables),仅在3级别上开机自启动,该如何做?

让iptables开机自启动?

[[email protected] ~]# chkconfig --level 3  iptables on

[[email protected] ~]# chkconfig |grep ipt

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

实例1-10         10 linux系统中查看中文,但是乱码了,请问如何解决乱码问题?

乱码原因:

如何排查:

如何解决:

实例1-11         已知如下命令及结果:

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

[[email protected] ~]$ cat oldboy.txt

I am oldboy,myqq is 31333741

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

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

方法1 sed+awk

[[email protected] /oldboy]# sed 's#,# #g' oldboy.txt

I am oldboy myqq is 31333741

[[email protected] /oldboy]# sed 's#,# #g' oldboy.txt |awk '{print $3,$6}'

oldboy 31333741

方法2 tr+awk

[[email protected] /oldboy]# tr   "," " " <oldboy.txt

I am oldboy myqq is 31333741

[[email protected] /oldboy]# tr   "," " " <oldboy.txt |awk '{print $3,$6}'

oldboy 31333741

[[email protected] /oldboy]# echo 123123|tr "123" "abc"

abcabc

[[email protected] /oldboy]# echo 112233|tr "123" "abc"

aabbcc

方法3 tr+cut

tr  1对1的替换

[[email protected] /oldboy]# cut -d " "   -f2,3,4 oldboy.txt

am oldboy,myqq is

[[email protected] /oldboy]# cut -d " "   -f2-5 oldboy.txt

am oldboy,myqq is 31333741

-d 指定分隔符(菜刀)

-f 某一列

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

[[email protected] /oldboy]# tr ","  " "  <oldboy.txt

I am oldboy myqq is 31333741

[[email protected] /oldboy]# tr ","  " "  <oldboy.txt |cut -d " "   -f3,6

oldboy 31333741

方法4 awk

[[email protected] /oldboy]# cat oldboy.txt

I am oldboy,myqq is 31333741

[[email protected] /oldboy]# awk -F ","  '{print $2}' oldboy.txt

myqq is 31333741

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

#-F指定多个分隔符

[[email protected] /oldboy]# awk -F "[, ]"  '{print $3}' oldboy.txt

oldboy

方法5 sed  sed

[[email protected] /oldboy]# ca时t oldboy.txt

I am oldboy,myqq is 31333741

[[email protected] /oldboy]# sed 's#I am ##g'  oldboy.txt

oldboy,myqq is 31333741

[[email protected] /oldboy]# sed 's#I am ##g'  oldboy.txt |sed  's#,myqq is##g'

oldboy 31333741

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

 

[[email protected] /oldboy]# awk -F"[ ,]"   '{print $3"*_*"$NF}' oldboy.txt

oldboy*_*31333741

[[email protected] /oldboy]# awk -F"[ ,]"   '{print $3":)"$NF}' oldboy.txt

oldboy:)31333741

[[email protected] /oldboy]# awk -F"[ ,]"   '{print $3","$NF}' oldboy.txt

oldboy,31333741

实例1-12         显示 /etc/passwd 1列和第3列内容 要求格式显示为:

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

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

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

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

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

[[email protected] /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

整齐显示

[[email protected] /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-13         如何查看/etc/services文件的有多少行?

显示行号 只保留最后一行

[[email protected] /oldboy]# wc  /etc/services

10774  58108 641020 /etc/services

[[email protected] /oldboy]# wc  -l /etc/services

10774 /etc/services

统计总数

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

[[email protected] /oldboy]# find /etc/ -type f -name "*.conf" | wc -l

195

实例1-14         过滤出/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

第2章 vmware 经典故障:

该虚拟机似乎正在使用中。

如果该虚拟机未在使用,请按“获取所有权(T)”按钮获取它的所有权。否则,请按“取消(C)”按钮以防损坏。

配置文件: G:VMware模板机01老男孩教育50-模板机01.vmx

方法1.重启计算机

方法2.通过everything   搜索 .lck  删除 虚拟机名称.lck 目录   重启vmware


以上是关于Linux第二关练习题的主要内容,如果未能解决你的问题,请参考以下文章

第二关练习讲解

Day11 - 第二关练习题上

第二关:爬虫HTML网页基础(附练习题)

第二关练习讲解(下部)

XSS Challenges练习方法

XSS Challenges练习方法