一、 awk的命令格式:

awk命令是由模式和操作组成的(两者是可选的):

pattern {action} 如awk $1~/(\.jpg|\.gif)$/' access.log,或awk 'length($1) < 10' click.log。

如果没有模式,则action应用到全部记录,如果没有action,则输出匹配模式的全部记录。

默认情况下,每一个输入行都是一条记录,但我们可以通过RS变量指定不同的行分隔符进行一行的定义。

1.1 模式,可以是正则表达式,也可以是关系表达式,在表达式前面用~和~!分别表示匹配和不匹配后面的模式

BEGIN:指定在第一条记录被处理之前所进行的工作
END:指定在最后一条记录被处理之后所进行的工作

1.2 操作,由一个或多个命令、函数、表达式组成,操作需要用大括号{}包含,这里面就是对文本要进行处理的逻辑

二、awk的环境变量(常用):

$0 完整的一行记录
$n 当前记录的第n个字段
ARGV 命令行参数数组
FS 字段分隔符,默认是空格或tab,可以自己指定
NR 当前记录数
NF 当前记录的字段数
RS 一行记录的分隔符,默认是换行符

三、文本处理常用命令:

1、使用awk分析日志,列举不重复的ip个数。

cat log | awk -F ' ' '{print $2}' | sort -u |wc -l

2、使用awk分析日志,列举不重复的ip,导出到文件。

cat log | awk -F ' ' '{print $2}' | sort -u >/usr/iplist.txt

3、使用awk分析日志,列举不重复的ip,并数出每个ip访问的次数,根据访问次数做倒序,导出至文本文件。

cat log | awk -F ' ' '{a[$2]++}END{for (i in a) print i" " a[i]}' | sort -k2nr -g >dest.txt

四、参考

1、http://man.lupaworld.com/content/manage/ringkee/awk.htm
2、http://www.blogjava.net/henry14/archive/2012/01/15/368560.html
3、http://www.cnblogs.com/repository/archive/2011/05/13/2045927.html

Nginx的日志默认是一直增长的,为了避免日志一直增长下去,同时为了便于进行日志分析,需要对日志进行定时切分,您可以根据自己网站的情况制定定时任务。

这方面的资料网上有很多了,这里我参考Nginx大仙张宴的案例,自己做了测试,这里记录一下,便于查阅。

ee /usr/local/www/nginx/sbin/cut_nginx_log.sh 写入

#!/bin/bash 
#This script will run at 0:00 everyday; 
 
# log path 
logs_path="/var/log/nginx/" 
mkdir -p ${logs_path}$(date -v -1d +"%Y")$(date -v -1d +"%m")/ 
mv ${logs_path}nginx-access.log ${logs_path}$(date -v -1d +"%Y")$(date -v -1d +"%m")/nginx-access_$(date -v -1d +"%Y%m%d").log 
mv ${logs_path}nginx-error.log ${logs_path}$(date -v -1d +"%Y")$(date -v -1d +"%m")/nginx-error_$(date -v -1d +"%Y%m%d").log 
 
kill -USR1 `cat /var/log/nginx/nginx.pid` 

意思是,每月创建一个文件夹,类似201205,再其中,每天创建一个文件,类似nginx-access_20120512.log,然后平滑重启nginx;

我用的是FreeBSD,因此日期的格式和linux有所不同,Linux下日期的格式如下:

$(date -d "yesterday" +"%Y")/${date -d "yesterday"+"%m")/ 

最后建立自动任务:

crontab -e

添加:

00 00 * * * /bin/sh /usr/local/www/nginx/sbin/cut_nginx_log.sh 

退出。

服务器被挂马,有一些可以被清除,有一个木马被命名为com6.asp,无法被简单删除,网上baidu了一下,只能通过命令行的方式才能删掉,试了半天还是不可以,最后发现木马文件还被设置成为了 RSH 属性,因此要删除该文件首先需要更改其属性。

通过两行命令可以删除这个文件:

attrib \\.\D:\mzd_wyzxsx_com_com\com6.asp -r -s -h  /*去掉文件的的三种属性*/
del \\.\D:\mzd_wyzxsx_com\com6.asp -r -s -h   /*删除该文件*/

相关知识1:

利用系统保留文件名创建无法删除的webshell

Windows 下不能够以下面这些字样来命名文件/文件夹:

aux|prn|con|nul|com1|com2|com3|com4|com5|com6|com7|com8|com9|lpt1|lpt2|lpt3|lpt4|lpt5|lpt6|lpt7|lpt8|lpt9

但是通过cmd的copy命令即可实现:

D:\wwwroot>copy rootkit.asp \\.\D:\wwwroot\lpt6.80sec.asp    前面必须有 \\.\

这类文件无法在图形界面删除,只能在命令行下删除:

D:\wwwroot>del \\.\D:\wwwroot\lpt6.80sec.asp

相关知识2:

WINDOWS系统属性符号说明

文件夹的属性有:无,H,HS,HSA,R,RA,RH,RHA。

文件的属性有:A,RA,RSA,RHSA。

其中:H(Hide)-隐藏、S(System)-系统、R(Read only)-只读、A(Archive)-存档。

具体修改可以从下面的知识了解:

要更改文件的属性,可以用DOS下的命令,比如,在G盘下新建立一个O.TXT文件,进入DOS界面进入G盘根目录下,使用命令attrib +a +s +h o.txt,那么文件o.txt就具备了HSA的属性,使用命令>attrib -a -s -h o.txt,那么文件o.txt就消除了HSA的属性。