Linux 测试

1、找出/proc/meminfo文件中以s开头的行,至少用三种方式忽略大小写

[root@localhost proc]# grep -i '^s' /proc/meminfo

[root@localhost proc]# sed -n -e '/^S/p' -e '/^s/p' /proc/meminfo

[root@localhost proc]# awk '/^[Ss]/{print $0}' /proc/meminfo

[root@localhost ~]# sed -nr '/^[sS]/p' /etc/passwd

2、显示当前系统上的root,centos或者user的信息


疑惑:[root@localhost init.d]# grep -Erl '(root|centos|user)' / grep -rE '^(root|centos|user)' /etc

3、找出/etc/init.d/functions文件下包含小括号的行

[root@localhost init.d]# awk '/\(\)/{print $0}' /etc/init.d/functions

grep -E '\(|\)' /etc/init.d/functions

4、输出指定目录的基名

[root@localhost etc]# find /etc -type f | head -10 | awk -F/ '{print $NF}'

pwd | awk -F/ '{print $NF}'

5、找出网卡信息中包含的数字

[root@localhost init.d]# ip a | grep '[0-9]'

[root@localhost ~]# ip a | egrep '[0-9]+'

6、找出/etc/passwd下每种解析器的用户个数

[root@localhost init.d]# awk -F: '{print $NF}' /etc/passwd | sort | uniq -c
1 /bin/bash
1 /bin/sync
1 /sbin/halt
16 /sbin/nologin
1 /sbin/shutdown 数组 :
{"bash": 10, "sh": 9, "zsh": 1} [root@localhost ~]# awk -F: '{arr[$NF]++}END{for(i in arr){printf"%-15s | %-6d\n",i, arr[i]}}' /etc/passwd

7、过滤网卡中的ip,用三种方式实现

[root@localhost ~]# ip a | grep -oE '([0-9]{1,3}\.){3}[0-9]{1,3}'

[root@localhost ~]# ip a | sed -nr '/([0-9]{1,3}\.){1,3}[0-9]{1,3}/p'

8、搜索/etc目录下,所有的.html或.php文件中main函数出现的次数

[root@localhost ~]# grep -oE 'main' `find /etc -name '*.html'` | wc -l

9、过滤php.ini中注释的行和空行

[root@localhost ~]# find / -name 'php.*'
/usr/share/augeas/lenses/dist/php.aug
/usr/share/vim/vim74/compiler/php.vim
/usr/share/vim/vim74/ftplugin/php.vim
/usr/share/vim/vim74/indent/php.vim
/usr/share/vim/vim74/syntax/php.vim
/usr/share/swig/2.0.10/php/php.swg # 无 php.ini # 注释:
[root@localhost tmp]# cat 1.txt
heihei
eat tanyuan
wowowo
wowowowo
# pengyuyan # huge
# wujing
# liyifeng
# huangshiping
# wangloufu
# linchuxian [root@localhost tmp]# grep -vE '^#\ +|^$' 1.txt
heihei
eat tanyuan
wowowo
wowowowo

10、找出文件中至少有一个空格的行

[root@localhost tmp]# sed -nr '/\ +/p' 1.txt
eat tanyuan
# peng yuyan
# huge
# wu jing
# li yifeng
# huang shi ping
# wang loufu
# lin chuxian

11、过滤文件中以#开头的行,后面至少有一个空格

[root@localhost tmp]# grep -E '^#\ +' 1.txt
# peng yuyan
# huge
# wu jing
# li yifeng
# huang shi ping
# wang loufu
# lin chuxian

12、查询出/etc目录中包含多少个root

[root@localhost tmp]# find /etc -name '*root*' | grep -o 'root' | wc -l
3

13、查询出所有的qq邮箱

[a-zA-Z0-9-_]+@[a-z0-9]+\.(com|cn|com\.cn|net)

14、查询系统日志中所有的error

[root@localhost tmp]# grep -r 'error' /var

15、删除某文件中以s开头的行的最后一个词

[root@localhost ~]# egrep '^s' /etc/passwd|sed -r 's/[0-9a-zA-Z]+$//g'

16、删除一个文件中的所有数字

[root@localhost tmp]# sed '/[0-9]/d' 1.txt

17、显示奇数行

[root@localhost tmp]# awk 'NR%2==1{print NR,$0}' /etc/passwd
1 root:x:0:0:root:/root:/bin/bash
3 daemon:x:2:2:daemon:/sbin:/sbin/nologin
5 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
7 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown

18、删除passwd文件中以bin开头的行到nobody开头的行

[root@localhost tmp]# sed '/^bin/,/^nobody/d' /etc/passwd

19、从指定行开始,每隔两行显示一次

awk -F: '{if(NR>3){num=(NR-3)%2; if(num){print $0}}}' /etc/passwd

20、每隔5行打印一个空格

[root@localhost tmp]# awk '{if(NR%5==0){print " "}print $0}' /etc/passwd

21、不显示指定字符的行

[root@localhost tmp]# grep -v 'lou' 1.txt

22、将文件中1到5行中aaa替换成AAA

[root@localhost tmp]# awk 'NR < 6{print $0}' forgive | sed 's/aaa/AAA/g'
wo
songAAA
AAA
sing
dfAAA

23、显示用户id为奇数的行

[root@localhost tmp]# awk -F: '$3 % 2 == 1{print $0}' /etc/passwd
bin:x:1:1:bin:/bin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
halt:x:7:0:halt:/sbin:/sbin/halt

24、显示系统普通用户,并打印系统用户名和id

[root@localhost home]# awk -F: '$3 >= 1000{print $1, $3}' /etc/passwd
elijah 1000
user01 1001
user02 1002

25、统计nginx日志中访问量(ip唯独计算)

[root@localhost ~]# grep -Ec '([0-9]{1,3}\.){3}[0-9]{1,3}' /var/log/nginx/access.log

26、实时打印nginx的访问ip

[root@localhost ~]# tail -f /var/log/nginx/access.log |awk '{print $1}'
[root@localhost ~]# tail -f /var/log/nginx/access.log | grep -oE '([0-9]{1,3}\.){3}[0-9]{1,3}'

27、统计php.ini中每个词的个数

	[root@localhost ~]# grep -Eow '[0-9a-zA-Z]+' /etc/php.ini | awk '{words[$1]++}END{for (i in words){print i,words[i]}}'

28、统计1分钟内访问nginx次数超过10次的ip

#!/bin/bash
NGINX_LOG=/var/log/nginx/access.log
TIME=`date +%s`
DATE=`echo $TIME - 3600 | bc`
declare -A IP
while read line
do
timestamp=`echo $line | grep -oE '[0-9]{4}.*T[0-9]{2}:[0-9]{2}:[0-9]{2}'`
timestamp=`date -d "$timestamp" +%s`
if (( $TIME >= $timestamp && $DATE <= $timestamp ));then
ip=`echo $line| grep -oE '([0-9]{1,3}\.){3}[0-9]{1,3}'`
number=`echo ${IP["$ip"]} | wc -L`
[ $number -eq 0 ] && IP["$ip"]=0
num=${IP["$ip"]}
IP["$ip"]=`echo "$num + 1" | bc`
fi
done < $NGINX_LOG
for i in ${!IP[*]}
do
if (( ${IP[$i]} >= 10 ));then
echo $i
fi
done

29、找出nginx访问的峰值,按每个小时计算

#!/bin/bash

NGINX_LOG=/var/log/nginx/access.log

declare -A IP 

while read line
do
timestamp=`echo $line | grep -oE '[0-9]{4}.*T[0-9]{2}:[0-9]{2}:[0-9]{2}'`
timestamp=`date -d "$timestamp" +%Y%m%d%H` number=`echo ${IP["$timestamp"]} | wc -L`
[ $number -eq 0 ] && IP["$timestamp"]=0
num=${IP["$timestamp"]}
IP["$timestamp"]=`echo "$num + 1" | bc`
done < $NGINX_LOG for i in ${!IP[*]}
do
if (( ${IP[$i]} >= 10 ));then
echo "$i ${IP[$i]}"
fi
done

30、统计访问nginx前10的ip

grep -oE '([0-9]{1,3}\.){3}[0-9]{1,3}' /var/log/nginx/access.log | sort | uniq -c | sort -r | head 

Linux 基础练习题的更多相关文章

  1. Linux基础练习题(二)

    Linux基础练习题(二) 1.复制/etc/skel目录为/home/tuer1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限. [root@www ~]# cp -r ...

  2. Linux基础练习题之(四)

    Linux基础练习题 请详细总结vim编辑器的使用并完成以下练习题 1.复制/etc/rc.d/rc.sysinit文件至/tmp目录,将/tmp/rc.sysinit文件中的以至少一个空白字符开头的 ...

  3. linux基础练习题(2)

    Linux命令作业(关卡二) 练习题1 理解操作系统的作用,以及各种操作系统的不同 要求: 为什么要有OS?没有OS能行吗?原因是什么? Linux内核指的是什么? Linux主要应用在哪些地方? 使 ...

  4. linux基础练习题(1)

    Linux命令作业(关卡一) 练习题1 理解操作系统的作用,以及各种操作系统的不同 要求: 简述什么是OS 简述应用程序.硬件.OS的关系 列举出3种常见的操作系统 简述Ubuntu和Linux的关系 ...

  5. Linux基础练习题

    1.列出当前系统上所有已经登录的用户名,注意:同一个用户登录多次,则只显示一次即可. [root@bj-1-160-enzhi ~]# who|cut -d ' ' -f 1|uniq -c 2 ro ...

  6. linux基础练习题(3)

    关卡三 练习题 在家路径下创建A文件夹 在上一步创建的A文件夹中,创建B/C/D文件夹 在上一步所在的路径中,创建C/E/F文件夹 使用目录树查看文件夹结构 A/B/C中创建一个hello.py文件 ...

  7. Linux基础练习题(五)

    1.创建一个10G分区,并格式为ext4文件系统: (1) 要求其block大小为2048, 预留空间百分比为2, 卷标为MYDATA, 默认挂载属性包含acl: [root@bj-1-142 ~]# ...

  8. Linux基础练习题(三)

    1.显示当前系统上root.fedora或user1用户的默认shell: [root@www ~]# egrep "^(root|fedora|user1)" /etc/pass ...

  9. 2、Linux基础练习题

    题目 答案 1.答案 [root@centos7 ~]# date +'%F %T' 2019-07-23 10:21:35 2.答案 [root@centos7 ~]# date +%A -d '- ...

随机推荐

  1. ElasticSearch的应用

    一.介绍 全文检索技术: 分布式: Restful风格: 近实时搜索 二.部署 下载:https://thans.cn/mirror/elasticsearch.html 新建用户,并登录: 解压: ...

  2. JMM模型基础知识笔记

    概述 内存模型可以理解为在特定的操作协议下,对特定的内存或者高速缓存进行读写访问的过程抽象,不同架构下的物理机拥有不一样的内存模型,Java虚拟机也有自己的内存模型,即Java内存模型(JavaMem ...

  3. 《剑指offer》面试题51. 数组中的逆序对

    问题描述 在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对.输入一个数组,求出这个数组中的逆序对的总数. 示例 1: 输入: [7,5,6,4] 输出: 5   限制: ...

  4. [Eclipse插件] 编辑插件IndentGuide

    IndentGuide插件 将可配置的缩进指导线添加到Eclipse文本编辑器 如下图

  5. spring 事务失效的几种场景

    以下场景是基于mysql数据库,InnoDB的存储引擎. 一.没有添加@Transactional注解 二.方法声明是private或者static 三.没有抛出异常而是try catch了异常 下面 ...

  6. 与Elasticsearch交互的客户端

    1.访问ES的方式 访问es的方式有两种,一种是http方式,还有一种是java客户端方式. 其中Java客户端又分为:1.1.Node client: 节点客户端实际上是一个集群中的节点(但不保存数 ...

  7. QT控件之QSlider

    singleStep:比如按下键盘的左右建,每次移动的距离 pageStep:比如用鼠标对准滑动条的前面按下,每次移动的距离 value:初始默认值 接下来看该控件拥有的信号: 重点看后面的四个,看字 ...

  8. .Net Core中自定义认证实现

    一.起因 最近项目中需要对项目同时支持JWT认证,以及自定义的认证校验方式认证.通过对官方文档了解,得到认证实现主要通过继承IAuthenticationHandler 或 Authenticatio ...

  9. 进程(守护进程--互斥锁--IPC机制--生产者模型--僵尸进程与孤儿进程--模拟抢票--消息队列)

    目录 一:进程理论知识 1.理论知识 二:什么是进程? 三:僵尸进程与孤儿进程 1.僵尸进程 四:守护进程 1.什么是守护进程? 2.主进程创建守护进程 3.守护进程 五:互斥锁(模拟多人抢票) 1. ...

  10. Spring系列7:`autowire`自动装配怎么玩

    回顾 前几篇我们介绍各种依赖依赖注入,都是显式指定的,配置明确但同时也有些繁杂和重复."很多发明的出发点,都是为了偷懒,懒人是推动社会进步的原动力".Spring 提供了自动注入依 ...