天晴如许

在网站数据采集和网站分析行业,让数据采集标准化和自动化;由海量日志基于hadoop分析到实时分析;提供Web Analytics工具发挥数据运营威力。

导航

linux下私房工具箱

[文件、目录查看类]

在当前目录下按照文件大小倒排序,显示百分比,并以K,M,G为单位,提高信息的可读性:

du -sb ./*                                                  \
| sort -nr                                                  \
| gawk '                                                    \
BEGIN                                                       \
{                                                           \
    "du -sb ." | getline;                                   \
    total=$1;                                               \
    printf "\nTOTAL: %8s\n",kmg(total)                      \
}                                                           \
function kmg(innum)                                         \
{                                                           \
    if(innum/1024/1024/1024>1)                              \
    {                                                       \
        field=innum/1024/1024/1024"G"                       \
    }                                                       \
    else if(innum/1024/1024>1)                              \
    {                                                       \
        field=innum/1024/1024"M"                            \
    }                                                       \
    else if(innum/1024>1)                                   \
    {                                                       \
        field=innum/1024"K"                                 \
    }                                                       \
    else                                                    \
    {                                                       \
        field=innum                                         \
    }                                                       \
    return field                                            \
}                                                           \
{                                                           \
    printf "%-2.2f%%\t%8s\t%s\n", $1/total*100, kmg($1), $2 \
}'

该命令难以在日常中使用,改为以下命令行:

du -sb ./* | sort -nrk1 | cut -f2 | xargs du -sh

使用awk进行文件统计:
    1、统计日志中IP的条数

awk '{a[$1] += 1};END{for(ip in a){print a[ip],ip}}' 2010-06-09.txt

    2、查找500条符合条件的记录

awk '{if($1 ~ /172\.22\.3\.35/){num +=1; print}; if(num > 200){exit}}' 2010-06-09.txt;

    3、根据URL ?前的字符串进行倒排序

awk '{gsub("\?.*","",$8); a[$8] += 1}; END{for(url in a){print a[url], url}}' /home/admin/alibaba_web_logs/syslog-ng/china/2010-06-11/2010-06-11.txt | sort –nr

 

统计目录下指定文件或文件夹的大小汇总:

du -ch a*|grep total

 

创建文件,指定文件时间:

touch -d "May 24 3:51 pm" test/a/May24.txt 

 

ldd和file命令:
    1、首先ldd不是一个可执行程序,而只是一个shell脚本 2、ldd能够显示可执行模块的dependency
    file识别各种不同的文件类型

  

设置符号链接(软链接):

ln -s /disk2/history_cookielog/history_asc history_asc

 

查看每小时从收集机器下载到本地的各个文件大小:

du -sh /data/work/EnLog/BeaconLog/20101011/*

  

查看目录信息:

du -sk ./* | sort -n
du -sh ./*

 

[文件查找、比对类]

多行替换:
    1、在UE下,查找:(.*)\p ,替换为:alias \1='ssh \1'\p
    2、在linux下使用:

sed "s/\(.*\)/alias \1='ssh \1'/" test_file

 

diff文件比对结果输出:

diff -y -W 130 --suppress-common-line ./OfferDetail.2010.08.23.txt ./cx300/OfferDetail.2010.08.23.txt | head -n 10

    -y表示并列输出
    -W指定在并列输出时候的列宽
    --suppress-common-lines 只输出不同的内容

 

查找最大的文件:

 

find ./ -size +800000000c -print | grep bz2 | xargs ls -alh | sort +4

    或者:

du -ah * | grep bz2 | sort -nr | head


查找文件时,如何过滤没有权限等异常信息的输出:

find / -name iplib.pm 2>/dev/null


用以下命令:

find . -name '1^cookie_log.jp_search*.bz2'

找到了一堆文件,现在想将这些找到的文件打包,用tar -cvf,怎么写?

find . -name '1^cookie_log.jp_search*.bz2' | xargs tar cvf ....

    试试看,或者:

find . -name '1^cookie_log.jp_search*.bz2' -exec tar -rvf all_search.tar {} \;

    对于find命令 -exec 和 -ok 一样,只是 -ok 需要一一确认


查找目录A下不包含目录B的所有文件,删除创建时间在2天前的文件:

find ./A -path "./A/B" -prune -o -type f -mtime +2 -ok rm {} \;

 

grep多个或条件:

ls | grep -E "a|b"  或者  grep 'usrquota\|grpquota' /etc/fstab

 

grep使用逆向查找,将日志中所有的URL找出:

grep -v '/collector.alibaba.com/reg1point.html' cookie_log.04.01 | grep -v '/collector.alibaba.com/reg2point.html' | grep -v '/collector.alibaba.com/reg2snap.html' | grep -v '/collector.alibaba.com/reg1field.html' | grep -v '/collector.alibaba.com/reg2field.html' | grep -v '/collector.alibaba.com/'m/''

 

对文件内容按照指定字段进行排序:

文件每行内容举例:

114.237.243.132 - - [01/Dec/2010:03:48:09 +0800] "GET /mail.lygtaida.com.cn/login.htm HTTP/1.1" 200 200 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)" 114.237.243.228.1289387932345.8 0 "a=-|cna=3eJSBXnXMxoCAZny7XKCSJ6p; b=-; c=aid=-|pageid=72edf3846e4bc22512911291146493093339253523|lf-pageid=72edf3846e4bc22512911291146493093339253523|lf-pid=20" -   

sort -k4,4 result


[系统性能监控、命令跟踪类]

系统状态查看:
    memory:free -m
    disk:  df -h
    load:  uptime、w
    其他:  top -n 1 | col -b > top.txt

 

更详细进程信息:
    ps uaxf

 

如何查看进程的所有线程数?
    ps -eL | grep IOT –c

 

性能分析工具有:
    sar、iostat、vmstat

 

查看linux下命令的执行过程,使用strace命令:
    删除软连接:strace rm:    strace unlik:
    删除硬链接:strace rm:    strace unlik:

 

如何修改hostname:
    1、vi /etc/sysconfig/network,修改HOSTNAME
    2、vi /etc/hosts              修改:127.0.0.1 以及本机IP对应的hostname
    上面两步执行之后重启机器才能生效
    3、hostname newname 重新login就ok了
    hostname命令是临时修改hostname,重启后会以上面两个配置文件的来设置

 

添加用户

groupadd dw
useradd -c "log user" -d /home/adli -G dw -p dw -s /bin/bash adli
useradd -c "analoyzer test log user" -d /home/logtest -G alilog -p logtest -s /bin/bash logtest
userdel adli

 

后台运行shell脚本中的命令:

nohup sh ./run_search_click.sh >/tmp/run_search_click.log 2>&1 &

 

[远程传输、控制类]

如何进行批量传输?

wget -t 10 -c -T 60 -i downloadfile.txt

 

远程copy:

scp admin@cx300-admin:/home/admin/alibaba_web_logs/otherlogs/offer_detail.log/OfferDetail.2010.08.23.* .

 

查找内部生产环境访问公网时的IP:

wget http://www.ip168.com/;iconv -f utf8 -t gbk index.html | grep '您的IP地址';rm index.html

 

[压缩、解压类]

解压tar包:

tar -zxvf ybc.dmp.tar.gz


压缩tar包:

tar -zcvf ybcout.dmp.tar.gz ybcout.dmp

posted on 2010-11-14 22:27  天晴如许  阅读(680)  评论(0编辑  收藏  举报