考试总结
1. 一个目录中有很多文件(ls -l 查看时好多屏),想用一条命令最快速度查看到最近更新的文件。如何看?
答:
ls -rtl
2. 在配置apache 服务时 执行了./configure --prefix=/application/apache2.2.17 来编译 apche,在make install 完成后,希望用户访问apache 路径更简单,需要给/application/apache2.2.17目录做一个软链接/application/apache,使得内部开发或管理人员通过/application/apache 就可以访问到apache 的安装目录/application/apache2.2.17 下的内容,请你给出实现的命令。
答:
ln –s /application/apache2.2.17 /application/apache
3. 已知Nginx 服务的访问日志按天记录在服务器本地目录/app/logs 下,由于磁盘空间紧张,现在要求只能保留最近 7 天的访问日志!请问如何解决? 请给解决办法或配置或处理命令。
答:
00 00 * * * /usr/bin/find /app/logs -type f -mtime +7 |xargs rm -f &> /dev/null
or
00 00 * * * /usr/bin/find /app/logs -type f -mtime +7 –exec rm –f {} \; &> /dev/null
or
00 00 * * * rm -f $(find /app/logs -type f -mtime +7) &> /dev/null
4. 调试系统服务时,希望能实时查看/var/log/messages 系统日志的更新,如何做?
答:
tail –f /var/log/messages
or
tail –F /var/log/messages
or
tailf /var/log/messages
5. 打印轻量级web 服务的配置文件 nginx.conf 内容的行号及内容,该如何做?
答:
cat –n nignx.conf
or
grep –n ‘.’ nginx.conf
or
awk ‘{print NR,$0}’ nginx.conf
or
vim nginx.conf ,:set nu
or
sed ‘=’ nginx.conf
or
less –N nginx.conf
6. 已知如下命令及结果:
[oldboy@test ~]$ echo "I am oldboy,my qq is 31333741">>oldboy.txt
[oldboy@test ~]$ cat oldboy.txt
I am oldboy,my qq is 31333741
现在需要从文件中过滤出“oldboy”和“31333741”字符串,请给出命令。
答:
grep –Eo ‘oldboy|31333741’ oldboy.txt
or
egrep –o ‘oldboy|31333741’ oldboy.txt
or
sed –r ‘s#am (.*),.*is (.*)#\1\2#g’ oldboy.txt
or
awk –F ‘[ ,]’ ‘{print $3,$NF}’ oldboy.txt
7. 问题:请问在一个命令上加什么参数可以实现下面命令的内容在同一行输出。
echo "oldboy";echo "oldboy"
答:
echo –n “oldboy”;echo “oldboy”
8. 如何快速查到 ifconfig 命令的全路径(假如你不知道其路径),请给出命令。
答:
which ifconfig
or
whereis ifconfig
9. 查找/oldboy/目录下所有文件,并把文件中的www.etiantian.org
字符串替换成www.oldboyedu.com
答:
find /oldboy/ -type f |xargs sed ‘s#www.etiantian.org#www.oldboyedu.com#g’
10. 过滤出/etc/services 文件包含 3306 或 1521 两数据库端口的行的内容。
答:
grep -E ‘3306|1521’ /etc/services
or
egrep ‘3306|1521’ /etc/services
or
sed –nr ‘/3306|1521/p’ /etc/services
or
awk ‘/3306|1521/’ /etc/services
11. 请将 ifconfig eth0 和 ip add 结果中的 eth0 网卡对应 ip 地址取出(不低于 2 种方法)。
[root@oldboyedu ~]# ifconfig eth0
eth0: flags=4163 mtu 1500
inet 10.0.0.201 netmask 255.255.255.0 broadcast 10.0.0.255
inet6 fe80::9fdb:66ba:dc7f:3fe5 prefixlen 64 scopeid 0x20
[root@oldboyedu ~]# ip add
2: eth0: mtu 1500 qdisc pfifo_fast state UP group default qlen
1000
link/ether 00:0c:29:2a:ca:54 brd ff:ff:ff:ff:ff:ff
inet 10.0.0.201/24 brd 10.0.0.255 scope global noprefixroute eth0
答:
ifconfig eth0|sed -rn 's#.*t (.*) net.*#\1#gp'
or
ifconfig eth0|awk -F'[ :]+' 'NR==2{print $3}'
or
ip addr|sed -rn 's#.*t (.*)/24.*#\1#gp'
or
ip addr|awk -F'[ /]+' 'NR==9{print $3}'
12. 如何赋予 oldboy.txt 文件如下权限、用户、用户组属性。
-w--rw-rwx. 1 oldboy sa 24 Mar 13 11:46 oldboy.txt
答:
chmod 267 oldboy.txt
chown oldboy.sa oldboy.txt
or
chmod u=w g=rw o=rwx oldboy.txt
chown oldboy:sa oldboy.txt
13. 某系统管理员需每天做一定的重复工作,请按照下列要求,编写一个解决方案,请按步骤写清楚每一步操作:
(1)在下午 4:50 删除/abc 目录下的全部子目录和全部文件。
(2)每逢星期一下午五点将/data 目录下的所有目录和文件归档并压缩为以当天日期命名的tar.gz 结尾打包文件。
答:
(1) :
50 16 * * * /bin/rm –rf /abc/* >/dev/null 2>&1
or
脚本:
vim shanchu.sh
/bin/rm –rf /abc/* 或
#!/bin/sh
cd /abc&& rm –rf ./*
50 16 * * * /bin/sh shanchu.sh >/dev/null 2>&1
(2)
00 17 * * 1 /bin/tar zcf ./$(date +\%F).tar.gz >/dev/null 2>&1
14. 如何取得/etc/hosts 文件的权限对应的数字内容,如-rw-r--r-- 为 644,要求使用命令取得644 这样的数字(不低于 2 种方法)。
答:
stat /etc/hosts -c %a
or
stat /etc/hosts|awk -F'[0/]' 'NR==4{print $2}'
or
stat /etc/hosts|sed -nr 's#.*\(0(.*)/-.*#\1#gp'
15. Linux 下通过 mkdir 命令创建一个新目录/oldboy/ett,它的硬链接数是多少,为什么? 如果在/oldboy/ett 下面再创建一个目录 test。再问/oldboy/ett 的硬链接数是多少?为什么。
答:
第一问是2个, 目录本身是一个硬链接,.
也是一个
第二问是3个, 目录本身是一个硬链接,.
也是一个,..
也是一个
如果在创建一个,还是3个,因为下一个目录是它子目录的子目录,不是它的上级。
16.企业故障案例1:作为运维工程师,你在工作中遇到的一个实际问题,情况是:一个 lnmp 的服务器,站点目录下所有的文件均被植入了如下内容:
(可用 A 代替此行内容解答)
包括图片文件也被植入了,当用户网站打开时就会调用这个地址,显示一个广告,请问你如 何解决。
答:
第一步:备份站点目录下所有文件
tar zcf ./bak_$(date +%F).tar.gz 站点目录
第二步:查找被修改的文件
find / -type f | xargs grep 'A'
第三步:批量删除被篡改的文件
find / -type f |xargs sed -i '/A/d'
find / -type f | xargs grep 'A'
第四步:找到文件被篡改的来源,并优化调整。
第五步:写总结,故障报告。
17. 请输出当前日期和时间、3 天前的日期、未来 10 天的日期。
答:
当前日期和时间:date
3 天前的日期:date +%F -d “-3 day”
未来 10 天的日期:date +%F -d “+10 day”
18. 写出 10 个以上 Linux 命令行中特殊字符及对应含义。
答:
符号 | 作用 |
---|---|
~ | 用户的家目录,超级用户为/root,普通用户为/home |
- | 代表上一次(相当于当前路径)用户所在的路径 |
. | 代表当前目录 |
.. | 代表上一级目录 |
单引号(' ') | 所见即所得,将单引号内的内容都原样输出。 |
双引号(" ") | 先解析变量、命令、转义字符,然后再输出最终内容。 |
无引号 | 基本和双引号相时同,不过还是用双引号替代比较好。 |
反引号( ) |
一般用于引用命令,执行时命令会被执行,相当于$()。 |
标准输入(stdin) | 代码为0,配合<或<<使用,数据流从右向左 |
标准输出(stdout) | 代码为1,配合>或>>使用,数据流从左向右 |
标准错误输出(stderr) | 代码为2,配合>或>>使用,数据流从左向右 |
重定向符号,数据流是箭头方向 | |
标准输入重定向 | 0<或<,清空已有内容,数据一般从文件流向处理的命令 |
追加输入重定向 | 0<<或<<,追加内容到底部,数据一般从文件流向处理的命令 |
标准输出重定向 | 1>或>,正常输出重定向到文件,会清空已有的内容 |
标准追加输出重定向 | 1>>或>>,将内容追加重定向到底部,不会清空已有的内容 |
标准错误输出重定向 | 2>,将标准错误内容重定向到文件,如果文件存在内容则清空 |
标准错误输出追加重定向 | 2>>,将标准错误内容追加到文件底部,不会清空已有的内容 |
; | 表示一个命令的结束,也是命令间的分隔符 |
# | 1、表示注释内容,2、root用户的命令提示符 |
│ | 表示管道,将一个命令处理后的中间内容输出给下一个命令继续处理 |
$ | 1、字符串前加$符号,表示变量内容,2、普通用户的命令提示符 |
\ | 将特殊含义的字符还原成字符本意 |
{} | 1、生产序列,2、引用变量与普通字符分隔 |
&& | 前一个命令执行成功,再执行后面一个命令 |
ll | 前一个命令执行失败,再执行后面一个命令 |
! | 1、在Bash中表示取反,2、在vi/vim中表示强制,3、!ls表示最近一次以ls开头的命令并运行 |
19. 请说出软链接和硬链接的区别。
答:
1)答分类:在Linux系统中,连接分两种:一种被称为硬链接(Hard Link
),另一种被称为软连接(soft link
)或符号链接(symbolic link
)。
2)答概念:硬链接文件与源文件的Inode
节点号相同,而软连接文件相当于Windows下面的快捷方式(Inode节点号与源文件不同)。
3)答创建:默认不带参数的情况下,ln命令创建的是硬链接,带-s参数的ln命令创建的是软连接。
4)答特点:
a. 不能对目录创建硬链接,但可以创建软连接,对目录的软连接会经常被用到。
b. 软连接可以跨文件系统,硬链接不可以跨文件系统。
c. 删除软链接,对源文件及硬链接文件无任何影响。
d. 删除文件的硬链接,对源文件及软链接文件无任何影响。
e. 删除链接文件的源文件,对硬链接文件无影响,会导致其软链接失效(红底白字闪烁状)。
f. 同时删除源件及其硬链接文件,整个文件才会被真正的删除。
5)答案例:硬链接用处不多,可以用来对重要文件做快照防止误删,而对目录建立软链接在工作中很常用。
20. 描述 ls -lhi 输出中,每一列的意义。
51513324 -rw-rw-r--. 1 oldboy oldboy 11 Mar 27 18:23 test.txt
答:
51513324 -rw-rw-r-- . 1 oldboy oldboy 11 Mar 27 18:23 test.txt
inode 文件类型权限 selinux标识符 硬链接数 属主 属组 文件大小 最后修改时间 文件名
21. 什么是 PATH 环境变量,它有什么作用?
答:
PATH
是命令的搜索路径
PATH
可以在其他子 shell
中定义命令的目录路径
22. 描述 Linux 下文件删除的原理?
答:
硬链接数为 0 l_ink 为 0,进程数为 0 i_count 为 0,文件才被真正被删除掉。
23. 企业故障案例2:往磁盘中写入数据出现 no space left on device 故障,请写出可能原因。
答:
1)inode
满:定时任务书写有误,导致邮件产生大量小文件,把 inode
占用完了
2)block
满:df –h
,du –sh
定位到大文件,并将其删除
24. 企业故障案例3: Tomcat 服务器磁盘满了,临时删除对应日志文件但是发现空间未释放,可能原因是?如何解决)。
答:
进程占用,ps –ef|grep delete
相应的服务进程,并将其重启即可释放空间
25. 业故障案例4:定时任务的脚本手工可以执行,但是放到定时任务里无法执行,可能原因是什么?
答:
原因一:环境变量问题,没有使用绝对路径执行定时任务
原因二:定时任务写错了