linux下私房工具箱

来源:互联网 发布:淘宝店装修外包 编辑:程序博客网 时间:2024/04/28 01:40

[文件、目录查看类]

在当前目录下按照文件大小倒排序,显示百分比,并以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 -ndu -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/''

 


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

系统状态查看:
    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 dwuseradd -c "log user" -d /home/adli -G dw -p dw -s /bin/bash adliuseradd -c "analoyzer test log user" -d /home/logtest -G alilog -p logtest -s /bin/bash logtestuserdel 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.* .

 

[压缩、解压类]

解压tar包:

tar -zxvf ybc.dmp.tar.gz


压缩tar包:

tar -zcvf ybcout.dmp.tar.gz ybcout.dmp
原创粉丝点击