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 文件包含3306或1521两数字所在的行的内容。
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第二关练习题的主要内容,如果未能解决你的问题,请参考以下文章