Linux 相关学习内容(不定期更新) (4)

它依次处理文件的每一行,并读取里面的每一个字段。对于日志、CSV 那样的每行格式相同的文本文件,awk可能是最方便的工具, awk其实不仅仅是工具软件,还是一种编程语言

# 格式 $ awk 动作 文件名 # 示例 $ awk '{print $0}' demo.txt

demo.txt是awk所要处理的文本文件。前面单引号内部有一个大括号,里面就是每一行的处理动作print $0。其中,print是打印命令,$0代表当前行,因此上面命令的执行结果,就是把每一行原样打印出来

变量

$ + 数字表示某个字段

变量NF表示当前行有多少个字段,因此$NF就代表最后一个字段。

$ echo 'this is a test' | awk '{print $NF}' test

变量NR表示当前处理的是第几行。

$ awk -F ':' '{print NR ") " $1}' demo.txt 1) root 2) daemon 3) bin 4) sys 5) sync

条件

$ awk '条件 动作' 文件名 $ awk -F ':' '/usr/ {print $1}' demo.txt root daemon bin sys

print命令前面是一个正则表达式,只输出包含usr的行

# 输出奇数行 $ awk -F ':' 'NR % 2 == 1 {print $1}' demo.txt root bin sync

输出第一个字段的第一个字符大于m的行,否则输出‘---’

$ awk -F ':' '{if ($1 > "m") print $1; else print "---"}' demo.txt root --- --- sys sync

查看特定IP的日志

cat ip.log | awk -F '\t' '($1~/112.15.5.36/){print $0}'

查看访问量前10的IP

awk '{print &1}' 17.log | sort | uniq -c | sort -nr | head -n 10

awk 命令教程

sort 命令

[linux下使用awk命令按时间段筛选日志](https://segmentfault.com/a/1190000011626977)

参考awk 常用命令

linux中的awk命令详解

sed命令

sed行文件编辑命令,编辑文件以行为单位

sed [参数] '[动作]<匹配条件>' [文件名]

-i 标识对文件进行行编辑

a\ 在匹配到的内容下一行增加内容 sed -i 3a\nihao hello world test.txt

i\ 在匹配到的内容上一行增加内容

d 删除匹配到的内容

s 替换匹配到的内容

上面的动作只有在加上参数-i的时候才会生效

命令格式:

sed -i '行号s#原内容#替换后的内容#列号' # 只替换第一个匹配到的项,替换所有内容在尾部加g

sed -n '5,10p' mywork.log 查看5行到10行的日志。

日志分析查看——grep,sed,sort,awk运用

网络相关

使用iptables 写一条规则:把来源IP为192.168.1.101访问本机80端口的包直接拒绝

iptables -I INPUT -s 192.168.1.101 -p tcp --dport 80 -j REJECT

要想把iptable的规则保存到一个文件中如何做?如何恢复?

iptables-save > 1.ipt

使用iptables-restore反重定向回来:

iptables-restore < 1.ipt

rsync 同步命令中,下面两种方式有什么不同呢?

(1) rsync -av /dira/ ip:/dirb/ #通过ssh方式同步 (2) rsync -av /dira/ ip::dirb #通过rsync服务的方式同步

rsync 同步时,如果要同步的源中有软连接,如何把软连接的目标文件或者目录同步?

答:同步源文件需要加-L选项

rsync 同步数据时,如何过滤出所有.txt的文件不同步?

答:加上--exclude选项:

--exclude=“*.txt”

rsync同步数据时,如果目标文件比源文件还新,则忽略该文件,如何做?

答:保留更新使用-u或者--update选项

使用rsync同步数据时,假如我们采用的是ssh方式,并且目标机器的sshd端口并不是默认的22端口,那我们如何做?

rsync "--rsh=ssh -p 10022"或者rsync -e "ssh -p 10022"

rsync同步时,如何删除目标数据多出来的数据,即源上不存在,但目标却存在的文件或者目录?

答:加上--delete选项

有一天你突然发现公司网站访问速度变的很慢很慢,你该怎么办呢?

(服务器可以登陆,提示:你可以从系统负载和网卡流量入手)

答:可以从两个方面入手分析:分析系统负载,使用w命令或者uptime命令查看系统负载,如果负载很高,则使用top命令查看CPU,MEM等占用情况,要么是CPU繁忙,要么是内存不够,如果这二者都正常,再去使用sar命令分析网卡流量,分析是不是遭到了攻击。一旦分析出问题的原因,采取对应的措施解决,如决定要不要杀死一些进程,或者禁止一些访问等。

在Linux下如何指定dns服务器,来解析某个域名?

# 使用dig命令:dig @DNSip dig @8.8.8.8 #使用谷歌DNS解析百度

tcpdump抓包工具

$ tcpdump -i eth0 -nn -s0 -v port 80 -w test.pcap

-i : 选择要捕获的接口,通常是以太网卡或无线网卡,也可以是 vlan 或其他特殊接口。如果该系统上只有一个网络接口,则无需指定。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zyxdyg.html