【Linux题目】第四关
1. 如何过滤出已知当前目录下oldboy中的所有一级目录?
提示:不包含oldboy目录下面目录的子目录和隐藏目录,只要一级目录即可。
解答:
- ls -F|grep / 通过ls -F给目录后面加标识,过滤
- 除了 ls -F加标识外,还可以用 ls -p
- ls -l|grep '^d' 通过过滤长属性的文件和目录属性标识
- ls -l|awk '$2!~/1/{print}' 通过判断长属性的第二列(即:硬连接数)不等于1(即大于1)的是目录
- 不绝对,当文件没有硬连接的时候是对的
- find . -type d -maxdepth 1 查找目录
- tree -L 1 -d 只取一级子目录
2. 假如当前目录是/oldboy,现在需要进入到/tmp目录下进行操作,执行的命令为: cd /tmp。操作完毕后,想要快速回到上一次进入的目录,应该如何做?(不能使用 cd /oldboy)
解答:
方法1: “-”表示上一次所在的目录,切换回即可
cd -
原理:环境变量中的OLDPWD会记录上一次的目录。env|grep -i oldpwd
方法2:查看history历史记录命令,找到对应的切换路径的命令,用 !history_command_number,会执行该命令。
[root@oldboy tmp]# history
19 cd /oldboy
20 pwd
21 cd /tmp
22 pwd
23 history
[root@oldboy tmp]# !19
cd /oldboy
3. 一个目录中有很多文件,向快速看到最近最新的文件。如何看?
解答:
文件按照时间顺序排序,倒序正序都可以。
ls -lrt
执行这个命令后,最新的文件会在最下面。
4. 在配置apache时,执行了./configure --prefix=/application/apache2.2.17来编译apache,在make install 完成后,希望用户的访问路径更简单,需要给/application/apache2.2.17目录做一个软连接/application/apache2.2.17下的内容,请给出实现的命令。
解答:
ln -s /application/apache2.2.17 /application/apache
5. 已知apache服务的访问日志按天记录在服务器本地目录/app/logs下,由于磁盘空间紧张,现在要求只能保留最近7天访问日志。
解答:
find /app/logs -type f -name "*.log" -mtime +7 -exec rm -f {} \;
6. 调试系统服务时,希望能实时查看系统日志/var/log/messages的更新,如何做
解答:
- tail -f /var/log/messages
- taif /var/log/messages
- tail -F /var/log/messages
注意这三者的区别:
- tail -f 等同于--follow=descriptor,根据文件描述符进行追踪,当文件改名或被删除,追踪停止
- tail -F 等同于--follow=name --retry,根据文件名进行追踪,并保持重试,即该文件被删除或改名后,如果再次创建相同的文件名,会继续追踪
- tailf 等同于tail -f -n 10(貌似tail -f或-F默认也是打印最后10行,然后追踪文件),与tail -f不同的是,如果文件不增长,它不会去访问磁盘文件,所以tailf特别适合那些便携机上跟踪日志文件,因为它减少了磁盘访问,可以省电。
7. 打印配置文件nginx.conf内容的行号及内容,该如何做?
解答:
- cat -n nginx.conf
- nl nginx.conf nl命令即,number of lines
- grep -n . nginx.conf (点.表示匹配任意字符,即输出所有内容)
- vi nginx.conf 命令行模式下 :set nu 查看行号, :set nonu取消行号
- awk '{print NR,$0}' nginx.conf
- less -N nginx.conf
- sed = nginx.conf|sed 'N;s/\n/ /g'
- sed = nginx.conf|xargs -n2
- 注意,sed = 的用法,比较少见
[root@oldboy oldboy]# sed = oldboy.txt
1
inet addr:10.0.0.8 Bcast:10.0.0.255 Mask:255.255.255.0
注意,sed = 的“=”前后有空格,否则不会显示出行号和内容。
8. 装完系统后,希望让网络文件共享服务NFS,仅在 3 级别上开机自启动,该如何做?
解答:
方法1:把要启动的服务放在/etc/rc.local里。
### [root@oldboy ~]# vi /etc/rc.local 在文件中添加内容:
# sshd service startup scripts
/etc/init.d/sshd start
方法2:chkconfig --list,查看所有运行的服务以及对应的运行级别。
chkconfig --list nfs
chkconfig nfs off # 全部关闭服务
chkconfig --level 3 nfs on # 在3运行级别上设置开机自启动
9. Linux系统运行级别一般为0-6,请写出每个级别的含义。
- 0 关机
- 1 单用户命令行模式
- 2 无网络的多用户
- 3 正常的文本模式下的多用户
- 4 unused
- 5 桌面系统模式
- 6 重启
[root@oldboy etc]# tail /etc/inittab
# Default runlevel. The runlevels used are:
# 0 - halt (Do NOT set initdefault to this)
# 1 - Single user mode
# 2 - Multiuser, without NFS (The same as 3, if you do not have networking)
# 3 - Full multiuser mode
# 4 - unused
# 5 - X11
# 6 - reboot (Do NOT set initdefault to this)
#
id:3:initdefault:
10. Linux系统中查看中文乱码,请问如何解决乱码问题?
解答:
LANG 这个 环境变量 就是控制字符显示的。
- 临时修改LANG export LANG='zh_CN.UTF-8'
- 修改/etc/sysconfig/i18n这个配置文件,永久生效。
[root@oldboy oldboy]# echo 'LANG="zh_CN.UTF-8"'>/etc/sysconfig/i18n
[root@oldboy oldboy]# source /etc/sysconfig/i18n # 如需让配置立即生效需要执行此步。
[root@oldboy oldboy]# echo $LANG
zh_CN.UTF-8
11. 如何优化Linux系统?
- 不用root,添加普通用户,通过sudo授权管理
- 更改默认的远程连接SSH服务器端口及禁止root用户远程连接
- 定时自动更新服务器时间
- 配置yum更新源,从国内更新源下载安装rpm包
- 关闭selinux及iptables(iptables工作场景如果有 wan ip 一般要打开,高并发除外)
- 调整文件描述符的数量,进程及文件的打开都会消耗文件描述符
- 定时自动清理/var/spool/clientmqueue/目录垃圾文件,防止 inodes 节点被占满(c6.4默认没有sendmail,因此,可以不配)
- 精简开机自启动服务(crond,sshd,network,rsyslog(c5.8 syslog))
- Linux内核参数优化/etc/sysctl.conf,执行sysctl -p生效
- 更改字符集,支持中文,但还是建议用英文字符集,防止乱码问题,不要使用中文
- 锁定关键系统文件 chattr +i /etc/passwd /etc/shadow /etc/group /etc/gshadow /etc/inittab 处理以上内容后,把chattr, lsattr改名为oldboy,这样就安全多了
- 清空/etc/issue,去除系统及内核版本登录前的屏幕显示
- 清空无用的默认系统账户或组(非必须)。
12. 如何查看/etc/services文件有多少行?
解答:
- wc -l /etc/services
- cat -n /etc/services|tail -1
13. /etc/目录为Linux系统的默认配置文件及服务启动命令的目录
- 请用tar打包/etc/整个目录(打包及压缩)
- 请用tar打包/etc/整个目录(打包及压缩,但需要排除/etc/services文件)
- 请把第一个打包好的文件,解压到/tmp的指定目录下
解答:
- 请用tar打包/etc/整个目录(打包及压缩)
- tar zcf /tmp/etc.tar.gz /etc/
- 请用tar打包/etc/整个目录(打包及压缩,但需要排除/etc/services文件)
- tar zcf /tmp/etc.tar.gz /etc/ --exclude=/etc/services
- 请把第一个打包好的文件,解压到/tmp的指定目录下
- tar zxf /tmp/etc.tar.gz /tmp/etc/
14. 现有文件内容如下,需要从文件中过滤出“oldboy”和“1234567890”的字符串。
[root@oldboy oldboy]# cat oldboy.txt
I am oldboy, mysqq is 1234567890
解答:
主要是活用awk,grep,sed,cut等多种文本处理
[root@oldboy oldboy]# cat oldboy.txt|cut -d" " -f 6,3|sed 's#,##g'
oldboy 1234567890 [root@oldboy oldboy]# grep -oE '(oldboy)|[0-9]+' oldboy.txt
oldboy
1234567890 [root@oldboy oldboy]# egrep -o '(oldboy)|[0-9]+' oldboy.txt
oldboy
1234567890 [root@oldboy oldboy]# awk -F "[ ,]+" '{print $3,$NF}' oldboy.txt
oldboy 1234567890 [root@oldboy oldboy]# sed -nr 's#^.*(oldboy).*([0-9]{10,})$#\1 \2#gp' oldboy.txt
oldboy 1234567890
15. 过滤出/etc/services 文件包含3306或1521两数据库端口的行的内容。
解答:
[root@oldboy oldboy]# cat /etc/services|grep -E '3306|1521'
mysql 3306/tcp # MySQL
mysql 3306/udp # MySQL
ncube-lm 1521/tcp # nCube License Manager
ncube-lm 1521/udp # nCube License Manager [root@oldboy oldboy]# 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 [root@oldboy oldboy]# awk '/3306|1521/{print }' /etc/services
mysql 3306/tcp # MySQL
mysql 3306/udp # MySQL
ncube-lm 1521/tcp # nCube License Manager
ncube-lm 1521/udp # nCube License Manager [root@oldboy oldboy]# sed -nr '/3306|1521/p' /etc/services
mysql 3306/tcp # MySQL
mysql 3306/udp # MySQL
ncube-lm 1521/tcp # nCube License Manager
ncube-lm 1521/udp # nCube License Manager
【Linux题目】第四关的更多相关文章
- 【linux题目】第一关
详细的解答:https://github.com/Zoe233/Linux/blob/master/[题目]5.Linux了解程度测试题解析.ipynb 1. 创建一个目录/data 解答: mkdi ...
- 【Linux题目】第九关
前言:项目整合 企业项目实战考试: 1. 全网备份解决方案实战 2. NFS集群后段共享存储搭建优化 3. 解决NFS单点实现实时数据同步. 环境: 服务器角色 外网ip 内网ip 主机名 web 1 ...
- 【linux题目】第二关
1.创建目录/data/oldboy,并且在该目录下创建文件oldboy.txt,然后在文件oldboy.txt里写入内容”inet addr:10.0.0.8 Bcast:10.0.0.255 Ma ...
- Linux 兴趣小组2016免试题 第四关揭秘
Linux 兴趣小组2016免试题 点这里 首先贴出第四关链接Linux 兴趣小组2016免试题 第四关 第四关: 进入网址我们看到的是4张扑克牌K,这是什么意思? 要我斗地主?好了,还是乖乖的先查看 ...
- 20145233 2016-2017 1 linux题目总结
20145233 2016-2017 1 linux题目总结 第一周考试知识汇总 判断:实验楼环境中所有的默认系统用户名和密码均为 shiyanlou.(x ). 填空:Linux Bash中,Ctr ...
- Linux设备管理(四)_从sysfs回到ktype
sysfs是一个基于ramfs的文件系统,在2.6内核开始引入,用来导出内核对象(kernel object)的数据.属性到用户空间.与同样用于查看内核数据的proc不同,sysfs只关心具有层次结构 ...
- linux安装IPython四种方法
IPython是Python的交互式Shell,提供了代码自动补完,自动缩进,高亮显示,执行Shell命令等非常有用的特性.特别是它的代码补完功能,例如:在输入zlib.之后按下Tab键,IPytho ...
- Python:黑板课爬虫闯关第四关
第四关地址:http://www.heibanke.com/lesson/crawler_ex03/ 一开始看到的时候有点蒙,不知道啥意思,说密码需要找出来但也没说怎么找啊. 别急,随便输了个昵称和密 ...
- SQL注入之Sqli-labs系列第四十一关(基于堆叠注入的盲注)和四十二关四十三关四十四关四十五关
0x1普通测试方式 (1)输入and1=1和and1=2测试,返回错误,证明存在注入 (2)union select联合查询 (3)查询表名 (4)其他 payload: ,( ,( 0x2 堆叠注入 ...
- SQL注入之Sqli-labs系列第三十四关(基于宽字符逃逸POST注入)和三十五关
开始挑战第三十四关和第三十五关(Bypass add addslashes) 0x1查看源码 本关是post型的注入漏洞,同样的也是将post过来的内容进行了 ' \ 的处理. if(isset($_ ...
随机推荐
- 从JDK源码学习Arraylist
从今天开始从源码去学习一些Java的常用数据结构,打好基础:) Arraylist源码阅读: jdk版本:1.8.0 首先看其构造方法: 构造方法一: 第一种支持初始化容量大小,其中声明一个对象数组, ...
- JVM基础结构与字节码执行引擎
JVM基础结构 JVM内部结构如下:栈.堆. 栈 JVM中的栈主要是指线程里面的栈,里面有方法栈.native方法栈.PC寄存器等等:每个方法栈是由栈帧组成的:每个栈帧是由局部变量表.操作数栈等组成. ...
- (CSS):last-child与:last-of-type区别
<!DOCTYPE html><html><head> <meta charset="utf-8"> <title>la ...
- PTA数据结构与算法题目集(中文) 7-4
PTA数据结构与算法题目集(中文) 7-4 是否同一颗二叉搜索树 给定一个插入序列就可以唯一确定一棵二叉搜索树.然而,一棵给定的二叉搜索树却可以由多种不同的插入序列得到.例如分别按照序列{2, 1, ...
- PHP常用设计模式,PHP常用设计模式详解,PHP详解设计模式,PHP设计模式
PHP常用设计模式详解 单例模式: php交流群:159789818 特性:单例类只能有一个实例 类内__construct构造函数私有化,防止new实例 类内__clone私有化,防止复制对象 设置 ...
- php数据库应用程序建议
一.保持独立的读写连接 开始就创建两个数据库连接是一个好的方法,一个用于读取,一个用于写入,并且允许不同的数据库服务器连接他们.如果只有一个服务器,则将它们设置彼此相同. 当操作为INSERT, UP ...
- docker开机自动启动
方法一: chkconfig docker on 方法二: 1.1是用systemctl: systemctl enable docker 1.2将Docker的docker.service服务移动到 ...
- MySQL入门,第八部分,多表查询(一)
一.数据库脚本 #-------------------------------------------------------------------------------- #--------- ...
- 搭建环境-git常见使用总结
Descripton:git 一.Git安装和本地用户全局配置 官网下载并且安装 查看是否安装成功win + R输入git,出现git命令指南,则安装成功 全局配置本地用户,在git Bash中进行下 ...
- 数据结构和算法(Golang实现)(2)简单入门Golang-包、变量和函数
包.变量和函数 一.举个例子 现在我们来建立一个完整的程序main.go: // Golang程序入口的包名必须为 main package main // import "golang&q ...